From e0a9c4f8c91c28ef3ae92252c439a7760040e98e Mon Sep 17 00:00:00 2001 From: jdg Date: Fri, 3 Sep 2021 17:50:32 +0200 Subject: [PATCH] First commit 09/04/1995 --- 640X400.ASM | 72 +++ 640X480.ASM | 72 +++ 640X480.LIB | Bin 0 -> 1024 bytes CD_CFG.CPP | 312 +++++++++++ CD_EDIT.CPP | 838 ++++++++++++++++++++++++++++ CD_ERROR.H | 14 + CD_EXE.CPP | 407 ++++++++++++++ CD_FILE.CPP | 45 ++ CD_FILE.H | 60 ++ CD_GRAPH.CPP | 14 + CD_GRAPH.H | 1 + CD_ICONS.CPP | 428 ++++++++++++++ CD_ICONS.H | 16 + CD_IMG.CPP | 479 ++++++++++++++++ CD_IN/CD_CFG.CPP | 55 ++ CD_IN/CD_D01.DAT | Bin 0 -> 12737 bytes CD_IN/CD_D02.DAT | Bin 0 -> 3924 bytes CD_IN/CD_D03.DAT | Bin 0 -> 3924 bytes CD_IN/CD_D04.DAT | Bin 0 -> 13996 bytes CD_IN/CD_D05.DAT | Bin 0 -> 7701 bytes CD_IN/CD_D06.DAT | Bin 0 -> 1406 bytes CD_IN/CD_D07.DAT | Bin 0 -> 1406 bytes CD_IN/CD_D08.DAT | Bin 0 -> 1406 bytes CD_IN/CD_D09.DAT | Bin 0 -> 6442 bytes CD_IN/CD_D10.DAT | Bin 0 -> 1406 bytes CD_IN/CD_D11.DAT | Bin 0 -> 1406 bytes CD_IN/CD_D12.DAT | Bin 0 -> 7701 bytes CD_IN/CD_D13.DAT | Bin 0 -> 1406 bytes CD_IN/CD_D14.DAT | Bin 0 -> 6442 bytes CD_IN/CD_D15.DAT | Bin 0 -> 22809 bytes CD_IN/CD_EDIT.CPP | 1176 +++++++++++++++++++++++++++++++++++++++ CD_IN/CD_ERROR.H | 14 + CD_IN/CD_EXE.CPP | 191 +++++++ CD_IN/CD_FILE.H | 61 ++ CD_IN/CD_ICONS.CPP | 520 +++++++++++++++++ CD_IN/CD_ICONS.H | 16 + CD_IN/CD_IN.EXE | Bin 0 -> 111361 bytes CD_IN/CD_IN.IMG | 213 +++++++ CD_IN/CD_IN.PRJ | Bin 0 -> 6845 bytes CD_IN/CD_IN2.CPP | 305 ++++++++++ CD_IN/CD_IN2.IMG | Bin 0 -> 23530 bytes CD_IN/CD_PCX.CPP | 128 +++++ CD_IN/CD_RATON.CPP | 215 +++++++ CD_IN/CD_RATON.H | 8 + CD_IN/CD_STOCK.CPP | 883 +++++++++++++++++++++++++++++ CD_IN/CD_UTIL.CPP | 497 +++++++++++++++++ CD_IN/CD_W01.DAT | Bin 0 -> 1406 bytes CD_IN/CD_W02.DAT | Bin 0 -> 7701 bytes CD_IN/CD_W03.DAT | Bin 0 -> 5183 bytes CD_IN/CD_W04.DAT | Bin 0 -> 10219 bytes CD_IN/CD_W05.DAT | Bin 0 -> 11478 bytes CD_IN/CD_W06.DAT | Bin 0 -> 1406 bytes CD_IN/CD_W07.DAT | Bin 0 -> 1406 bytes CD_IN/CD_W08.DAT | Bin 0 -> 3924 bytes CD_IN/CD_W09.DAT | Bin 0 -> 6442 bytes CD_IN/CD_W10.DAT | Bin 0 -> 1406 bytes CD_IN/CD_W11.DAT | Bin 0 -> 1406 bytes CD_IN/CD_W12.DAT | Bin 0 -> 1406 bytes CD_IN/CD_W13.DAT | Bin 0 -> 30363 bytes CD_IN/CD_W14.DAT | Bin 0 -> 8960 bytes CD_IN/CD_W15.DAT | Bin 0 -> 1406 bytes CD_IN/LIST_COL.H | 5 + CD_IN/LITT.CHR | Bin 0 -> 5131 bytes CD_IN/MAKE_BOT.OBJ | Bin 0 -> 25993 bytes CD_IN/PRUEBA_B.CPP | 161 ++++++ CD_IN/P_RATON1.CPP | 294 ++++++++++ CD_IN/P_RATON2.CPP | 67 +++ CD_IN/P_RATON3.CPP | 67 +++ CD_IN/P_RATON4.CPP | 67 +++ CD_IN/R.BAT | 1 + CD_IN/SORT_CD.CPP | 1000 +++++++++++++++++++++++++++++++++ CD_IN/SUPERVGA.OBJ | Bin 0 -> 1801 bytes CD_INST.CPP | 559 +++++++++++++++++++ CD_OUT.CPP | 412 ++++++++++++++ CD_OUT.DSK | Bin 0 -> 3496 bytes CD_OUT.IMG | 375 +++++++++++++ CD_OUT.JD | 375 +++++++++++++ CD_OUT.PRJ | Bin 0 -> 10395 bytes CD_OUT2.IMG | Bin 0 -> 23530 bytes CD_PCX.CPP | 151 +++++ CD_RATON.CPP | 215 +++++++ CD_RATON.H | 8 + CD_SND.H | 27 + CD_SND/CD_SND.CPP | 328 +++++++++++ CD_SND/CD_SND.EXE | Bin 0 -> 22445 bytes CD_SND/CD_TEST.CPP | 82 +++ CD_SND/CD_TEST.EXE | Bin 0 -> 25007 bytes CD_SND/CD_TEST.PRJ | Bin 0 -> 5205 bytes CD_SND/WAV/CD_OUT00.WAV | Bin 0 -> 33600 bytes CD_SND/WAV/CD_OUT01.WAV | Bin 0 -> 1512 bytes CD_SND/WAV/CD_OUT02.WAV | Bin 0 -> 43220 bytes CD_SND/WAV/CD_OUT03.WAV | Bin 0 -> 990 bytes CD_SND/WAV/CD_OUT04.WAV | Bin 0 -> 5888 bytes CD_SND/WAV/CD_OUT07.WAV | Bin 0 -> 8476 bytes CD_SND/WAV/CD_OUT08.WAV | Bin 0 -> 9476 bytes CD_SND/WAV/CD_OUT09.WAV | Bin 0 -> 10036 bytes CD_SND/WAV/CD_OUT0A.WAV | Bin 0 -> 10036 bytes CD_SND/WAV/CD_OUT0B.WAV | Bin 0 -> 2566 bytes CD_SND/WAV/CD_OUT0C.WAV | Bin 0 -> 4694 bytes CD_SND/WAV/CD_OUT0D.WAV | Bin 0 -> 9454 bytes CD_SND/WAV/CD_OUT0E.WAV | Bin 0 -> 7876 bytes CD_SND/WAV/CD_OUT0F.WAV | Bin 0 -> 6924 bytes CD_SND/WAV/CD_OUT10.WAV | Bin 0 -> 18490 bytes CD_SND/WAV/CD_OUT11.WAV | Bin 0 -> 49652 bytes CD_SND/WAV/CD_OUTFF.WAV | Bin 0 -> 55570 bytes EMMC.CPP | 402 +++++++++++++ EMMC.H | 46 ++ LIST_COL.H | 5 + LITTF.OBJ | Bin 0 -> 5240 bytes PCX16C.CPP | 335 +++++++++++ R.BAT | 1 + SUPERVGA.ASM | 163 ++++++ SUPERVGA.CPP | 147 +++++ SUPERVGA.OBJ | Bin 0 -> 1801 bytes SVGA256F.OBJ | Bin 0 -> 5494 bytes X.BAT | 5 + XMSDEMO.CPP | 90 +++ XMSSUPP.CPP | 939 +++++++++++++++++++++++++++++++ XMSSUPP.H | 82 +++ XR.BAT | 6 + 120 files changed, 13455 insertions(+) create mode 100644 640X400.ASM create mode 100644 640X480.ASM create mode 100644 640X480.LIB create mode 100644 CD_CFG.CPP create mode 100644 CD_EDIT.CPP create mode 100644 CD_ERROR.H create mode 100644 CD_EXE.CPP create mode 100644 CD_FILE.CPP create mode 100644 CD_FILE.H create mode 100644 CD_GRAPH.CPP create mode 100644 CD_GRAPH.H create mode 100644 CD_ICONS.CPP create mode 100644 CD_ICONS.H create mode 100644 CD_IMG.CPP create mode 100644 CD_IN/CD_CFG.CPP create mode 100644 CD_IN/CD_D01.DAT create mode 100644 CD_IN/CD_D02.DAT create mode 100644 CD_IN/CD_D03.DAT create mode 100644 CD_IN/CD_D04.DAT create mode 100644 CD_IN/CD_D05.DAT create mode 100644 CD_IN/CD_D06.DAT create mode 100644 CD_IN/CD_D07.DAT create mode 100644 CD_IN/CD_D08.DAT create mode 100644 CD_IN/CD_D09.DAT create mode 100644 CD_IN/CD_D10.DAT create mode 100644 CD_IN/CD_D11.DAT create mode 100644 CD_IN/CD_D12.DAT create mode 100644 CD_IN/CD_D13.DAT create mode 100644 CD_IN/CD_D14.DAT create mode 100644 CD_IN/CD_D15.DAT create mode 100644 CD_IN/CD_EDIT.CPP create mode 100644 CD_IN/CD_ERROR.H create mode 100644 CD_IN/CD_EXE.CPP create mode 100644 CD_IN/CD_FILE.H create mode 100644 CD_IN/CD_ICONS.CPP create mode 100644 CD_IN/CD_ICONS.H create mode 100644 CD_IN/CD_IN.EXE create mode 100644 CD_IN/CD_IN.IMG create mode 100644 CD_IN/CD_IN.PRJ create mode 100644 CD_IN/CD_IN2.CPP create mode 100644 CD_IN/CD_IN2.IMG create mode 100644 CD_IN/CD_PCX.CPP create mode 100644 CD_IN/CD_RATON.CPP create mode 100644 CD_IN/CD_RATON.H create mode 100644 CD_IN/CD_STOCK.CPP create mode 100644 CD_IN/CD_UTIL.CPP create mode 100644 CD_IN/CD_W01.DAT create mode 100644 CD_IN/CD_W02.DAT create mode 100644 CD_IN/CD_W03.DAT create mode 100644 CD_IN/CD_W04.DAT create mode 100644 CD_IN/CD_W05.DAT create mode 100644 CD_IN/CD_W06.DAT create mode 100644 CD_IN/CD_W07.DAT create mode 100644 CD_IN/CD_W08.DAT create mode 100644 CD_IN/CD_W09.DAT create mode 100644 CD_IN/CD_W10.DAT create mode 100644 CD_IN/CD_W11.DAT create mode 100644 CD_IN/CD_W12.DAT create mode 100644 CD_IN/CD_W13.DAT create mode 100644 CD_IN/CD_W14.DAT create mode 100644 CD_IN/CD_W15.DAT create mode 100644 CD_IN/LIST_COL.H create mode 100644 CD_IN/LITT.CHR create mode 100644 CD_IN/MAKE_BOT.OBJ create mode 100644 CD_IN/PRUEBA_B.CPP create mode 100644 CD_IN/P_RATON1.CPP create mode 100644 CD_IN/P_RATON2.CPP create mode 100644 CD_IN/P_RATON3.CPP create mode 100644 CD_IN/P_RATON4.CPP create mode 100644 CD_IN/R.BAT create mode 100644 CD_IN/SORT_CD.CPP create mode 100644 CD_IN/SUPERVGA.OBJ create mode 100644 CD_INST.CPP create mode 100644 CD_OUT.CPP create mode 100644 CD_OUT.DSK create mode 100644 CD_OUT.IMG create mode 100644 CD_OUT.JD create mode 100644 CD_OUT.PRJ create mode 100644 CD_OUT2.IMG create mode 100644 CD_PCX.CPP create mode 100644 CD_RATON.CPP create mode 100644 CD_RATON.H create mode 100644 CD_SND.H create mode 100644 CD_SND/CD_SND.CPP create mode 100644 CD_SND/CD_SND.EXE create mode 100644 CD_SND/CD_TEST.CPP create mode 100644 CD_SND/CD_TEST.EXE create mode 100644 CD_SND/CD_TEST.PRJ create mode 100644 CD_SND/WAV/CD_OUT00.WAV create mode 100644 CD_SND/WAV/CD_OUT01.WAV create mode 100644 CD_SND/WAV/CD_OUT02.WAV create mode 100644 CD_SND/WAV/CD_OUT03.WAV create mode 100644 CD_SND/WAV/CD_OUT04.WAV create mode 100644 CD_SND/WAV/CD_OUT07.WAV create mode 100644 CD_SND/WAV/CD_OUT08.WAV create mode 100644 CD_SND/WAV/CD_OUT09.WAV create mode 100644 CD_SND/WAV/CD_OUT0A.WAV create mode 100644 CD_SND/WAV/CD_OUT0B.WAV create mode 100644 CD_SND/WAV/CD_OUT0C.WAV create mode 100644 CD_SND/WAV/CD_OUT0D.WAV create mode 100644 CD_SND/WAV/CD_OUT0E.WAV create mode 100644 CD_SND/WAV/CD_OUT0F.WAV create mode 100644 CD_SND/WAV/CD_OUT10.WAV create mode 100644 CD_SND/WAV/CD_OUT11.WAV create mode 100644 CD_SND/WAV/CD_OUTFF.WAV create mode 100644 EMMC.CPP create mode 100644 EMMC.H create mode 100644 LIST_COL.H create mode 100644 LITTF.OBJ create mode 100644 PCX16C.CPP create mode 100644 R.BAT create mode 100644 SUPERVGA.ASM create mode 100644 SUPERVGA.CPP create mode 100644 SUPERVGA.OBJ create mode 100644 SVGA256F.OBJ create mode 100644 X.BAT create mode 100644 XMSDEMO.CPP create mode 100644 XMSSUPP.CPP create mode 100644 XMSSUPP.H create mode 100644 XR.BAT diff --git a/640X400.ASM b/640X400.ASM new file mode 100644 index 0000000..5326af1 --- /dev/null +++ b/640X400.ASM @@ -0,0 +1,72 @@ + +_TEXT SEGMENT BYTE PUBLIC 'CODE' + + ASSUME CS:_TEXT + + PUBLIC _VUELCA_PANTALLA + + +_VUELCA_PANTALLA PROC NEAR + PUSH BP + MOV BP,SP + PUSH AX + PUSH BX + PUSH CX + PUSH DI + PUSH DS + PUSH DX + PUSH ES + PUSH SI + + LDS SI,[BP+4] + MOV AX,0A000h + MOV ES,AX + MOV DI,0 + + MOV AH,00010001b + MOV DX, 400 + CLD + +SIG_LINEA: MOV BX,4 + +SON_4_PLANOS: PUSH AX + PUSH DX + MOV DX,3C4H ;MASCARA DE PLANOS + MOV AL,2 + OUT DX,AX + POP DX + POP AX + + MOV CX,80 +LINEA: MOV AL,ES:[DI] + MOVSB + CMP SI,0 + JNZ MISMO_SEG + MOV BP,DS + ADD BP,1000h + MOV DS,BP +MISMO_SEG: LOOP LINEA + SUB DI,80 + ROL AH,1 + DEC BX + JNZ SON_4_PLANOS + ADD DI,80 + DEC DX + JNZ SIG_LINEA + + POP SI + POP ES + POP DX + POP DS + POP DI + POP CX + POP BX + POP AX + POP BP + RET +_VUELCA_PANTALLA ENDP + +_TEXT ENDS + + END + diff --git a/640X480.ASM b/640X480.ASM new file mode 100644 index 0000000..484c437 --- /dev/null +++ b/640X480.ASM @@ -0,0 +1,72 @@ + +_TEXT SEGMENT BYTE PUBLIC 'CODE' + + ASSUME CS:_TEXT + + PUBLIC _VUELCA_PANTALLA_B + + +_VUELCA_PANTALLA_B PROC NEAR + PUSH BP + MOV BP,SP + PUSH AX + PUSH BX + PUSH CX + PUSH DI + PUSH DS + PUSH DX + PUSH ES + PUSH SI + + LDS SI,[BP+4] + MOV AX,0A000h + MOV ES,AX + MOV DI,0 + + MOV AH,00010001b + MOV DX, 480 + CLD + +SIG_LINEA: MOV BX,4 + +SON_4_PLANOS: PUSH AX + PUSH DX + MOV DX,3C4H ;MASCARA DE PLANOS + MOV AL,2 + OUT DX,AX + POP DX + POP AX + + MOV CX,80 +LINEA: MOV AL,ES:[DI] + MOVSB + CMP SI,0 + JNZ MISMO_SEG + MOV BP,DS + ADD BP,1000h + MOV DS,BP +MISMO_SEG: LOOP LINEA + SUB DI,80 + ROL AH,1 + DEC BX + JNZ SON_4_PLANOS + ADD DI,80 + DEC DX + JNZ SIG_LINEA + + POP SI + POP ES + POP DX + POP DS + POP DI + POP CX + POP BX + POP AX + POP BP + RET +_VUELCA_PANTALLA_B ENDP + +_TEXT ENDS + + END + diff --git a/640X480.LIB b/640X480.LIB new file mode 100644 index 0000000000000000000000000000000000000000..d496b64753c705420f94e647b6fd77aa7b3a0ff3 GIT binary patch literal 1024 zcmeys%fP_Iz`)1=1r59m+{GFB<*Dh3dXB-q*&W;r42#*JA`Bf0KxHx^rA0~k3Xa9a zskuoxsYMD3VW~yMnfZANCVB?5I)oVt>)MpydrVJ2s;go4S46N}X zt`Q+D&i*d0(`K+UXoNE`F*DwoAP#hmKzvxJtBBhcE~4i*N7MT`>{ zM1x!#+WjUVI51o;h%M}B8Osia1$_thGcars-1UI*&u$imfS_GRm^U!JkBZnCz@XN} zx}^CZLn%kk-NvH~0)2NMy={IUaN&q|>5b;&0bZr& +#include +#include +#include // Para getch(); +#include // Para outtextxy(...); y cleardevice(...); +#include "..\libs\make_bot\make_bot.h" // Fuciones de MAKE_BOTON +#include "cd_icons.h" +#include "CD_SND.H" + +#define SIN_COMENTARIO 0 +#define CON_COMENTARIO 1 + +#define DOS 1 +#define WINDOWS 2 + +extern int /*far _cdecl*/ Fichero_cd_img(char Dinamicos_Estaticos); + +struct CFG_str { + char Nombre_del_Programa[70]; + char Comentario_Inicial[70]; + char VerHi, VerLow; + char Register; + + long Records; +}; + +struct CFG_str CD_cabecera1; + +typedef struct { + + unsigned int Exit_after_EXE : 1; + unsigned int With_Out_Sound : 1; + unsigned int Auto_Install : 1; + unsigned int Check_Free_Size : 1; + unsigned int Format_Always : 1; + unsigned int Without_Backgr : 1; + unsigned int Futura_Ampliac : 4; + +} Cd_CFG; + +Cd_CFG CD_CFG1; +FILE *CD_CFG; +int CFG; + +void Init_CFG(void); +void Abre_Ficha_CD_CFG(int R_W); +void Poner_a_cero_estructura_actual_CFG(void); + +#define SIN_COMENTARIO 0 +#define CON_COMENTARIO 1 +extern void Imprime_Lista(char Como); +extern void Sonido(char Sonido); + + + +void Init_CFG(void){ + int ok = 0; + int Salvar = 0; + + Abre_Ficha_CD_CFG(0); + +setfillstyle(SOLID_FILL, 240); +bar(395, 140, 625, 410); + +// Imprime_Estaticos( 4, "cd_out.img"); // Imprime botones estaticos 'Seccion 4' + Fichero_cd_img(4); +Imprime_Secuencia(2); // Imprime secuencia 1. +// Imprime_Estaticos( 5, "cd_out.img"); // Imprime textos estaticos 'Seccion 5' + Fichero_cd_img(5); + + if ( CD_CFG1 . Exit_after_EXE ) Imprime_Bordes(2, 4, 248); + if ( CD_CFG1 . With_Out_Sound ) Imprime_Bordes(2, 5, 248); + if ( CD_CFG1 . Auto_Install ) Imprime_Bordes(2, 6, 248); + if ( CD_CFG1 . Check_Free_Size ) Imprime_Bordes(2, 7, 248); + if ( CD_CFG1 . Format_Always ) Imprime_Bordes(2, 8, 248); + if ( CD_CFG1 . Without_Backgr ) Imprime_Bordes(2, 9, 248); + +while(!ok){ // Bucle infinito + + switch( Comprueba_Secuencia( 2 ) ) { // Iniciamos comprobacion de 2 sec + + case 0: // No se pulso ningun BOTON + // Pero el raton fue presionado en + // algun sitio... +// Sonido("CD_OUT01.WAV"); + Sonido( Mouse_Press ); + break; + case -2: // Hay una tecla normal en BUFFER + getch(); // La eliminamos +// Sonido("CD_OUT01.WAV"); + Sonido( Mouse_Press ); + break; + case -1: // Hay una tecla especial en BUFFER + getch(); // La eliminamos +// Sonido("CD_OUT01.WAV"); + Sonido( Mouse_Press ); + break; + // Boton Cancelar + case 1: +// Sonido("CD_OUT0F.WAV"); + Sonido( Cancel ); + Salvar = 0; + ok = 1; + break; + // Boton Salvar + case 2: +// Sonido("CD_OUT10.WAV"); + Sonido( Save_until_exit ); + Salvar = 1; + break; + // Boton Anterior + case 3: +// Sonido("CD_OUT0E.WAV"); + Sonido( Ok ); + ok = 1; + break; + // Boton Salir despues de ejecutar + case 4: + if ( CD_CFG1 . Exit_after_EXE ) { + Imprime_Bordes(2, 4, -1); + CD_CFG1 . Exit_after_EXE = 0; +// Sonido("CD_OUT0C.WAV"); + Sonido( No ); + } else { + CD_CFG1 . Exit_after_EXE = 1; + Imprime_Bordes(2, 4, 248); +// Sonido("CD_OUT0B.WAV"); + Sonido( Yes ); + } + break; + // Boton Desactivar sonidos + case 5: + if ( CD_CFG1 . With_Out_Sound ) { + Imprime_Bordes(2, 5, -1); + CD_CFG1 . With_Out_Sound = 0; +// Sonido("CD_OUT0C.WAV"); + Sonido( No ); + } else { + CD_CFG1 . With_Out_Sound = 1; + Imprime_Bordes(2, 5, 248); +// Sonido("CD_OUT0B.WAV"); + Sonido( Yes ); + } + break; + // Boton Auto_Instalacin + case 6: + if ( CD_CFG1 . Auto_Install ) { + Imprime_Bordes(2, 6, -1); + CD_CFG1 . Auto_Install = 0; +// Sonido("CD_OUT0C.WAV"); + Sonido( No ); + } else { + CD_CFG1 . Auto_Install = 1; + Imprime_Bordes(2, 6, 248); +// Sonido("CD_OUT0B.WAV"); + Sonido( Yes ); + } + break; + // Boton Comprobar espacio libre + case 7: + if ( CD_CFG1 . Check_Free_Size ) { + Imprime_Bordes(2, 7, -1); + CD_CFG1 . Check_Free_Size = 0; +// Sonido("CD_OUT0C.WAV"); + Sonido( No ); + } else { + CD_CFG1 . Check_Free_Size = 1; + Imprime_Bordes(2, 7, 248); +// Sonido("CD_OUT0B.WAV"); + Sonido( Yes ); + } + break; + // Boton Formatear en caso de unidades A: y B: + case 8: + if ( CD_CFG1 . Format_Always ) { + Imprime_Bordes(2, 8, -1); + CD_CFG1 . Format_Always = 0; +// Sonido("CD_OUT0C.WAV"); + Sonido( No ); + } else { + CD_CFG1 . Format_Always = 1; + Imprime_Bordes(2, 8, 248); +// Sonido("CD_OUT0B.WAV"); + Sonido( Yes ); + } + break; + // Boton sin dibujo de Fondo + case 9: + if ( CD_CFG1 . Without_Backgr ) { + Imprime_Bordes(2, 9, -1); + CD_CFG1 . Without_Backgr = 0; +// Sonido("CD_OUT0C.WAV"); + Sonido( No ); + } else { + CD_CFG1 . Without_Backgr = 1; + Imprime_Bordes(2, 9, 248); +// Sonido("CD_OUT0B.WAV"); + Sonido( Yes ); + } + break; + // Boton Imprime Lista Sin Comentarios + case 10: +// Sonido("CD_OUT0D.WAV"); + Sonido( Printing ); + Imprime_Lista(SIN_COMENTARIO); + break; +// // Boton Imprime Lista Con Comentarios +// case 10: +// Imprime_Lista(CON_COMENTARIOS); +// break; + default: + while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER +// Sonido("CD_OUT11.WAV"); + Sonido( Unknow_error ); + break; + } + +} + +setfillstyle(SOLID_FILL, 240); +bar(395, 140, 625, 410); + +if ( Salvar == 1 && CFG != 0 ) Abre_Ficha_CD_CFG(1); else Abre_Ficha_CD_CFG(0); + +return; +} + +// +// +// +// +// +// +// +// + +void Abre_Ficha_CD_CFG(int R_W){ + +char ArchivoDatos[]="C:\\CD_out.CFG"; +char Memoria; +CFG = 1; + +//// +// CD_in Apertura de Indice, y Datos, o creacin... // +//// + + int LSJ = sizeof(struct CFG_str); + int LSC = sizeof(Cd_CFG); + + if ( (CD_CFG = fopen( ArchivoDatos, "r+b"))==NULL) { + + FILE *fa; + + if ( (fa = fopen( ArchivoDatos, "wb" ) )!=NULL ) { + + Poner_a_cero_estructura_actual_CFG(); + CD_cabecera1.Records = 0; + rewind(fa); + + fwrite(&CD_cabecera1, LSJ, 1, fa); fseek(fa, (long)LSJ, SEEK_SET); + fwrite(&CD_CFG1, LSC, 1, fa); + + if (fclose(fa) == EOF ) CFG = 0; + } + + if ( (CD_CFG = fopen( ArchivoDatos, "r+b"))==NULL) CFG = 0; + } + + if ( CFG != 0 ) { + rewind(CD_CFG); + if ( fread(&CD_cabecera1, LSJ, 1, CD_CFG) != 1 ) CFG = 0; + } + +if( R_W == 0 ) { + if ( CFG != 0 ) { + fseek(CD_CFG, (long)LSJ, SEEK_SET); + if ( fread(&CD_CFG1, LSC, 1, CD_CFG) != 1 ) CFG = 0; + } +} else { + if ( CFG != 0 ) { + fseek(CD_CFG, (long)LSJ, SEEK_SET); + if ( fwrite(&CD_CFG1, LSC, 1, CD_CFG) != 1 ) CFG = 0; + } +} + + if (fclose(CD_CFG) == EOF ) CFG = 0; + +} + +void Poner_a_cero_estructura_actual_CFG(void){ + + char CR = 13, LF = 10, BEEP = 7, ANY = 26; + sprintf( CD_cabecera1.Nombre_del_Programa, "%c %c %c - CD_OUT - %c %c Fichero de Configuracin %c %c", CR, LF, BEEP, CR, LF, CR, LF ); + sprintf( CD_cabecera1.Comentario_Inicial, "Jos David Guilln %c %c %c %c", CR, LF, BEEP, ANY ); + CD_cabecera1.VerHi = 1; CD_cabecera1.VerLow = 0; + CD_cabecera1.Register = 1; + + CD_CFG1 . Exit_after_EXE = 1; + CD_CFG1 . With_Out_Sound = 0; + CD_CFG1 . Auto_Install = 1; + CD_CFG1 . Check_Free_Size = 1; + CD_CFG1 . Format_Always = 0; + CD_CFG1 . Without_Backgr = 0; + CD_CFG1 . Futura_Ampliac = 0; + +} + + + + + + diff --git a/CD_EDIT.CPP b/CD_EDIT.CPP new file mode 100644 index 0000000..1f23631 --- /dev/null +++ b/CD_EDIT.CPP @@ -0,0 +1,838 @@ +#include +#include +#include +#include +#include +#include // Para getch(); +#include // Para outtextxy(...); y cleardevice(...); +#include "..\libs\make_bot\make_bot.h" // Fuciones de MAKE_BOTON +#include "cd_icons.h" +#include "cd_file.h" +#include "..\libs\wavplav\wavplay.h" + +#include "CD_SND.H" + +#include "EMMC.h" + +extern int pagenum, /*nmero de pginas EMS*/ + handle, /*Handle para acceder a la memoria EMS*/ + i; /*contador de bucle*/ +extern WORD pageseg ; /*direccin de segmento del Page-Frame*/ +extern BYTE emmver; /*nmero de versin de la EMM*/ + +extern int /*far _cdecl*/ Fichero_cd_img(char Dinamicos_Estaticos); + +#define DOS 1 +#define WINDOWS 2 + +#define SIN_COMENTARIO 0 +#define CON_COMENTARIO 1 + +extern int file_exists(char *filename); +extern void Carga_PCX(char *Imagen); + +extern void Sonido(char Sonido); + +void Muestra_Comentario(int Ini); +int Abre_Ficha_CD_in(void); +void GetLineCD_in(void); +void Inicializa_Apertura(void); +void BEEP(void); +void Mueve_Abajo_CD_in(void); +void Mueve_Arriba_CD_in(void); +void PrintWholeScreenCD_in(void); +void textxy( int x, int y, char *P_Texto ); +void Borra_Campo_Visual(void); + +FILE *CD_in; +CD_FILE CD_in1, CD_in2; +struct Cabecera CD_cabecera; +int Comprueba_Impresora(void); + +extern int Muestra_Mensaje(int Mensaje, char *file); +void Imprime_Lista(char Como); + +extern char _XMS; +extern int CFG; + +extern void Init_CFG(void); +extern void Init_EXE(int CurrIcon); +extern void Init_Install(int CurrIcon); + +void Coloca_Iconos(int Start_Icon); +void Menu_de_Edicion(void); + + unsigned char Items_for = DOS; + unsigned char Item_select = 1; + unsigned int CurrTopLineCD_in = 1; unsigned char CurrRowCD_in = 1; + unsigned char CurrRowCD_in2 = 0; + char NEW_PUSH = 0; + char Fichero_Abierto; + + char SONIDO = 0; +void Menu_de_Edicion(void){ + int ok = 0; + char cont; + char Buffer[80]; + + int Curr_Item = 1; + + Imprime_Bordes(1, 1, 251); + settextstyle( SMALL_FONT, HORIZ_DIR, 4); + Inicializa_Apertura(); + +while(!ok){ // Bucle infinito + + switch( Comprueba_Secuencia( 1 ) ) { // Iniciamos comprobacion de iconos + + case 0: // No se pulso ningun BOTON + // Pero el raton fue presionado en + // algun sitio... +// Sonido("CD_OUT01.WAV"); + Sonido( Mouse_Press ); + break; + case -2: // Hay una tecla normal en BUFFER + getch(); // La eliminamos +// Sonido("CD_OUT02.WAV"); + Sonido( Key_Press ); + break; + case -1: // Hay una tecla especial en BUFFER + switch ( getch() ){ // La utilizamos +/* + // INICIO + case 71: + if ( Fichero_Abierto ) { +// Sonido("CD_OUT03.WAV"); + Sonido( Mouse_Key_Tick ); + CurrRowCD_in = 1; + CurrTopLineCD_in = 1; + PrintWholeScreenCD_in(); + GetLineCD_in(); + } + break; + // FIN + case 79: + if ( Fichero_Abierto ) { +// Sonido("CD_OUT03.WAV"); + Sonido( Mouse_Key_Tick ); + CurrRowCD_in = 1; + CurrTopLineCD_in = (CD_cabecera.Records + 1); + PrintWholeScreenCD_in(); + GetLineCD_in(); + } + break; +*/ + // RePg + case 71://73: + // CurrRow = 1; + if ( Fichero_Abierto ) { +// Sonido("CD_OUT03.WAV"); + Sonido( Mouse_Key_Tick ); + if( CurrTopLineCD_in + CurrRowCD_in > 10 ) { CurrTopLineCD_in -= 9; } else { CurrTopLineCD_in = 1; CurrRowCD_in = 1;} + if( CurrTopLineCD_in + CurrRowCD_in< 1 ) { CurrTopLineCD_in = 1; CurrRowCD_in = 1;} + PrintWholeScreenCD_in(); + GetLineCD_in(); + } + break; + // AvPg + case 79://81: + // CurrRow = 1; + if ( Fichero_Abierto ) { +// Sonido("CD_OUT03.WAV"); + Sonido( Mouse_Key_Tick ); + CurrTopLineCD_in += 11; + if ( (CurrTopLineCD_in +CurrRowCD_in-1) > CD_cabecera.Records) { CurrTopLineCD_in = CD_cabecera.Records; CurrRowCD_in = 1; } + if (CurrTopLineCD_in ==0) CurrTopLineCD_in = 1; + PrintWholeScreenCD_in(); + GetLineCD_in(); + } + break; + default: + break; + } + break; + // Boton DOS + case 1: +// Sonido("CD_OUT04.WAV"); + Sonido( Play_DOS ); + Imprime_Bordes(1, 2, -1); + Items_for = DOS; + Imprime_Bordes(1, 1, 251); + fclose(CD_in); + Inicializa_Apertura(); + break; + // Boton WINDOWS + case 2: +// Sonido("CD_OUT05.WAV"); + Sonido( Play_WINDOWS ); + Imprime_Bordes(1, 1, -1); + Items_for = WINDOWS; + Imprime_Bordes(1, 2, 251); + fclose(CD_in); + Muestra_Comentario(0); + Inicializa_Apertura(); + break; + // Boton 1 Icono + case 3: +// Sonido("CD_OUT06.WAV"); + Sonido( Select_Icono ); + if(Curr_Item==16){ +// Muestra_Creditos(); + if ( _XMS == 1) { + strcpy( Buffer, "cd_out.cr1" ); + if ( file_exists(Buffer) ) + { + SONIDO = 1; + Carga_PCX(Buffer); + SONIDO = 0; + } + } + +while( kbhit() ) getch(); + }else{ + Item_select = Curr_Item; + fclose(CD_in); + Inicializa_Apertura(); + } + break; + // Boton Flecha Derecha + case 4: +// Sonido("CD_OUT03.WAV"); + Sonido( Mouse_Key_Tick ); + Curr_Item--; if( Curr_Item < 1 ) Curr_Item = 16; + Coloca_Iconos(Curr_Item); + break; + // Boton Flecha Izquierda + case 5: +// Sonido("CD_OUT03.WAV"); + Sonido( Mouse_Key_Tick ); + Curr_Item++; if( Curr_Item > 16 ) Curr_Item = 1; + Coloca_Iconos(Curr_Item); + break; + // Botones de Letras... + case 6: + if ( Fichero_Abierto && ( CurrTopLineCD_in + 1 - 2 ) <= CD_cabecera.Records ) { +// Sonido("CD_OUT03.WAV"); + Sonido( Mouse_Key_Tick ); + CurrRowCD_in = 1; + GetLineCD_in(); + CD_in2 = CD_in1; + Muestra_Comentario(1); + } + break; + case 7: + if ( Fichero_Abierto && ( CurrTopLineCD_in + 2 - 2 ) <= CD_cabecera.Records ) { +// Sonido("CD_OUT03.WAV"); + Sonido( Mouse_Key_Tick ); + CurrRowCD_in = 2; + GetLineCD_in(); + CD_in2 = CD_in1; + Muestra_Comentario(1); + } + break; + case 8: + if ( Fichero_Abierto && ( CurrTopLineCD_in + 3 - 2 ) <= CD_cabecera.Records ) { +// Sonido("CD_OUT03.WAV"); + Sonido( Mouse_Key_Tick ); + CurrRowCD_in = 3; + GetLineCD_in(); + CD_in2 = CD_in1; + Muestra_Comentario(1); + } + break; + case 9: + if ( Fichero_Abierto && ( CurrTopLineCD_in + 4 - 2 ) <= CD_cabecera.Records ) { +// Sonido("CD_OUT03.WAV"); + Sonido( Mouse_Key_Tick ); + CurrRowCD_in = 4; + GetLineCD_in(); + CD_in2 = CD_in1; + Muestra_Comentario(1); + } + break; + case 10: + if ( Fichero_Abierto && ( CurrTopLineCD_in + 5 - 2 ) <= CD_cabecera.Records ) { +// Sonido("CD_OUT03.WAV"); + Sonido( Mouse_Key_Tick ); + CurrRowCD_in = 5; + GetLineCD_in(); + CD_in2 = CD_in1; + Muestra_Comentario(1); + } + break; + case 11: + if ( Fichero_Abierto && ( CurrTopLineCD_in + 6 - 2 ) <= CD_cabecera.Records ) { +// Sonido("CD_OUT03.WAV"); + Sonido( Mouse_Key_Tick ); + CurrRowCD_in = 6; + GetLineCD_in(); + CD_in2 = CD_in1; + Muestra_Comentario(1); + } + break; + case 12: + if ( Fichero_Abierto && ( CurrTopLineCD_in + 7 - 2 ) <= CD_cabecera.Records ) { +// Sonido("CD_OUT03.WAV"); + Sonido( Mouse_Key_Tick ); + CurrRowCD_in = 7; + GetLineCD_in(); + CD_in2 = CD_in1; + Muestra_Comentario(1); + } + break; + case 13: + if ( Fichero_Abierto && ( CurrTopLineCD_in + 8 - 2 ) <= CD_cabecera.Records ) { +// Sonido("CD_OUT03.WAV"); + Sonido( Mouse_Key_Tick ); + CurrRowCD_in = 8; + GetLineCD_in(); + CD_in2 = CD_in1; + Muestra_Comentario(1); + } + break; + case 14: + if ( Fichero_Abierto && ( CurrTopLineCD_in + 9 - 2 ) <= CD_cabecera.Records ) { +// Sonido("CD_OUT03.WAV"); + Sonido( Mouse_Key_Tick ); + CurrRowCD_in = 9; + GetLineCD_in(); + CD_in2 = CD_in1; + Muestra_Comentario(1); + } + break; + case 15: + if ( Fichero_Abierto && ( CurrTopLineCD_in + 10 - 2 ) <= CD_cabecera.Records ) { +// Sonido("CD_OUT03.WAV"); + Sonido( Mouse_Key_Tick ); + CurrRowCD_in =10; + GetLineCD_in(); + CD_in2 = CD_in1; + Muestra_Comentario(1); + } + break; + // Boton Instalar + case 16: + if ( CD_in1.Alt_Install.Usar_LHA==0 && NEW_PUSH ) { +// Sonido("CD_OUT07.WAV"); + Sonido( Install ); + DeInitSB(); + Init_Install(Curr_Item); + } + break; + // Boton Configurar + case 17: + if( CFG != 0 ) { +// Sonido("CD_OUT08.WAV"); + Sonido( Setup ); + Init_CFG(); + NEW_PUSH = 0; + } + break; + // Boton Ejecutar + case 18: + if ( Fichero_Abierto && CD_in1.Typo.Ejecutable == 1 && NEW_PUSH ) { +// Sonido("CD_OUT09.WAV"); + Sonido( Run ); + DeInitSB(); + Init_EXE(Curr_Item); + } + break; + // Boton Salir + case 19: + ok = 1; + break; + // Boton Mueve Arriba Programas + case 20: + if ( Fichero_Abierto ) { +// Sonido("CD_OUT03.WAV"); + Sonido( Mouse_Key_Tick ); + Mueve_Arriba_CD_in(); + } + break; + // Boton Mueve Abajo Programas + case 21: + if ( Fichero_Abierto ) { +// Sonido("CD_OUT03.WAV"); + Sonido( Mouse_Key_Tick ); + Mueve_Abajo_CD_in(); + } + break; + // Boton Mueve Arriba Comentario + case 22: + if ( NEW_PUSH && CurrRowCD_in2 > 0 ) { +// Sonido("CD_OUT03.WAV"); + Sonido( Mouse_Key_Tick ); + CurrRowCD_in2--; + Muestra_Comentario(2); + } + break; + // Boton Mueve Abajo Comentario + case 23: + if ( NEW_PUSH && CurrRowCD_in2 < /*10*/15 ) { +// Sonido("CD_OUT03.WAV"); + Sonido( Mouse_Key_Tick ); + CurrRowCD_in2++; + Muestra_Comentario(2); + } + break; + // Boton Ver Dibujo + case 24: + if ( NEW_PUSH && Fichero_Abierto && CD_in1.Typo.T_Dibujo == 1 && _XMS == 1) { +// Sonido("CD_OUT0A.WAV"); + Sonido( Show_Image ); + sprintf(Buffer, "imagenes\\%s.pcx", CD_in2.N_Img); + if ( file_exists(Buffer) ) + Carga_PCX(Buffer); + } + break; + default: + while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER +// Sonido("CD_OUT11.WAV"); + Sonido( Unknow_error ); + break; + } + +} + +fclose(CD_in); +return; + +} + + +// +// +// +// +// +// +// +// + +int Abre_Ficha_CD_in(void){ + +char ArchivoDatos[80]; +char Memoria; +void *Imagen; + +int cm; +cm = JD_imagesize(200, 212, 440, 267); +if ( (Imagen = malloc( cm /*imagesize(200, 212, 440, 267)*/ ) ) == NULL ) Memoria = 0; +else { + Memoria = 1; + getimage( 200, 212, 440, 267, Imagen ); +// Imprime_Estaticos( 113, "cd_out.img"); + Fichero_cd_img(113); +// Sonido("CD_OUT71.WAV"); + Sonido( Error_113 ); + settextstyle( SMALL_FONT, HORIZ_DIR, 4); +} + +if (Items_for == DOS) + sprintf(ArchivoDatos, "DATOS\\CD_D%02d.dat", Item_select ); +else + sprintf(ArchivoDatos, "DATOS\\CD_W%02d.dat", Item_select ); + +//// +// CD_in Apertura de Indice, y Datos, o creacin... // +//// + + int LSJ = sizeof(struct Cabecera); + int LSC = sizeof(CD_FILE); + + if ( (CD_in = fopen( ArchivoDatos, "r+b"))==NULL) { + Fichero_Abierto = 0; + Borra_Campo_Visual(); + NEW_PUSH = 0; + if( Memoria ) { +// Imprime_Estaticos( 108, "cd_out.img"); + Fichero_cd_img(108); +// Sonido("CD_OUT6C.WAV"); + Sonido( Error_108 ); + Espera_Tecla_o_Raton(); + Anclar_Raton(); + putimage( 200, 212, Imagen, COPY_PUT); + free(Imagen); + } + return -1; + } else Fichero_Abierto = 1; + + rewind(CD_in); + if ( fread(&CD_cabecera, LSJ, 1, CD_in) != 1 ) { + if ( Memoria ) free(Imagen); + restorecrtmode(); + printf("NO SE PUDO LEER EN EL FICHERO: INDICE"); + exit(1); + } + fseek(CD_in, (long)LSJ, SEEK_SET); + if ( fread(&CD_in1, LSC, 1, CD_in) != 1 ) { + if ( Memoria ) free(Imagen); + restorecrtmode(); + printf("NO SE PUDO LEER EN EL FICHERO: DATOS"); + exit(1); + } + + if( Memoria ) { + putimage( 200, 212, Imagen, COPY_PUT); + free(Imagen); + } + return 1; +} + + +// +// +// +// +// +// +// +// + + +void GetLineCD_in(void){ + + long LSJ = sizeof(struct Cabecera); + long LSC = sizeof(CD_FILE); + + long CurrRecord = CurrTopLineCD_in + CurrRowCD_in - 1; + +fseek(CD_in, (long)LSJ + ( LSC * CurrRecord ) - LSC, SEEK_SET); // Se coloca +fread(&CD_in1, LSC, 1, CD_in); // Y lee + +} + +void Inicializa_Apertura(void) { + + CurrTopLineCD_in = 1; + CurrRowCD_in = 1; +// CurrColCD_in = 1; + if ( Abre_Ficha_CD_in() != -1 ) { + PrintWholeScreenCD_in(); + GetLineCD_in(); + } else Muestra_Comentario(-1); +} + +void BEEP(void){ + + sound(440); + delay(50); + nosound(); + +} + +// +// +// +// +// +// +// +// + +void Mueve_Abajo_CD_in(void){ + + if ( (CurrTopLineCD_in /*+ CurrRowCD_in - 1*/) >= ( CD_cabecera.Records + 1)-8 ) BEEP(); + else { CurrTopLineCD_in++; + PrintWholeScreenCD_in(); + } + +} + +void Mueve_Arriba_CD_in(void){ + +// CurrRowCD_in = 1; + + if ( CurrTopLineCD_in <= 1) BEEP(); + else { + CurrTopLineCD_in--; + PrintWholeScreenCD_in(); + } + +} + +void PrintWholeScreenCD_in(void){ + +int tmp = CurrRowCD_in; + + setcolor(240); + setfillstyle(SOLID_FILL, 240); + + Borra_Campo_Visual(); + setusercharsize(7, 6, 1, 1); + + for(CurrRowCD_in = 1; CurrRowCD_in < (10+1); CurrRowCD_in++) + + if ( (CurrTopLineCD_in + CurrRowCD_in - 1) <= (CD_cabecera.Records + 1) ) { + GetLineCD_in(); + switch(CurrRowCD_in){ + case 1: + textxy( 15, 238, CD_in1.Nombre ); + break; + case 2: + textxy( 15, 261, CD_in1.Nombre ); + break; + case 3: + textxy( 15, 284, CD_in1.Nombre ); + break; + case 4: + textxy( 15, 307, CD_in1.Nombre ); + break; + case 5: + textxy( 15, 330, CD_in1.Nombre ); + break; + case 6: + textxy( 15, 353, CD_in1.Nombre ); + break; + case 7: + textxy( 15, 376, CD_in1.Nombre ); + break; + case 8: + textxy( 15, 399, CD_in1.Nombre ); + break; + case 9: + textxy( 15, 422, CD_in1.Nombre ); + break; + case 10: + textxy( 15, 445, CD_in1.Nombre ); + break; + } + } + +CurrRowCD_in = tmp; + +} + + +void textxy( int x, int y, char *P_Texto ) { + + setcolor(255); + outtextxy( x+1+2, y+1, P_Texto ); + setcolor(240); + outtextxy( x+2, y, P_Texto ); + +} + +void Muestra_Comentario(int Ini){ + + int Linea, inc; + char Buffer[80]; + +switch( Ini ) { + + // Borra la pantalla de comentario + case -1: + setfillstyle(SOLID_FILL, 240); + bar(396, 141, 624, 410); + break; + case 1: + CurrRowCD_in2 = 0; + NEW_PUSH = 1; + setfillstyle(SOLID_FILL, 240); +// bar(396, 141, 624, 161); + bar(396, 141, 624, 410); + + setfillstyle(9, 242); + bar(396, 141, 624, 161); + + setusercharsize(3, 2, 8, 5); + setcolor(250); + inc = textwidth(CD_in2.Nombre); + if ( inc<0 ) inc = 0; + else + inc = (228-inc)/2; + outtextxy( 398+inc, 142, CD_in2.Nombre ); + setcolor(255); + outtextxy( 397+inc, 141, CD_in2.Nombre ); + + settextstyle( SMALL_FONT, HORIZ_DIR, 4); + for(Linea=0; Linea<22/*32*/; Linea++ ) + outtextxy( 397, 165+Linea*11, CD_in2.Comentario[Linea] ); + + break; + case 2: + setfillstyle(SOLID_FILL, 240); +// bar(396, 162, 624, 410); + setcolor(255); + + settextstyle( SMALL_FONT, HORIZ_DIR, 4); + + if(CurrRowCD_in2<=10) { + for(Linea=0; Linea<22/*32*/; Linea++ ) { + bar( 396, 165+Linea*11, 624, 165+Linea*11 + 11); // relleno, y Borra el campo + outtextxy( 397, 165+Linea*11, CD_in2.Comentario[Linea+CurrRowCD_in2] ); + } + } else { + + for(Linea=0; Linea<22-(CurrRowCD_in2-10)/*32*/; Linea++ ) { + bar( 396, 165+Linea*11, 624, 165+Linea*11 + 11); // relleno, y Borra el campo + outtextxy( 397, 165+Linea*11, CD_in2.Comentario[Linea+10+(CurrRowCD_in2-10)] ); + } + + for(Linea=(22-(CurrRowCD_in2-10)); Linea< 22; Linea++ ) { + bar( 396, 165+Linea*11, 624, 165+Linea*11 + 11); // relleno, y Borra el campo + } + + setcolor(242); + sprintf( Buffer, "Informe:"); + if ( CurrRowCD_in2 == 12 ) + outtextxy( 397, 165+21*11, Buffer ); + if ( CurrRowCD_in2 == 13 ) + outtextxy( 397, 165+20*11, Buffer ); + if ( CurrRowCD_in2 == 14 ) + outtextxy( 397, 165+19*11, Buffer ); + if ( CurrRowCD_in2 == 15 ) + outtextxy( 397, 165+18*11, Buffer ); + + strcpy( Buffer, " \0" ); + if ( CD_in2.Alt_Install.Usar_LHA == 0) { + strcat( Buffer, "Instalable" ); + if ( CD_in2.Typo.Ejecutable == 1 || CD_in2.Typo.T_Dibujo == 1) + strcat( Buffer, ", " ); + } + + if ( CD_in2.Typo.Ejecutable == 1 ) { + strcat( Buffer, "Ejecutable" ); + if ( CD_in2.Typo.T_Dibujo == 1 ) + strcat( Buffer, ", " ); + } + if ( CD_in2.Typo.T_Dibujo == 1 ) strcat( Buffer, "Posee Dibujo" ); + if ( CD_in2.Typo.Ejecutable == 0 && CD_in1.Typo.T_Dibujo == 0 && CD_in2.Alt_Install.Usar_LHA == 1 ) + strcpy( Buffer, "Archivo no accesible por CD_OUT" ); + + if ( CurrRowCD_in2 == 14 ) + outtextxy( 397, 165+21*11, Buffer ); + if ( CurrRowCD_in2 == 15 ) + outtextxy( 397, 165+20*11, Buffer ); + + strcpy( Buffer, "\0" ); + + strrev( CD_in2.Dir_P ); + strncpy( Buffer, CD_in2.Dir_P, 34 ); + strrev( CD_in2.Dir_P ); + strrev( Buffer ); + if ( CurrRowCD_in2 == 15 ) + outtextxy( 397, 165+21*11, Buffer ); + + } + + break; + + default: + break; +} + + +} + +void Borra_Campo_Visual(void){ + + setfillstyle( SOLID_FILL, 253); + bar( 15+1, 237+1, 196-1, 253-1); + bar( 15+1, 260+1, 196-1, 276-1); + bar( 15+1, 283+1, 196-1, 299-1); + bar( 15+1, 306+1, 196-1, 322-1); + + bar( 15+1, 329+1, 196-1, 345-1); + bar( 15+1, 352+1, 196-1, 368-1); + bar( 15+1, 375+1, 196-1, 392-1); + bar( 15+1, 398+1, 196-1, 414-1); + + bar( 15+1, 421+1, 196-1, 437-1); + bar( 15+1, 444+1, 196-1, 460-1); + +} + + + + + + + +void Imprime_Lista(char Como){ + +int tmpRow = CurrRowCD_in; +int tmpTop = CurrTopLineCD_in; +void *Imagen; char Memoria = 0; + +if ( Comprueba_Impresora() == 0 ) { + Muestra_Mensaje(115, "CD_OUT.IMG"); + return; +} + + + + + if ( (Imagen = malloc( JD_imagesize(200, 212, 440, 267) ) ) != NULL ) { + getimage( 200, 212, 440, 267, Imagen ); +// Imprime_Estaticos( 116, "CD_OUT.IMG" ); + Fichero_cd_img(116); +// Sonido("CD_OUT74.WAV"); + Sonido( Error_116 ); + Memoria = 1; + } + + CurrTopLineCD_in = 1; + + fprintf( stdprn, "Ŀ\n\r"); + fprintf( stdprn, " JD & CD_OUT \n\r"); + fprintf( stdprn, "\n\r"); + fprintf( stdprn, "\n\r"); + + for(CurrTopLineCD_in = 1; CurrTopLineCD_in <= (CD_cabecera.Records + 1); CurrTopLineCD_in++) { + + GetLineCD_in(); + if ( Como == SIN_COMENTARIO ) { + + fprintf( stdprn, "%-26s ", CD_in1.Nombre); + if( (CurrTopLineCD_in + 1) <= (CD_cabecera.Records + 1) ) { + CurrTopLineCD_in++; + GetLineCD_in(); + fprintf( stdprn, "%-26s\n\r", CD_in1.Nombre); + } + + } + } + + fputc(12, stdprn); + +CurrRowCD_in = tmpRow; +CurrTopLineCD_in = tmpTop; + + if ( Memoria == 1 ) { + putimage( 200, 212, Imagen, COPY_PUT); + free(Imagen); + } + +} + + + +int Comprueba_Impresora(void){ + +// unsigned int tmp; + union REGS Impresora_in, Impresora_out; +/* + struct byte { + int a : 1; + int b : 1; + int c : 1; + int d : 1; + int e : 1; + int f : 1; + int g : 1; + int h : 1; + }; + union bits { + char ch; + struct byte bit; + } Imp_out; +*/ + Impresora_in.h.ah = 0x02; + Impresora_in.x.dx = 0x0; + + int86(0x17, &Impresora_in, &Impresora_out); + + return ( Impresora_out.h.ah ? 1 : 0 ); + +} diff --git a/CD_ERROR.H b/CD_ERROR.H new file mode 100644 index 0000000..f41313a --- /dev/null +++ b/CD_ERROR.H @@ -0,0 +1,14 @@ +#define SIN_CVN 100 +#define SIN_XMS 101 +#define E_ICONO 102 +#define E_PCX 103 +#define E_WAV 104 +#define E_EXE 105 +#define ERROR_ D 107 + +#define E_O 108 +#define E_W 109 +#define E_R 110 +#define E_C 111 + + diff --git a/CD_EXE.CPP b/CD_EXE.CPP new file mode 100644 index 0000000..0e30f11 --- /dev/null +++ b/CD_EXE.CPP @@ -0,0 +1,407 @@ +#include +#include +#include +#include +#include +#include +#include +#include // Para getch(); +#include // Para outtextxy(...); y cleardevice(...); +#include "..\libs\make_bot\make_bot.h" // Fuciones de MAKE_BOTON +#include "cd_icons.h" +#include "cd_error.h" +#include "cd_file.h" +#include "CD_SND.H" + extern int /*far _cdecl*/ Fichero_cd_img(char Dinamicos_Estaticos); + +#define DOS 1 +#define WINDOWS 2 + +extern void Sonido(char Sonido); +void Init_EXE(int CurrIcon); +char *current_directory(char *path); +extern void Inicializa_Dibujo(int L_Imagen, char *N_Imagen2); +extern void Inicializa_Iconos(void); +extern void Coloca_Iconos_Dos_Windows(void); +extern char far *Icono; // 18 +void InicializaSVGA(void); +extern char dac[256*3]; +extern "C" void APAGA_PANTALLA(char *); +extern "C" void ENCIENDE_PANTALLA(char *); + +extern void Inicializa_Apertura(void); +extern void Coloca_Iconos(int Start_Icon); + +typedef struct { + + unsigned int Exit_after_EXE : 1; + unsigned int With_Out_Sound : 1; + unsigned int Auto_Install : 1; + unsigned int Check_Free_Size : 1; + unsigned int Format_Always : 1; + unsigned int Without_Backgr : 1; + unsigned int Futura_Ampliac : 4; + +} Cd_CFG; + +extern Cd_CFG CD_CFG1; + +char Restaura_Pantalla_CFG(void); +char Salva_Pantalla_CFG(void); + +extern FILE *CD_in; +extern CD_FILE CD_in2; + +extern int file_exists(char *filename); +extern int Muestra_Mensaje(int Mensaje, char *file); + + +void Init_EXE(int CurrIcon){ + + int ok = 0, exe = 0; + char curdir[80]; + char Buffer[80]; + int ERROR_SALVA = 0; + + struct ffblk ffblk; + + +// Comprobamos que existe el fichero a ejecutar... + strcpy( Buffer, CD_in2.Dir_P ); + Buffer[0] = getdisk() + 'A'; + strcat( Buffer, "\\" ); + strcat( Buffer, CD_in2.N_Exe ); + strcat( Buffer, ".*" ); + if ( findfirst( Buffer, &ffblk,0) != 0 ) +/* if ( !file_exists(Buffer) )*/ { Muestra_Mensaje(114, "cd_out.img"); +// Sonido("CD_OUT72.WAV"); + Sonido( Error_114 ); + return; } + + + ERROR_SALVA = Salva_Pantalla_CFG(); +/* + void far *Mascara; + +if( (Mascara = farmalloc( imagesize(118, 160, 521, 335) ) ) == NULL) { + closegraph(); + cprintf("\n\rSALIENDO"); + cprintf("\n\rImposible encontrar %dKbytes en el Heap", ok); + exit(SIN_MEMORIA); +} + +getimage(118, 159, 521, 335, Mascara); +*/ + +// Imprime_Estaticos(10, "cd_out.img"); // Imprime botones estaticos 'Seccion 4' + Fichero_cd_img(10); +Imprime_Secuencia(3); // Imprime secuencia 1. +// Imprime_Estaticos(11, "cd_out.img"); // Imprime textos estaticos 'Seccion 5' + Fichero_cd_img(11); +while(!ok){ // Bucle infinito + + switch( Comprueba_Secuencia( 3 ) ) { // Iniciamos comprobacion de 2 sec + + case 0: // No se pulso ningun BOTON + // Pero el raton fue presionado en + // algun sitio... +// Sonido("CD_OUT01.WAV"); + Sonido( Mouse_Press ); + break; + case -2: // Hay una tecla normal en BUFFER + switch( getch() ) { // La utilizamos + // Intro ( ACEPTAR ) + case 13: +// Sonido("CD_OUT0E.WAV"); + Sonido( Ok ); + exe = 1; + ok = 1; + break; + // ESC ( CANCELAR ) + case 14: +// Sonido("CD_OUT0F.WAV"); + Sonido( Cancel ); + exe = 0; + ok = 1; + break; + default: +// Sonido("CD_OUT02.WAV"); + Sonido( Key_Press ); + break; + } + break; + case -1: // Hay una tecla especial en BUFFER + getch(); // La eliminamos + break; + // Boton Aceptar + case 1: + exe = 1; + ok = 1; + break; + // Boton Cancelar + case 2: + exe = 0; + ok = 1; + break; + default: + while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER + break; + } + +} + + +// if ( CD_CFG1.Exit_after_EXE == 0) + ERROR_SALVA = Restaura_Pantalla_CFG(); +/* +putimage(118, 160, Mascara, COPY_PUT); + +farfree(Mascara); +*/ +if ( exe == 1 ) { + /// Liberamos la memoria asignada para al DRIVER grfico... + current_directory(curdir); + APAGA_PANTALLA(dac); + closegraph(); + Libera_Memoria(); + /* + free(P_Raton1); + free(P_Raton2); + free(P_Raton3); + free(P_Raton4); + free(Pantalla); + */ + Libera_Raton_Animado(); + farfree(Icono); + fclose(CD_in); + closegraph(); + + + /* + + C O M I E N Z A L A E J E C U C I O N D E L P R O G R A M A + + */ + +// if ( system( getenv( "COMSPEC") ) != 0 ) { printf("\n\nImposible salir a MS-DOS\n\n"); sleep(5); } + + cprintf("Ŀ\n\r"); + cprintf(" JD & CD_OUT \n\r"); + cprintf("\n\r"); + cprintf("EJECUTANDO PROGRAMA: [%s]\n\r", Buffer); + + + strcpy( Buffer, CD_in2.Dir_P ); + Buffer[0] = getdisk() + 'A'; + chdir(Buffer); + + if ( spawnl(P_WAIT, CD_in2.N_Exe, NULL) == -1 ) { + printf("Imposible ejecutar %s, el archivo no esta disponible", Buffer); + getch(); + } else if ( CD_CFG1.Exit_after_EXE == 1 ) { + clrscr(); + cprintf("Ŀ\n\r"); + cprintf(" JD & CD_OUT \n\r"); + cprintf("\n\r"); + cprintf("No se regresera a CD_OUT a peticin del usuario...\n\r"); + exit(1); + } + clrscr(); + cprintf("Ŀ\n\r"); + cprintf(" JD & CD_OUT \n\r"); + cprintf("\n\r"); + cprintf("Regresando a CD_OUT...\n\r"); + + //// Recargamos el Programa... + chdir(curdir); // Refresamos a nuestro directorio + // de origen + InicializaSVGA(); // Reinicializamos la SVGA + APAGA_PANTALLA(dac); // Apagamos la Pantalla + Inicializa_Dibujo( (-1), "NADA"); // Inicializamos un nuevo dibujo + +// if( carga_botones("cd_out.img") // Recarga botones del fichero "CD_out.img" + if ( Fichero_cd_img(0) + + != OK ) { +// Imprime_Estaticos( 112, "cd_out.img"); + Fichero_cd_img(112); + Espera_Tecla_o_Raton(); + closegraph(); + cprintf("\n\rError en la CARGA DE BOTONES"); + exit(112); + } + + +// Imprime_Estaticos( 1, "cd_out.img"); // Imprime botones estaticos 'Seccion 1' + Fichero_cd_img(1); + Imprime_Secuencia(1); // Imprime secuencia 1. + +// Imprime_Estaticos( 2, "cd_out.img"); // Imprime botones estaticos 'Seccion 2' + // para los textos + Fichero_cd_img(2); + + Inicializa_Iconos(); + Coloca_Iconos_Dos_Windows(); + Coloca_Iconos(CurrIcon); + + ENCIENDE_PANTALLA(dac); +/* + if ( (Pantalla = malloc( JD_imagesize(0, 0, 21, 21) )) == NULL ) { + Imprime_Estaticos( SIN_CVN, "cd_out.img"); + Espera_Tecla_o_Raton(); + closegraph(); + cprintf("\n\rError en la asignacin de memoria para la mascara del raton"); + exit(2); + } +*/ + Imprime_Bordes(1, 1, 251); + settextstyle( SMALL_FONT, HORIZ_DIR, 4); + Inicializa_Apertura(); + PunteroRaton = 100; + inicializa_raton_grafico( 0, 0, 618, 460); + + True_Push = ON; // Activa el TRUE PUSH ( PRESION REAL ) + +} else + if ( ERROR_SALVA == 1 ){ + APAGA_PANTALLA(dac); + closegraph(); + Libera_Memoria(); + Libera_Raton_Animado(); + /* + free(P_Raton1); + free(P_Raton2); + free(P_Raton3); + free(P_Raton4); + free(Pantalla); + */ + farfree(Icono); + fclose(CD_in); + printf( "Ha ocurrido un ERROR en el fichero Temporal CD_OUT.TMP" ); + exit(2); + } + + + +} + + +char *current_directory(char *path) +{ + strcpy(path, "X:\\"); /* fill string with form of response: X:\ */ + path[0] = 'A' + getdisk(); /* replace X with current drive letter */ + getcurdir(0, path+3); /* fill rest of string with current directory */ + return(path); +} + +char Salva_Pantalla_CFG(void){ + + FILE *Salva; + + +// unsigned char Pixel_Line[405]; + int t; + void *Imagen; + + if ( (Salva = fopen( "C:\\CD_OUT.TMP", "wb" ) ) == NULL ) { + CD_CFG1.Exit_after_EXE = 1; + + return 1; + } + + + // 118, 160, 521, 335 + + // 118,160 320,160 521,160 + // * - * + // 118, 160, 320, 248 + // 320, 160, 521, 248 118,248 320,248 521,248 + // 118, 248, 320, 335 _ _ _ + // 118, 248, 320, 335 + // + // 118,335 320,335 521,335 + // * - * + rewind(Salva); + t = JD_imagesize(118, 160, 320, 248); + if ( (Imagen = malloc( t )) == NULL ) { closegraph(); printf("No hay suficiente espacion en el HEAP o C:\\\n"); } + getimage(118, 160, 320, 248, Imagen); + fwrite( Imagen, t, 1, Salva ); + fseek( Salva, t, SEEK_CUR); + t = JD_imagesize(320, 160, 521, 248); + if ( (Imagen = realloc( Imagen, t )) == NULL ) { closegraph(); printf("No hay suficiente espacion en el HEAP o C:\\\n"); } + getimage(320, 160, 521, 248, Imagen); + fwrite( Imagen, t, 1, Salva ); + fseek( Salva, t, SEEK_CUR); + t = JD_imagesize(118, 248, 320, 335); + if ( (Imagen = realloc( Imagen, t )) == NULL ) { closegraph(); printf("No hay suficiente espacion en el HEAP o C:\\\n"); } + getimage(118, 248, 320, 335, Imagen); + fwrite( Imagen, t, 1, Salva ); + fseek( Salva, t, SEEK_CUR); + t = JD_imagesize(320, 248, 521, 335); + if ( (Imagen = realloc( Imagen, t )) == NULL ) { closegraph(); printf("No hay suficiente espacion en el HEAP o C:\\\n"); } + getimage(320, 248, 521, 335, Imagen); + fwrite( Imagen, t, 1, Salva ); + + free(Imagen); + + if ( fclose(Salva) == EOF ) { + CD_CFG1.Exit_after_EXE = 1; + return 1; + } + + return 0; +} + +char Restaura_Pantalla_CFG(void){ + + FILE *Restaura; + int t; + void *Imagen; + + unsigned char Pixel_Line; + int x, y; + + if ( (Restaura = fopen( "C:\\CD_OUT.TMP", "rb" ) ) == NULL ) { + CD_CFG1.Exit_after_EXE = 1; + + return 1; + } + + rewind(Restaura); + t = JD_imagesize(118, 160, 320, 248); + if ( (Imagen = malloc( t )) == NULL ) { closegraph(); printf("No hay suficiente espacion en el HEAP o C:\\\n"); } + fread( Imagen, t, 1, Restaura ); + putimage(118, 160, Imagen, COPY_PUT); + fseek( Restaura, t, SEEK_CUR); + t = JD_imagesize(320, 160, 521, 248); + if ( (Imagen = realloc( Imagen, t )) == NULL ) { closegraph(); printf("No hay suficiente espacion en el HEAP o C:\\\n"); } + fread( Imagen, t, 1, Restaura ); + putimage(320, 160, Imagen, COPY_PUT); + fseek( Restaura, t, SEEK_CUR); + t = JD_imagesize(118, 248, 320, 335); + if ( (Imagen = realloc( Imagen, t )) == NULL ) { closegraph(); printf("No hay suficiente espacion en el HEAP o C:\\\n"); } + fread( Imagen, t, 1, Restaura ); + putimage(118, 248, Imagen, COPY_PUT); + fseek( Restaura, t, SEEK_CUR); + t = JD_imagesize(320, 248, 521, 335); + if ( (Imagen = realloc( Imagen, t )) == NULL ) { closegraph(); printf("No hay suficiente espacion en el HEAP o C:\\\n"); } + fread( Imagen, t, 1, Restaura ); + putimage(320, 248, Imagen, COPY_PUT); + + free(Imagen); + + if ( fclose(Restaura) == EOF ) { + CD_CFG1.Exit_after_EXE = 1; + return 1; + } + + if ( unlink("C:\\CD_OUT.TMP")!=0 ){ + CD_CFG1.Exit_after_EXE = 1; + return 1; + } + + return 0; + +} + + diff --git a/CD_FILE.CPP b/CD_FILE.CPP new file mode 100644 index 0000000..3779f3c --- /dev/null +++ b/CD_FILE.CPP @@ -0,0 +1,45 @@ + + struct byte { + int DOS_WINDOWS : 1; + int Tipo_de_Programa : 4; + int Dibujo : 1; + int Install : 1; + int Ejecutable : 1; + }; + + struct Install { + int Usar_VGA_COPY : 1; + int Usar_ARJ : 1; + int Usar_ZIP : 1; + int Usar_LHA : 1; + int Usar_XCopy : 1; + int Usar_Install_P : 1; + + int Manual_Automatico : 1; + }; + + +typedef struct { + + struct byte Typo; // 1 bit DOS o WINDOWS + // 4 bit Tipo de programa, ( Juegos, Dibujo, ... ) + // 1 bit ( Tiene Dibujo SI / NO ) + // 1 bit Instalable ( SI / NO ) + // 1 bit Ejecutable + + + char Nombre[26+1]; // Nombre del programa + char Comentario[44][35 + 1]; // Comentario + + char N_Img[8+1]; // Nombre de la imagen ( sin extensin ) + + char Dir_P[80+1]; + + // Instalacion alternativa... + struct Install Alt_Install; + + char N_Install[8+1]; + char N_Exe[8+1]; + + +} CD_FILE; \ No newline at end of file diff --git a/CD_FILE.H b/CD_FILE.H new file mode 100644 index 0000000..8b39f13 --- /dev/null +++ b/CD_FILE.H @@ -0,0 +1,60 @@ + + struct byte { + unsigned int T_Dibujo : 1; + unsigned int DOS_WINDOWS : 1; + unsigned int Install : 1; + unsigned int Ejecutable : 1; + unsigned int Tipo_de_Programa : 4; + }; + + struct Install { + unsigned int Usar_VGA_COPY : 1; + unsigned int Usar_ARJ : 1; + unsigned int Usar_ZIP : 1; + unsigned int Usar_LHA : 1; + unsigned int Usar_XCopy : 1; + unsigned int Usar_Install_P : 1; + + unsigned int Manual_Automatico : 1; + }; + + +typedef struct { + + struct byte Typo; // 1 bit DOS o WINDOWS + // 4 bit Tipo de programa, ( Juegos, Dibujo, ... ) + // 1 bit ( Tiene Dibujo SI / NO ) + // 1 bit Instalable ( SI / NO ) + // 1 bit Ejecutable + + + char Nombre[26+1]; // Nombre del programa + char Comentario[32][35 + 1]; // Comentario + + char N_Img[8+1]; // Nombre de la imagen ( sin extensin ) + + char Dir_P[50+1]; + + // Instalacion alternativa... + struct Install Alt_Install; + + char N_Install[8+1]; + char N_Exe[8+1]; + + +} CD_FILE; + +struct Cabecera { + char Nombre_del_Programa[70]; + char Comentario_Inicial[70]; +// const char R1 = 13, R2 =10; +// const char Comentario_Inicial[] = {"Jos David Guilln Dominguez"}; +// const char R3 = 13, R4 =10; +// const char R5 = 7, R6 =26; + + char VerHi, VerLow; + char Register; + + long Records; +}; + diff --git a/CD_GRAPH.CPP b/CD_GRAPH.CPP new file mode 100644 index 0000000..9aeddfa --- /dev/null +++ b/CD_GRAPH.CPP @@ -0,0 +1,14 @@ + +unsigned far JD_imagesize(int left, int top, int right, int bottom); + + +unsigned far JD_imagesize(int left, int top, int right, int bottom) { + + unsigned long X_width, Y_width; + + X_width= ( (left > right) ? (left - right + 1) : (right - left + 1) ); + Y_width= ( ( up > down) ? ( up - down + 1) : ( down - up + 1) ); + + return (X_width * Y_width + 4); + +}; \ No newline at end of file diff --git a/CD_GRAPH.H b/CD_GRAPH.H new file mode 100644 index 0000000..d8c5658 --- /dev/null +++ b/CD_GRAPH.H @@ -0,0 +1 @@ +unsigned far JD_imagesize(int left, int top, int right, int bottom); \ No newline at end of file diff --git a/CD_ICONS.CPP b/CD_ICONS.CPP new file mode 100644 index 0000000..6bacff6 --- /dev/null +++ b/CD_ICONS.CPP @@ -0,0 +1,428 @@ +///////////////////////////// FICHEROS A INCLUIR ///////////////////////////// +#include +#include +#include +#include +#include + +#include "cd_icons.h" +#include "cd_error.h" + +////////////////////////////////// VARIABLES ///////////////////////////////// +extern char raton; +extern char PunteroRaton; +extern char dac[256*3]; +unsigned char far *Icono; // 18 + +void Coloca_Iconos_Dos_Windows(void); +void Coloca_Iconos(int Start_Icon); +//////////////////////// DECLARACIONES DE FUNCIONES ////////////////////////// + +extern "C" void ENCIENDE_PANTALLA(char *); + +extern unsigned char *P_Raton1, *P_Raton2, *P_Raton3, *P_Raton4; + +///////////////////////////////// PROGRAMA /////////////////////////////////// +void Inicializa_Iconos(void) +{ + FILE *handle; + int ancho, alto; + int Posicion[18] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + int esq_x1, esq_y1, esq_x2, esq_y2; + unsigned char byte, contador; + int n = (20*20); + int PR1, PR2, PR3, PR4; + PR1 = PR2 = PR3 = PR4 = -1; + + if( (Icono = (unsigned char far *)farcalloc( (39762), sizeof(unsigned char) ) ) == NULL ) + { + closegraph(); + printf("No se encontr memoria suficiente"); + exit(1); + } + + if((handle=fopen("CD_OUT2.IMG", "rb"))==NULL) + { + restorecrtmode(); + printf("No se encontr el archivo de iconos"); + exit(1); + } + + if(10!=getc(handle)) + { + restorecrtmode(); + printf("El archivo de iconos, esta daado"); + exit(1); + } + + getw(handle); getc(handle); + + esq_x1=getw(handle); esq_y1=getw(handle); + esq_x2=getw(handle); esq_y2=getw(handle); + + ancho=esq_x2-esq_x1+1; + alto =esq_y2-esq_y1+1; + + fseek(handle, 128, 0); + + for(alto=(esq_y2-esq_y1+1); alto>0; alto--) + { + for(ancho=(esq_x2-esq_x1+1); ancho>0; ) + { + byte=getc(handle); + if(byte<=0xC0) + { + if( ancho>=272 && ancho <=318 && alto >=152 && alto <= 198 ) { + Posicion[0] ++; + Icono[ Posicion[0] ] = byte; + } else + if( ancho>=224 && ancho <=270 && alto >=152 && alto <= 198 ) { + Posicion[1] ++; + Icono[ Posicion[1]+2209*1 ] = byte; + } else + if( ancho>=176 && ancho <=222 && alto >=152 && alto <= 198 ) { + Posicion[2] ++; + Icono[ Posicion[2]+2209*2 ] = byte; + } else + if( ancho>=128 && ancho <=174 && alto >=152 && alto <= 198 ) { + Posicion[3] ++; + Icono[ Posicion[3]+2209*3 ] = byte; + } else + if( ancho>=80 && ancho <=126 && alto >=152 && alto <= 198 ) { + Posicion[4] ++; + Icono[ Posicion[4]+2209*4 ] = byte; + } else + if( ancho>=32 && ancho <=78 && alto >=152 && alto <= 198 ) { + Posicion[5] ++; + Icono[ Posicion[5]+2209*5 ] = byte; + } else + +//////////////////////////////////////////////////////////////////////////////////// + + if( ancho>=272 && ancho <=318 && alto >=104 && alto <= 150 ) { + Posicion[6] ++; + Icono[ Posicion[6]+2209*6 ] = byte; + } else + if( ancho>=224 && ancho <=270 && alto >=104 && alto <= 150 ) { + Posicion[7] ++; + Icono[ Posicion[7]+2209*7 ] = byte; + } else + if( ancho>=176 && ancho <=222 && alto >=104 && alto <= 150 ) { + Posicion[8] ++; + Icono[ Posicion[8]+2209*8 ] = byte; + } else + if( ancho>=128 && ancho <=174 && alto >=104 && alto <= 150 ) { + Posicion[9] ++; + Icono[ Posicion[9]+2209*9 ] = byte; + } else + if( ancho>=80 && ancho <=126 && alto >=104 && alto <= 150 ) { + Posicion[10] ++; + Icono[ Posicion[10]+2209*10 ] = byte; + } else + if( ancho>=32 && ancho <=78 && alto >=104 && alto <= 150 ) { + Posicion[11] ++; + Icono[ Posicion[11]+2209*11] = byte; + } else + +//////////////////////////////////////////////////////////////////////////////////// + + if( ancho>=272 && ancho <=318 && alto >=56 && alto <= 102 ) { + Posicion[12] ++; + Icono[ Posicion[12]+2209*12 ] = byte; + } else + if( ancho>=224 && ancho <=270 && alto >=56 && alto <= 102 ) { + Posicion[13] ++; + Icono[ Posicion[13]+2209*13 ] = byte; + } else + if( ancho>=176 && ancho <=222 && alto >=56 && alto <= 102 ) { + Posicion[14] ++; + Icono[ Posicion[14]+2209*14 ] = byte; + } else + if( ancho>=128 && ancho <=174 && alto >=56 && alto <= 102 ) { + Posicion[15] ++; + Icono[ Posicion[15]+2209*15 ] = byte; + } else + if( ancho>=80 && ancho <=126 && alto >=56 && alto <= 102 ) { + Posicion[16] ++; + Icono[ Posicion[16]+2209*16 ] = byte; + } else + if( ancho>=32 && ancho <=78 && alto >=56 && alto <= 102 ) { + Posicion[17] ++; + Icono[ Posicion[17]+2209*17] = byte; + } else + +//////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////// +// +// +// +// +// +// +// +// +// +// + if( ancho>=/*272*/279 && ancho <=/*318*/316 && alto >= /*8*/11 && alto <= 29 ) { + // Flecha Izquierda +putpixel( 561 - 51 + (ancho - 279), 99 + 4 + (alto - 11), byte); + } else + if( ancho>=/*272*/276 && ancho <=/*318*/313 && alto >= /*32*/35 && alto <= 52 ) { + // Flecha Derecha +putpixel( 558 - 51 + (ancho-272), 126 - 52 + (alto-32), byte); + } else + if( ancho>=251 && ancho <=270 && alto >= 14 && alto <= 54 ) { + // Flecha Arriba +putpixel( 235 - 25 + (ancho-248), 420 + 2 + (alto-8), byte); +putpixel( 385 - 25 + (ancho-248), 360 + 3 + (alto-8), byte); + } else + if( ancho>=/*224*/227 && ancho <= 245 && alto >= /*8*/12 && alto <= /*54*/49 ) { + // Flecha Abajo +putpixel( 235 - 25 + (ancho-224), 470 - 100 + (alto-8), byte); +putpixel( 385 - 25 + 1 + (ancho-224), 415 -2- 100 + (alto-8), byte); + } else + if( ancho>=180 && ancho <= 199 && alto >= 12 && alto <= 31 ) { + // Punteros del Raton... + PR1++; + if ( raton!=0 && PunteroRaton == 100 ) + P_Raton1[/*(199-ancho) + 20*(31-alto)*/PR1] = byte; +// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte); + } else + if( ancho>=201 && ancho <= 220 && alto >= 12 && alto <= 31 ) { + // Punteros del Raton... + PR2++; + if ( raton!=0 && PunteroRaton == 100 ) + P_Raton2[/*(220-ancho) + 20*(31-alto)*/PR2] = byte; +// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte); + } else + if( ancho>=180 && ancho <= 199 && alto >= 33 && alto <= 52 ) { + // Punteros del Raton... + PR3++; + if ( raton!=0 && PunteroRaton == 100 ) + P_Raton3[/*(199-ancho) + 20*(52-alto)*/PR3] = byte; +// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte); + } else + if( ancho>=201 && ancho <= 220 && alto >= 33 && alto <= 52 ) { + // Punteros del Raton... + PR4++; + if ( raton!=0 && PunteroRaton == 100 ) + P_Raton4[/*(220-ancho) + 20*(52-alto)*/PR4] = byte; +// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte); + } + +///////////////// +// putpixel( (10+ancho), (10+alto), byte); +///////////////// + ancho--; + } + else + { + contador=byte&0x3F; byte=getc(handle); + for(; contador>0; contador--) + { + // *dir_vga++=byte; + if( ancho>=272 && ancho <=318 && alto >=152 && alto <= 198 ) { + Posicion[0] ++; + Icono[ Posicion[0] ] = byte; + } else + if( ancho>=224 && ancho <=270 && alto >=152 && alto <= 198 ) { + Posicion[1] ++; + Icono[ Posicion[1]+2209*1 ] = byte; + } else + if( ancho>=176 && ancho <=222 && alto >=152 && alto <= 198 ) { + Posicion[2] ++; + Icono[ Posicion[2]+2209*2 ] = byte; + } else + if( ancho>=128 && ancho <=174 && alto >=152 && alto <= 198 ) { + Posicion[3] ++; + Icono[ Posicion[3]+2209*3 ] = byte; + } else + if( ancho>=80 && ancho <=126 && alto >=152 && alto <= 198 ) { + Posicion[4] ++; + Icono[ Posicion[4]+2209*4 ] = byte; + } else + if( ancho>=32 && ancho <=78 && alto >=152 && alto <= 198 ) { + Posicion[5] ++; + Icono[ Posicion[5]+2209*5 ] = byte; + } else + + + +//////////////////////////////////////////////////////////////////////////////////// + if( ancho>=272 && ancho <=318 && alto >=104 && alto <= 150 ) { + Posicion[6] ++; + Icono[ Posicion[6]+2209*6 ] = byte; + } else + if( ancho>=224 && ancho <=270 && alto >=104 && alto <= 150 ) { + Posicion[7] ++; + Icono[ Posicion[7]+2209*7 ] = byte; + } else + if( ancho>=176 && ancho <=222 && alto >=104 && alto <= 150 ) { + Posicion[8] ++; + Icono[ Posicion[8]+2209*8 ] = byte; + } else + if( ancho>=128 && ancho <=174 && alto >=104 && alto <= 150 ) { + Posicion[9] ++; + Icono[ Posicion[9]+2209*9 ] = byte; + } else + if( ancho>=80 && ancho <=126 && alto >=104 && alto <= 150 ) { + Posicion[10] ++; + Icono[ Posicion[10]+2209*10 ] = byte; + } else + if( ancho>=32 && ancho <=78 && alto >=104 && alto <= 150 ) { + Posicion[11] ++; + Icono[ Posicion[11]+2209*11] = byte; + } else + +//////////////////////////////////////////////////////////////////////////////////// + if( ancho>=272 && ancho <=318 && alto >=56 && alto <= 102 ) { + Posicion[12] ++; + Icono[ Posicion[12]+2209*12 ] = byte; + } else + if( ancho>=224 && ancho <=270 && alto >=56 && alto <= 102 ) { + Posicion[13] ++; + Icono[ Posicion[13]+2209*13 ] = byte; + } else + if( ancho>=176 && ancho <=222 && alto >=56 && alto <= 102 ) { + Posicion[14] ++; + Icono[ Posicion[14]+2209*14 ] = byte; + } else + if( ancho>=128 && ancho <=174 && alto >=56 && alto <= 102 ) { + Posicion[15] ++; + Icono[ Posicion[15]+2209*15 ] = byte; + } else + if( ancho>=80 && ancho <=126 && alto >=56 && alto <= 102 ) { + Posicion[16] ++; + Icono[ Posicion[16]+2209*16 ] = byte; + } else + if( ancho>=32 && ancho <=78 && alto >=56 && alto <= 102 ) { + Posicion[17] ++; + Icono[ Posicion[17]+2209*17] = byte; + } else + +//////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////// +// +// +// +// +// +// +// +// +// + if( ancho>=/*272*/279 && ancho <=/*318*/316 && alto >= /*8*/11 && alto <= 29 ) { + // Flecha Izquierda +putpixel( 568 - 51 + (ancho - 279), 102 + 4 + (alto - 11), byte); + } else + if( ancho>=/*272*/276 && ancho <=/*318*/313 && alto >= /*32*/35 && alto <= 52 ) { + // Flecha Derecha +putpixel( 565 - 51 + (ancho - 276), 129 - 52 + (alto - 35), byte); + } else + if( ancho>=251 && ancho <=270 && alto >= 14 && alto <= 54 ) { + // Flecha Arriba +putpixel( 235 - 25 + (ancho-248), 420 + 2 + (alto-8), byte); +putpixel( 385 - 25 + (ancho-248), 360 + 3 + (alto-8), byte); + } else + if( ancho>=/*224*/227 && ancho <= 245 && alto >= /*8*/12 && alto <= /*54*/49 ) { + // Flecha Abajo +putpixel( 235 - 25 + 1 + (ancho-224), 470 - 100 + (alto-8), byte); +putpixel( 385 - 25 + 1 + (ancho-224), 415 -2 - 100 + (alto-8), byte); + } else +/* + if( ancho>=180 && ancho <= 220 && alto >= 12 && alto <= 52 ) { + // Punteros del Raton... +// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte); + } +*/ + if( ancho>=180 && ancho <= 199 && alto >= 12 && alto <= 31 ) { + // Punteros del Raton... + PR1++; + if ( raton!=0 && PunteroRaton == 100 ) + P_Raton1[/*(199-ancho) + 20*(31-alto)*/PR1] = byte; +// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte); + } else + if( ancho>=201 && ancho <= 220 && alto >= 12 && alto <= 31 ) { + // Punteros del Raton... + PR2++; + if ( raton!=0 && PunteroRaton == 100 ) + P_Raton2[/*(220-ancho) + 20*(31-alto)*/PR2] = byte; +// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte); + } else + if( ancho>=180 && ancho <= 199 && alto >= 33 && alto <= 52 ) { + // Punteros del Raton... + PR3++; + if ( raton!=0 && PunteroRaton == 100 ) + P_Raton3[/*(199-ancho) + 20*(52-alto)*/PR3] = byte; +// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte); + } else + if( ancho>=201 && ancho <= 220 && alto >= 33 && alto <= 52 ) { + // Punteros del Raton... + PR4++; + if ( raton!=0 && PunteroRaton == 100 ) + P_Raton4[/*(220-ancho) + 20*(52-alto)*/PR4] = byte; +// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte); + } +//////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////// + +///////////////// +// putpixel( (10+ancho), (10+alto), byte); +///////////////// + ancho--; + } + } + } + } + getc(handle); + +// for(n=0; n<256*3; n++) dac[n]=getc(handle) >> 2; + for(n=0; n<256*3; n++) + if( n >= (256-16)*3 ) + dac[n]=getc(handle) >> 2; + else + getc(handle); + + fclose(handle); + +} + +void Coloca_Iconos_Dos_Windows(void){ + +int x, y, i; + +for( y = 0; y <= (46-1); y++ ) + for( x = 1; x <= 46; x++ ) { +// ****** 1 + putpixel( /*397*/512 + x, 12+y, Icono[ x + (47*y) + (2209*11) ] ); + + putpixel( 577 + x, 12+y, Icono[ x + (47*y) + (2209*17) ] ); +// C_Icon++; + } + +} + + +void Coloca_Iconos(int Start_Icon){ + +int x, y, i; +const char Icon_inx[] = { Juegos, Texto, Musica, Dibujo, Util, Base, Hoja, + Red, TC, Scanner, News, Zip, Peli, Varios, CD, Ayuda }; + +Start_Icon--; + +for( y = 0; y <= (46-1); y++ ) + for( x = 1; x <= 46; x++ ) { +// ****** 1 +// putpixel( 447 + x, 77+y, Icono[ x + (47*y) + (2209*Icon_inx[Start_Icon]) ] ); + +// putpixel( 512 + x, 77+y, Icono[ x + (47*y) + (2209*Icon_inx[Start_Icon+1]) ] ); + + putpixel( 577 + x, 77+y, Icono[ x + (47*y) + (2209*Icon_inx[Start_Icon/*+2*/]) ] ); + +// C_Icon++; + } + +} + diff --git a/CD_ICONS.H b/CD_ICONS.H new file mode 100644 index 0000000..0fdee06 --- /dev/null +++ b/CD_ICONS.H @@ -0,0 +1,16 @@ +#define Juegos 0 +#define Musica 1 +#define Texto 2 +#define Dibujo 3 +#define Varios 4 +#define Ayuda 5 +#define CD 6 +#define Scanner 7 +#define Util 8 +#define TC 9 +#define Red 10 +#define Base 12 +#define Hoja 13 +#define News 14 +#define Peli 15 +#define Zip 16 diff --git a/CD_IMG.CPP b/CD_IMG.CPP new file mode 100644 index 0000000..87214ad --- /dev/null +++ b/CD_IMG.CPP @@ -0,0 +1,479 @@ +/***************************************************************/ +/* */ +/* Conversin de fuentes de MAKE BOTON en ASCII a fuentes */ +/* para CPP, que pueden ser compilados junto al programa. */ +/* */ +/***************************************************************/ +/* */ +/* MAKE BOTON es un programa realizado por Jos David Guilln */ +/* MB a CPP es una utilidad complementaria a Make Boton por */ +/* Jos David Guilln... */ +/* */ +/***************************************************************/ +/* */ +/* GRACIAS POR UTILIZAR MI SOFTWARE... */ +/* */ +/* JOS DAVID GUILLN (c) 1995 */ +/* */ +/***************************************************************/ + + + +// Debe indicar el directorio exacto de la Cabecera de MAKE BOTON +#include "..\libs\make_bot\Make_bot.h" +#include +#include +#include +#include + + + +extern int vez, memoria_asignada, Secuencias, *n_Botones_Secuencia; +/*extern*/ struct Make_Boton { int Up, Left, Down, Right; + unsigned char Cdf, Cb1, Cb2; + unsigned char Ab, Pb; + unsigned char Isc, Sc; + }; + +extern struct Make_Boton far *Botones; +struct Make_Boton Bot_Static; + + + +extern void Libera_Memoria(void);extern void Imprime_Boton(int D_Bord, struct Make_Boton Bot_Imp); + + +// Esta funcin debe ser llamada para la inicializacion de los +// botones en lugar de CARGA_BOTONES(...). +// Para cargar los botones con parametro 0 y para imprimir +// imprimir los estaticos con parametro [ n de secuencia ] +int /*far _cdecl*/ Fichero_cd_img(char Dinamicos_Estaticos); + +int /*far _cdecl*/ Fichero_cd_img(char Dinamicos_Estaticos) { + +static char vez = 0; +long SiZe_BoToN = 0; + + switch(Dinamicos_Estaticos) { + + case 0: + if( vez == 0 ) { + vez = 1; + memoria_asignada = 0; + atexit( Libera_Memoria ); + } + if ( memoria_asignada == 1 ) { + free(n_Botones_Secuencia); + farfree(Botones); + memoria_asignada = 0; + } +/* + long SiZe_BoToN = sizeof( struct Make_Boton ); + + if ( (Botones = (struct Make_Boton far *)farmalloc( SiZe_BoToN )) == NULL) + return SIN_MEMORIA; + memoria_asignada = 1; + + Secuencias = 3; + if (( n_Botones_Secuencia = (int *) malloc( sizeof(int)*(Secuencias+1) ) ) == NULL) { + closegraph(); + printf("\nNo Hay suficiente Memoria, ni para un Boton\n\n"); + return SIN_MEMORIA; + } + n_Botones_Secuencia[1 - 1] = 24; + SiZe_BoToN += ( sizeof( struct Make_Boton ) * 24); + if ( (Botones = (struct Make_Boton far *)farrealloc(Botones, SiZe_BoToN )) == NULL) { + Secuencias = 1; + return SIN_MEMORIA; + } + memoria_asignada = 1; +*/ + Secuencias = 3; + if (( n_Botones_Secuencia = (int *) malloc( sizeof(int)*(Secuencias+1) ) ) == NULL) { + closegraph(); + printf("\nNo Hay suficiente Memoria, ni para un Boton\n\n"); + return SIN_MEMORIA; + } + n_Botones_Secuencia[0] = 24; + n_Botones_Secuencia[1] = 10; + n_Botones_Secuencia[2] = 2; + n_Botones_Secuencia[3] = 2; + + if ( (Botones = (struct Make_Boton far *)farmalloc( sizeof( struct Make_Boton ) * 40 )) == NULL) + return SIN_MEMORIA; + + Botones [0].Left = 508; Botones [0].Up = 8;Botones [0]. Right = 562;Botones [0]. Down = 62; + Botones [0]. Cdf = 253; Botones [0]. Cb1 = 255; Botones [0]. Cb2 = 254; Botones [0]. Ab = 3; Botones [0]. Pb = 1; Botones [0]. Isc = 0; Botones [0]. Sc = 32; + Botones [1].Left = 573; Botones [1].Up = 8;Botones [1]. Right = 627;Botones [1]. Down = 62; + Botones [1]. Cdf = 253; Botones [1]. Cb1 = 255; Botones [1]. Cb2 = 254; Botones [1]. Ab = 3; Botones [1]. Pb = 1; Botones [1]. Isc = 0; Botones [1]. Sc = 17; + Botones [2].Left = 573; Botones [2].Up = 73;Botones [2]. Right = 627;Botones [2]. Down = 127; + Botones [2]. Cdf = 253; Botones [2]. Cb1 = 255; Botones [2]. Cb2 = 254; Botones [2]. Ab = 3; Botones [2]. Pb = 1; Botones [2]. Isc = 0; Botones [2]. Sc = 120; + Botones [3].Left = 508; Botones [3].Up = 73;Botones [3]. Right = 562;Botones [3]. Down = 99; + Botones [3]. Cdf = 253; Botones [3]. Cb1 = 255; Botones [3]. Cb2 = 254; Botones [3]. Ab = 2; Botones [3]. Pb = 1; Botones [3]. Isc = 0; Botones [3]. Sc = 75; + Botones [4].Left = 508; Botones [4].Up = 103;Botones [4]. Right = 562;Botones [4]. Down = 127; + Botones [4]. Cdf = 253; Botones [4]. Cb1 = 255; Botones [4]. Cb2 = 254; Botones [4]. Ab = 2; Botones [4]. Pb = 1; Botones [4]. Isc = 0; Botones [4]. Sc = 77; + Botones [5].Left = 13; Botones [5].Up = 235;Botones [5]. Right = 198;Botones [5]. Down = 255; + Botones [5]. Cdf = 253; Botones [5]. Cb1 = 255; Botones [5]. Cb2 = 254; Botones [5]. Ab = 2; Botones [5]. Pb = 1; Botones [5]. Isc = 0; Botones [5]. Sc = 104; + Botones [6].Left = 13; Botones [6].Up = 258;Botones [6]. Right = 198;Botones [6]. Down = 278; + Botones [6]. Cdf = 253; Botones [6]. Cb1 = 255; Botones [6]. Cb2 = 254; Botones [6]. Ab = 2; Botones [6]. Pb = 1; Botones [6]. Isc = 0; Botones [6]. Sc = 105; + Botones [7].Left = 13; Botones [7].Up = 281;Botones [7]. Right = 198;Botones [7]. Down = 301; + Botones [7]. Cdf = 253; Botones [7]. Cb1 = 255; Botones [7]. Cb2 = 254; Botones [7]. Ab = 2; Botones [7]. Pb = 1; Botones [7]. Isc = 0; Botones [7]. Sc = 106; + Botones [8].Left = 13; Botones [8].Up = 304;Botones [8]. Right = 198;Botones [8]. Down = 324; + Botones [8]. Cdf = 253; Botones [8]. Cb1 = 255; Botones [8]. Cb2 = 254; Botones [8]. Ab = 2; Botones [8]. Pb = 1; Botones [8]. Isc = 0; Botones [8]. Sc = 107; + Botones [9].Left = 13; Botones [9].Up = 327;Botones [9]. Right = 198;Botones [9]. Down = 347; + Botones [9]. Cdf = 253; Botones [9]. Cb1 = 255; Botones [9]. Cb2 = 254; Botones [9]. Ab = 2; Botones [9]. Pb = 1; Botones [9]. Isc = 0; Botones [9]. Sc = 108; + Botones [10].Left = 13; Botones [10].Up = 350;Botones [10]. Right = 198;Botones [10]. Down = 370; + Botones [10]. Cdf = 253; Botones [10]. Cb1 = 255; Botones [10]. Cb2 = 254; Botones [10]. Ab = 2; Botones [10]. Pb = 1; Botones [10]. Isc = 0; Botones [10]. Sc = 109; + Botones [11].Left = 13; Botones [11].Up = 373;Botones [11]. Right = 198;Botones [11]. Down = 393; + Botones [11]. Cdf = 253; Botones [11]. Cb1 = 255; Botones [11]. Cb2 = 254; Botones [11]. Ab = 2; Botones [11]. Pb = 1; Botones [11]. Isc = 0; Botones [11]. Sc = 110; + Botones [12].Left = 13; Botones [12].Up = 396;Botones [12]. Right = 198;Botones [12]. Down = 416; + Botones [12]. Cdf = 253; Botones [12]. Cb1 = 255; Botones [12]. Cb2 = 254; Botones [12]. Ab = 2; Botones [12]. Pb = 1; Botones [12]. Isc = 0; Botones [12]. Sc = 111; + Botones [13].Left = 13; Botones [13].Up = 419;Botones [13]. Right = 198;Botones [13]. Down = 439; + Botones [13]. Cdf = 253; Botones [13]. Cb1 = 255; Botones [13]. Cb2 = 254; Botones [13]. Ab = 2; Botones [13]. Pb = 1; Botones [13]. Isc = 0; Botones [13]. Sc = 112; + Botones [14].Left = 13; Botones [14].Up = 442;Botones [14]. Right = 198;Botones [14]. Down = 462; + Botones [14]. Cdf = 253; Botones [14]. Cb1 = 255; Botones [14]. Cb2 = 254; Botones [14]. Ab = 2; Botones [14]. Pb = 1; Botones [14]. Isc = 0; Botones [14]. Sc = 113; + Botones [15].Left = 390; Botones [15].Up = 420;Botones [15]. Right = 505;Botones [15]. Down = 446; + Botones [15]. Cdf = 253; Botones [15]. Cb1 = 255; Botones [15]. Cb2 = 254; Botones [15]. Ab = 2; Botones [15]. Pb = 2; Botones [15]. Isc = 0; Botones [15]. Sc = 23; + Botones [16].Left = 510; Botones [16].Up = 420;Botones [16]. Right = 630;Botones [16]. Down = 446; + Botones [16]. Cdf = 253; Botones [16]. Cb1 = 255; Botones [16]. Cb2 = 254; Botones [16]. Ab = 2; Botones [16]. Pb = 2; Botones [16]. Isc = 0; Botones [16]. Sc = 46; + Botones [17].Left = 390; Botones [17].Up = 449;Botones [17]. Right = 505;Botones [17]. Down = 475; + Botones [17]. Cdf = 253; Botones [17]. Cb1 = 255; Botones [17]. Cb2 = 254; Botones [17]. Ab = 2; Botones [17]. Pb = 2; Botones [17]. Isc = 0; Botones [17]. Sc = 18; + Botones [18].Left = 510; Botones [18].Up = 449;Botones [18]. Right = 630;Botones [18]. Down = 475; + Botones [18]. Cdf = 253; Botones [18]. Cb1 = 255; Botones [18]. Cb2 = 254; Botones [18]. Ab = 2; Botones [18]. Pb = 2; Botones [18]. Isc = 0; Botones [18]. Sc = 31; + Botones [19].Left = 210; Botones [19].Up = 370;Botones [19]. Right = 235;Botones [19]. Down = 420; + Botones [19]. Cdf = 253; Botones [19]. Cb1 = 255; Botones [19]. Cb2 = 254; Botones [19]. Ab = 2; Botones [19]. Pb = 1; Botones [19]. Isc = 0; Botones [19]. Sc = 72; + Botones [20].Left = 210; Botones [20].Up = 425;Botones [20]. Right = 235;Botones [20]. Down = 470; + Botones [20]. Cdf = 253; Botones [20]. Cb1 = 255; Botones [20]. Cb2 = 254; Botones [20]. Ab = 2; Botones [20]. Pb = 1; Botones [20]. Isc = 0; Botones [20]. Sc = 80; + Botones [21].Left = 360; Botones [21].Up = 310;Botones [21]. Right = 385;Botones [21]. Down = 360; + Botones [21]. Cdf = 253; Botones [21]. Cb1 = 255; Botones [21]. Cb2 = 254; Botones [21]. Ab = 2; Botones [21]. Pb = 1; Botones [21]. Isc = 0; Botones [21]. Sc = 73; + Botones [22].Left = 360; Botones [22].Up = 365;Botones [22]. Right = 385;Botones [22]. Down = 415; + Botones [22]. Cdf = 253; Botones [22]. Cb1 = 255; Botones [22]. Cb2 = 254; Botones [22]. Ab = 2; Botones [22]. Pb = 1; Botones [22]. Isc = 0; Botones [22]. Sc = 81; + Botones [23].Left = 360; Botones [23].Up = 210;Botones [23]. Right = 385;Botones [23]. Down = 305; + Botones [23]. Cdf = 253; Botones [23]. Cb1 = 255; Botones [23]. Cb2 = 254; Botones [23]. Ab = 2; Botones [23]. Pb = 1; Botones [23]. Isc = 0; Botones [23]. Sc = 47; +/* + n_Botones_Secuencia[2 - 1] = 10; + SiZe_BoToN += ( sizeof( struct Make_Boton ) * 10); + if ( (Botones = (struct Make_Boton far *)farrealloc(Botones, SiZe_BoToN )) == NULL) { + Secuencias = 2; + return SIN_MEMORIA; + } + memoria_asignada = 1; +*/ + Botones [24].Left = 547; Botones [24].Up = 390;Botones [24]. Right = 623;Botones [24]. Down = 410; + Botones [24]. Cdf = 253; Botones [24]. Cb1 = 255; Botones [24]. Cb2 = 254; Botones [24]. Ab = 2; Botones [24]. Pb = 2; Botones [24]. Isc = 0; Botones [24]. Sc = 46; + Botones [25].Left = 471; Botones [25].Up = 390;Botones [25]. Right = 545;Botones [25]. Down = 410; + Botones [25]. Cdf = 253; Botones [25]. Cb1 = 255; Botones [25]. Cb2 = 254; Botones [25]. Ab = 2; Botones [25]. Pb = 2; Botones [25]. Isc = 0; Botones [25]. Sc = 31; + Botones [26].Left = 396; Botones [26].Up = 390;Botones [26]. Right = 469;Botones [26]. Down = 410; + Botones [26]. Cdf = 253; Botones [26]. Cb1 = 255; Botones [26]. Cb2 = 254; Botones [26]. Ab = 2; Botones [26]. Pb = 2; Botones [26]. Isc = 0; Botones [26]. Sc = 30; + Botones [27].Left = 396; Botones [27].Up = 149;Botones [27]. Right = 411;Botones [27]. Down = 165; + Botones [27]. Cdf = 253; Botones [27]. Cb1 = 255; Botones [27]. Cb2 = 254; Botones [27]. Ab = 1; Botones [27]. Pb = 2; Botones [27]. Isc = 0; Botones [27]. Sc = 32; + Botones [28].Left = 396; Botones [28].Up = 170;Botones [28]. Right = 411;Botones [28]. Down = 186; + Botones [28]. Cdf = 253; Botones [28]. Cb1 = 255; Botones [28]. Cb2 = 254; Botones [28]. Ab = 1; Botones [28]. Pb = 2; Botones [28]. Isc = 0; Botones [28]. Sc = 18; + Botones [29].Left = 396; Botones [29].Up = 191;Botones [29]. Right = 411;Botones [29]. Down = 207; + Botones [29]. Cdf = 253; Botones [29]. Cb1 = 255; Botones [29]. Cb2 = 254; Botones [29]. Ab = 1; Botones [29]. Pb = 2; Botones [29]. Isc = 0; Botones [29]. Sc = 23; + Botones [30].Left = 396; Botones [30].Up = 212;Botones [30]. Right = 411;Botones [30]. Down = 228; + Botones [30]. Cdf = 253; Botones [30]. Cb1 = 255; Botones [30]. Cb2 = 254; Botones [30]. Ab = 1; Botones [30]. Pb = 2; Botones [30]. Isc = 0; Botones [30]. Sc = 24; + Botones [31].Left = 396; Botones [31].Up = 233;Botones [31]. Right = 411;Botones [31]. Down = 249; + Botones [31]. Cdf = 253; Botones [31]. Cb1 = 255; Botones [31]. Cb2 = 254; Botones [31]. Ab = 1; Botones [31]. Pb = 2; Botones [31]. Isc = 0; Botones [31]. Sc = 33; + Botones [32].Left = 396; Botones [32].Up = 254;Botones [32]. Right = 411;Botones [32]. Down = 270; + Botones [32]. Cdf = 253; Botones [32]. Cb1 = 255; Botones [32]. Cb2 = 254; Botones [32]. Ab = 1; Botones [32]. Pb = 2; Botones [32]. Isc = 0; Botones [32]. Sc = 49; + Botones [33].Left = 396; Botones [33].Up = 275;Botones [33]. Right = 623;Botones [33]. Down = 310; + Botones [33]. Cdf = 253; Botones [33]. Cb1 = 255; Botones [33]. Cb2 = 254; Botones [33]. Ab = 3; Botones [33]. Pb = 2; Botones [33]. Isc = 0; Botones [33]. Sc = 50; +/* + n_Botones_Secuencia[3 - 1] = 2; + SiZe_BoToN += ( sizeof( struct Make_Boton ) * 2); + if ( (Botones = (struct Make_Boton far *)farrealloc(Botones, SiZe_BoToN )) == NULL) { + Secuencias = 3; + return SIN_MEMORIA; + } + memoria_asignada = 1; +*/ + Botones [34].Left = 123; Botones [34].Up = 165;Botones [34]. Right = 516;Botones [34]. Down = 185; + Botones [34]. Cdf = 240; Botones [34]. Cb1 = 255; Botones [34]. Cb2 = 254; Botones [34]. Ab = 2; Botones [34]. Pb = 1; Botones [34]. Isc = 0; Botones [34]. Sc = 18; + Botones [35].Left = 500; Botones [35].Up = 190;Botones [35]. Right = 516;Botones [35]. Down = 330; + Botones [35]. Cdf = 253; Botones [35]. Cb1 = 255; Botones [35]. Cb2 = 254; Botones [35]. Ab = 2; Botones [35]. Pb = 1; Botones [35]. Isc = 0; Botones [35]. Sc = 46; +/* + n_Botones_Secuencia[4 - 1] = 2; + SiZe_BoToN += ( sizeof( struct Make_Boton ) * 2); + if ( (Botones = (struct Make_Boton far *)farrealloc(Botones, SiZe_BoToN )) == NULL) { + Secuencias = 4; + return SIN_MEMORIA; + } + memoria_asignada = 1; +*/ + Botones [36].Left = 204; Botones [36].Up = 274;Botones [36]. Right = 276;Botones [36]. Down = 291; + Botones [36]. Cdf = 253; Botones [36]. Cb1 = 254; Botones [36]. Cb2 = 255; Botones [36]. Ab = 2; Botones [36]. Pb = 1; Botones [36]. Isc = 0; Botones [36]. Sc = 30; + Botones [37].Left = 364; Botones [37].Up = 274;Botones [37]. Right = 436;Botones [37]. Down = 291; + Botones [37]. Cdf = 253; Botones [37]. Cb1 = 254; Botones [37]. Cb2 = 255; Botones [37]. Ab = 2; Botones [37]. Pb = 1; Botones [37]. Isc = 0; Botones [37]. Sc = 46; + break; + case 1: + Bot_Static.Left = 6; Bot_Static.Up = 225; Bot_Static.Right = 205; Bot_Static.Down = 470; Bot_Static.Cdf = 0; Bot_Static.Cb1 = 56; Bot_Static.Cb2 = 63; Bot_Static.Ab = 1; Bot_Static.Pb = 2; + Imprime_Boton(0, Bot_Static); + Bot_Static.Left = 9; Bot_Static.Up = 228; Bot_Static.Right = 202; Bot_Static.Down = 467; Bot_Static.Cdf = 0; Bot_Static.Cb1 = 63; Bot_Static.Cb2 = 56; Bot_Static.Ab = 1; Bot_Static.Pb = 2; + Imprime_Boton(0, Bot_Static); + Bot_Static.Left = 390; Bot_Static.Up = 135; Bot_Static.Right = 630; Bot_Static.Down = 415; Bot_Static.Cdf = 0; Bot_Static.Cb1 = 56; Bot_Static.Cb2 = 63; Bot_Static.Ab = 1; Bot_Static.Pb = 2; + Imprime_Boton(0, Bot_Static); + Bot_Static.Left = 393; Bot_Static.Up = 138; Bot_Static.Right = 627; Bot_Static.Down = 412; Bot_Static.Cdf = 240; Bot_Static.Cb1 = 63; Bot_Static.Cb2 = 56; Bot_Static.Ab = 1; Bot_Static.Pb = 2; + Imprime_Boton(1, Bot_Static); + break; + case 2: + settextstyle( 2, 0, 6); + setcolor(255); outtextxy( 390, 426, " _" ); + setcolor(0); outtextxy( 389, 425, " _" ); + setcolor(255); outtextxy( 391, 424, " Instalar" ); + setcolor(0); outtextxy( 390, 423, " Instalar" ); + setcolor(255); outtextxy( 516, 426, " _" ); + setcolor(0); outtextxy( 515, 425, " _" ); + setcolor(255); outtextxy( 516, 424, " Configurar" ); + setcolor(0); outtextxy( 515, 423, " Configurar" ); + setcolor(255); outtextxy( 391, 453, " _" ); + setcolor(0); outtextxy( 390, 452, " _" ); + setcolor(255); outtextxy( 391, 451, " Ejecutar" ); + setcolor(0); outtextxy( 390, 450, " Ejecutar" ); + setcolor(255); outtextxy( 511, 453, " _" ); + setcolor(0); outtextxy( 511, 452, " _" ); + setcolor(255); outtextxy( 511, 451, " Salir" ); + setcolor(0); outtextxy( 510, 450, " Salir" ); + settextstyle( 2, 1, 6); + setcolor(255); outtextxy( 364, 289, "_" ); + setcolor(0); outtextxy( 363, 288, "_" ); + settextstyle( 2, 1, 5); + setcolor(255); outtextxy( 364, 219, "Ver Imagen" ); + setcolor(0); outtextxy( 363, 218, "Ver Imagen" ); + break; + case 4: + settextstyle( 2, 0, 5); + setcolor(251); outtextxy( 413, 149, " _" ); + setcolor(254); outtextxy( 412, 148, " _" ); + setcolor(255); outtextxy( 414, 148, " Salir despues de EJECUTAR." ); + setcolor(254); outtextxy( 413, 147, " Salir despues de EJECUTAR." ); + setcolor(251); outtextxy( 413, 170, " _" ); + setcolor(254); outtextxy( 412, 169, " _" ); + setcolor(255); outtextxy( 414, 169, " Desactivar Sonidos." ); + setcolor(254); outtextxy( 413, 168, " Desactivar Sonidos." ); + setcolor(251); outtextxy( 413, 191, " _" ); + setcolor(254); outtextxy( 412, 190, " _" ); + setcolor(255); outtextxy( 414, 190, " Instalacion Automtica" ); + setcolor(254); outtextxy( 413, 189, " Instalacion Automtica" ); + setcolor(251); outtextxy( 413, 212, " _" ); + setcolor(254); outtextxy( 412, 211, " _" ); + setcolor(255); outtextxy( 414, 211, " Comprobar espacio libre" ); + setcolor(254); outtextxy( 413, 210, " Comprobar espacio libre" ); + setcolor(251); outtextxy( 413, 230, " _" ); + setcolor(254); outtextxy( 412, 229, " _" ); + setcolor(255); outtextxy( 414, 229, " Formatear al Instalar" ); + setcolor(254); outtextxy( 413, 228, " Formatear al Instalar" ); + settextstyle( 2, 0, 4); + setcolor(255); outtextxy( 414, 242, " ( solo en unidades A: y B: )" ); + setcolor(254); outtextxy( 413, 241, " ( solo en unidades A: y B: )" ); + settextstyle( 2, 0, 5); + setcolor(251); outtextxy( 413, 254, " _" ); + setcolor(254); outtextxy( 412, 253, " _" ); + setcolor(255); outtextxy( 414, 253, " Sin imagen de Fondo" ); + setcolor(254); outtextxy( 413, 252, " Sin imagen de Fondo" ); + break; + case 5: + settextstyle( 2, 0, 5); + setcolor(251); outtextxy( 547, 392, " _" ); + setcolor(0); outtextxy( 547, 391, " _" ); + setcolor(255); outtextxy( 547, 391, " Cancelar" ); + setcolor(0); outtextxy( 546, 390, " Cancelar" ); + setcolor(251); outtextxy( 471, 392, " _" ); + setcolor(0); outtextxy( 470, 391, " _" ); + setcolor(255); outtextxy( 471, 391, " Salvar" ); + setcolor(0); outtextxy( 470, 390, " Salvar" ); + setcolor(251); outtextxy( 396, 392, " _" ); + setcolor(0); outtextxy( 395, 391, " _" ); + setcolor(255); outtextxy( 396, 391, " Anterior" ); + setcolor(0); outtextxy( 395, 390, " Anterior" ); + setcolor(251); outtextxy( 394, 278, " _" ); + setcolor(0); outtextxy( 393, 277, " _" ); + setcolor(255); outtextxy( 396, 277, " Imprimir icono actual sin" ); + setcolor(0); outtextxy( 395, 276, " Imprimir icono actual sin" ); + setcolor(255); outtextxy( 396, 291, " incluir los comentarios." ); + setcolor(0); outtextxy( 395, 290, " incluir los comentarios." ); + break; + case 10: + Bot_Static.Left = 118; Bot_Static.Up = 160; Bot_Static.Right = 521; Bot_Static.Down = 335; Bot_Static.Cdf = 253; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 2; + Imprime_Boton(1, Bot_Static); + break; + case 11: + setcolor(255); settextstyle( 2, 1, 4); outtextxy( 504, 190, " _ " ); + setcolor(240); outtextxy( 503, 191, " _ " ); + setcolor(255); outtextxy( 501, 190, "<- CANCELAR -> " ); + setcolor(240); outtextxy( 502, 191, "<- CANCELAR -> " ); + setcolor(252); settextstyle( 2, 0, 6); outtextxy( 123, 165, " Ejecutar desde el CDROM" ); + setcolor(240); settextstyle( 2, 0, 4); outtextxy( 123, 190, "NOTA IMPORTANTE:" ); + outtextxy( 123, 200, " Hay cuatro circunstancias por las que los programas incluidos" ); + outtextxy( 123, 210, " en este CDROM podran NO FUNCIONAR si se ejcutan directamente" ); + outtextxy( 123, 220, " usando la opcin EJECUTAR:" ); + setcolor(251); outtextxy( 121, 220, " EJECUTAR" ); + setcolor(240); outtextxy( 123, 230, " Programas con requerimientos de memoria superior al espacio" ); + outtextxy( 123, 240, " libre dejado por los drivers de acceso al CDROM." ); + outtextxy( 123, 250, " Programas que nesecitan escribir algn tipo de configuracin" ); + outtextxy( 123, 260, " u otros datos en el propio disco." ); + outtextxy( 123, 270, " Programas con animaciones o accesos muy rpidos a disco duro" ); + outtextxy( 123, 280, " Programas cuyos nombres incluyan carcteres no aceptados por" ); + outtextxy( 123, 290, " el estandar ISO." ); + outtextxy( 123, 300, " Si por cualquiera de las causas anteriores no funcionase el" ); + outtextxy( 123, 310, " programa elegido: recomendamos proceda a su INSTALACION a HD." ); + setcolor(251); outtextxy( 120, 310, " INSTALACION" ); + setcolor(240); outtextxy( 123, 320, " usando la opcin correspondiente." ); + break; + case 20: + Bot_Static.Left = 200; Bot_Static.Up = 212; Bot_Static.Right = 440; Bot_Static.Down = 267; Bot_Static.Cdf = 251; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 205; Bot_Static.Up = 217; Bot_Static.Right = 435; Bot_Static.Down = 262; Bot_Static.Cdf = 253; Bot_Static.Cb1 = 254; Bot_Static.Cb2 = 255; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, "Iniciar instalacin en:" ); + Bot_Static.Left = 210; Bot_Static.Up = 240; Bot_Static.Right = 430; Bot_Static.Down = 257; Bot_Static.Cdf = 240; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 200; Bot_Static.Up = 270; Bot_Static.Right = 280; Bot_Static.Down = 295; Bot_Static.Cdf = 251; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 360; Bot_Static.Up = 270; Bot_Static.Right = 440; Bot_Static.Down = 295; Bot_Static.Cdf = 251; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + break; + case 21: + settextstyle( 2, 0, 5); + setcolor(255); + outtextxy( 200, 274, " Aceptar" ); + outtextxy( 340, 274, " Cancelar" ); + setcolor(240); + outtextxy( 341, 275, " Cancelar" ); + outtextxy( 201, 275, " Aceptar" ); + break; +/////////////////////////// Fundido de Case's +// case 100: +// case 101: +// case 102: +// case 103: +// case 104: +// case 105: +// case 106: +// case 107: + case 108: +// case 109: +// case 110: +// case 111: + case 112: + case 113: + case 114: + case 115: + case 116: + Bot_Static.Left = 200; Bot_Static.Up = 212; Bot_Static.Right = 440; Bot_Static.Down = 267; Bot_Static.Cdf = 251; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 205; Bot_Static.Up = 217; Bot_Static.Right = 435; Bot_Static.Down = 262; Bot_Static.Cdf = 253; Bot_Static.Cb1 = 254; Bot_Static.Cb2 = 255; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + + + setcolor(240); settextstyle( 2, 0, 5); + + switch(Dinamicos_Estaticos) { + +// case 100: +// outtextxy( 210, 222, " Error en asignacin" ); +// outtextxy( 210, 242, " de memoria CONVENCIONAL" ); +// break; + +// case 101: +// +// outtextxy( 210, 222, " Error en asignacin" ); +// outtextxy( 210, 242, " de memoria XMS" ); +// break; + +// case 102: +// +// outtextxy( 210, 222, " Error cargando ICONOS" ); +// outtextxy( 210, 242, " y punteros de RATON..." ); +// break; + +// case 103: +// +// outtextxy( 210, 222, " Error cargando PCX" ); +// outtextxy( 210, 242, " de Fondo." ); +// break; + +// case 104: +// +// outtextxy( 210, 222, " Error cargando ficheros" ); +// outtextxy( 210, 242, " de sonido WAV" ); +// break; + +// case 105: +// +// outtextxy( 210, 222, " Error intentando ejecutar" ); +// outtextxy( 210, 242, " el programa deseado..." ); +// break; + +// case 106: +// +// outtextxy( 210, 222, " Error intentando ejecutar" ); +// outtextxy( 210, 242, " el programa deseado..." ); +// break; + +// case 107: +// +// outtextxy( 210, 222, " ERROR D E TIPO" ); +// outtextxy( 210, 242, " D E S C O N O C I D O" ); +// break; + + case 108: + + outtextxy( 210, 222, " ERROR ABRIENDO" ); + outtextxy( 210, 242, " FICHERO" ); + break; + +// case 109: +// +// outtextxy( 210, 222, " ERROR de ESCRITURA" ); +// outtextxy( 210, 242, " DISCO PROTEGIDO." ); +// break; + +// case 110: +// +// outtextxy( 210, 222, " ERROR de LECTURA" ); +// outtextxy( 210, 242, " POSIBLE DAO FSICO" ); +// break; + +// case 111: +// +// outtextxy( 210, 222, " ERROR INTENTANDO" ); +// outtextxy( 210, 242, " CERRAR FICHERO" ); +// break; + + case 112: + + outtextxy( 210, 222, " ERROR INTENTANDO" ); + outtextxy( 210, 242, " CARGAR BOTONES" ); + break; + + case 113: + + outtextxy( 210, 222, " EL FICHERO O DIRECTORIO A" ); + outtextxy( 210, 242, "INSTALAR NO SE HA ENCONTRADO" ); + break; + + case 114: + + outtextxy( 210, 222, " EL FICHERO O DIRECTORIO A" ); + outtextxy( 210, 242, "EJECUTAR NO SE HA ENCONTRADO" ); + break; + + case 115: + + outtextxy( 210, 222, " LA IMPRESORA NO ESTA LISTA" ); + outtextxy( 210, 242, "< << OPERACION CANCELA >> >" ); + break; + + case 116: + + outtextxy( 210, 222, " IMPRIMIENDO..." ); + outtextxy( 210, 242, " -JD-" ); + break; + } + break; + default: + break; + } +return 1; +} diff --git a/CD_IN/CD_CFG.CPP b/CD_IN/CD_CFG.CPP new file mode 100644 index 0000000..05a8c12 --- /dev/null +++ b/CD_IN/CD_CFG.CPP @@ -0,0 +1,55 @@ +#include +#include +#include +#include // Para getch(); +#include // Para outtextxy(...); y cleardevice(...); +#include "..\..\..\jd_lib\make_bot.h" // Fuciones de MAKE_BOTON +#include "cd_icons.h" + +#define DOS 1 +#define WINDOWS 2 + + +void Init_CFG(void); + +void Init_CFG(void){ + int ok = 0; + +setfillstyle(SOLID_FILL, 240); +bar(395, 140, 625, 410); + +Imprime_Estaticos( 4, "cd_out.img"); // Imprime botones estaticos 'Seccion 4' +Imprime_Secuencia(2); // Imprime secuencia 1. +Imprime_Estaticos( 5, "cd_out.img"); // Imprime textos estaticos 'Seccion 5' + +while(!ok){ // Bucle infinito + + switch( Comprueba_Secuencia( 2 ) ) { // 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 + getch(); // La eliminamos + break; + case -1: // Hay una tecla especial en BUFFER + getch(); // La eliminamos + break; + // Boton Cancelar + case 1: + ok = 1; + break; + default: + while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER + break; + } + +} + +setfillstyle(SOLID_FILL, 240); +bar(395, 140, 625, 410); + return; +} + + diff --git a/CD_IN/CD_D01.DAT b/CD_IN/CD_D01.DAT new file mode 100644 index 0000000000000000000000000000000000000000..0349676bb6240e954db68f96768d65c4f65c06fa GIT binary patch literal 12737 zcmeHNO>Y}F5Z&ZbG(Z5KdzxbcxQ@|dZmQ)PGU__0?V<$?7}PGKFy)d8cUOpV^e?gN z{?NYJl}LSX3#Bjuq~OBVj)ub_^|X4J;mmV-M&Ho)bTqsT0?t6}D7HxGei*F(DU)pqczcCHxfX?R~B^>RhIQm z_XEksLlG4cK2cb_GU4N)hzjk`xqJEe`uaU{QFUE_t(00B>Jv#Bkdp35p)=aMd?!mu zV52{`W?iVV(W0=9X>BUpheom_Ky`VptdXFyp{nHHg60?idpWDMpt=EV*{QPBxm-@Q z2D3q71+!gk3(%UzKe5@=R%)!YDg+$yDpkXrSHmN*NA@IiE=(?a35p#ZS5ukSBFDxZ z?@G<2t5vbWYUvS+K3QIw@bOSYg@jKO7O#9feE2utULTiCS2I~F>WxU7KvJCiM4ZweYnJpq>n_TKHNSnC3w<@<4 zSf~<)DQL0e0Gr_H%xiWUqq8h~BV9{mY9>fkw!Ez!cD}M8e0jusg=EtUO*@eAN%-_3 z@MWJ3&qg7ttCno#$9e>s*v*l>Ky`x>$t2)oYkQs(qLuOAV8BwI!iBpI=}j5_!1P` zmO9`EG}{s;d?O51C50{WN5j?kB?W!530TCWgij2WpiB4!EMn4b_;kNky#D_B`t<7f z%t~L)h9h3gncUneOfDE z5t9-=F;s#s;S;ckNxR{*pa$H0Umc>l-KZ|sY%)~F(vRG1w@q~p{koDIsuNt31(D&M zb!q~BdoQNkSeM#yW8b9L?e>*=^IjqO>4l~pNcj98@$pm_qPk+d-WKdlHiZb){R2c+ B*TMh* literal 0 HcmV?d00001 diff --git a/CD_IN/CD_D02.DAT b/CD_IN/CD_D02.DAT new file mode 100644 index 0000000000000000000000000000000000000000..009171dbd2390cf0005c275f9a1a7b9e2ab78875 GIT binary patch literal 3924 zcmeH}!AiqG5QeuP2!+0Yr~d^k^y0yrSP;Be(9%mmLNci?hoZ=kU!^gYv13Nu*#nECQ*iDIv@(T--h z+@FCWy|L=-rikD9R|_>iBMN*1pF;%N`!=@!v{+qE=U+lIeVJbjQZ@fh9db_g6Ms|c zSR`{TZCzE-9_B*_S+0j!C5t96@M)q_t_40NizaVJt6GvezNe++q|uSW#7fV1tnIC? gX#>@@a9mX$^(gSE6RF05PnAbK`rmwZ#I6nZ6D?p3Q~&?~ literal 0 HcmV?d00001 diff --git a/CD_IN/CD_D03.DAT b/CD_IN/CD_D03.DAT new file mode 100644 index 0000000000000000000000000000000000000000..1cf96a51a28540e2ab31d35b0a7adf223a915095 GIT binary patch literal 3924 zcmeH}(Q3jl6o%t&27)iJtMdRlggt?*b95lebnJ4RHPMBoO-Z8AUHU3}(Vg0^s}e7S z-Yvc9$w~MR{b)ZrfIeKq2=1e|`OAum0rc6$*ORt;h;S!4JZ_~@`>f2N;G0XLdaQRv z=f@MJ#Kvfrp@LTJfY7`W~K)AlQE|XNKT!5Zl ziCkO8Ts-Q7yjE%@Y&S$1jN-IGeO74WL#FZvd;&f`1irkv(a_nuUoPhc9q-u7lh{5x zyd*YybJW!L7%kIg_SoB$6FFp-R^-$gMEvPP%2`vm2Owhza zvF--857qLs}>$~w8awp*VS{w^Ofl|SGU@bMuK=7tZM^|RBk*ACTXwj!&h#g5TObrXZx zLUIeQwRr>4LTB)Na0p}43MRtlBvFvuP>T^H7MvI4GcSf=f3cvN4_dus+<37pC86f$-HS9 zo}OzbyB^o{)}^{ron{FMq);}IYF^0^)XxCc{aon0lu}n!R!=U8?+W#{5G2gbHKf;c zPqCbRB+b<^6X~xC>9o79k8Nn+} zYcx0+{LEOF>Mo2XjW@-L;kXfK02M8?czGVg9XMfICqyElh}05ICrbp0!}$Jy?ziSX zMQbrsFf9aGT&J3jt3*V4<%ssf=W4?g+mBJeC*b2l;9<^#e0uOU;ta)f-RcEKk>{k0%_VNWP zMPk4??M#tvQeE_s)C4+OX9Z;Iy{yZ^6&6XXEp-L9LYI^)6dgjwPcDf!sxoy}AS|W0 za%YxlzZz49&gJSXb>-v+VYx`kBwwj$l=4QsLnhIKmYGZ1QLkW$Mq*4R6~=OD$keo- zR-ANWvMHjA<}!eEra3KE%vL*S+|CBplb}Rz6bs5BR(oj8i;R>G+E{0rUIJMZQ<6rI zF)K;?Ai;$j_XY>h5K@r~lQeIFP^3EMo{!LG4>(j6@Co?%5GWtj>e5}+O-sH?JGGxN JD}tj&{{a^2Q(yo9 literal 0 HcmV?d00001 diff --git a/CD_IN/CD_D05.DAT b/CD_IN/CD_D05.DAT new file mode 100644 index 0000000000000000000000000000000000000000..c1e7086c911c9ca3cb4a3674149758f26b0ce9e6 GIT binary patch literal 7701 zcmeI1QEL=25P(w=ghKy7p9cD(a31XmQhY1dQmWQl&=Z6M$z{_snoZVZQ>>5uB~t4D zbh3M{7qXsLIpKutQ)V(d*?bEhS#}4u;Q>5`;qm*?_zezrV4K|edams?9MemY!>JQe zUMt@R8}Htw)fU;hkM-FrZ7Qu`TnQ;E!7Uv2_vd}avJwS_OKz;VQIK=swxSlCugz(W z#e^$h)K*+ds&pUDiqde)gv!NK;(SRBCCpKkYp@(}0fl!^Ide+mtkGCiP}?W)$BU$z zrHm4vrFbCm`QP}oI{Wf$^3ypJ~pAOoJXaGW?t0XnQX0pLKJcJVo1^=i` z53b!435zQGB%zjhC4(@{{!`?nMtuZggEu8J$uE z7SDM(s!oK*!9|13VXhBh^md{|S}Q^lBodzhM-(JJ5t1OW8lToyi>fOdJZFSxnBvYRNM-(JJ5t1O0_yjnjVDtF27W@}(jcF-BD kZ(E)1gJfDOz!3$BPlO~$Bt8L-DA+tct?K?_(D4EL1CFozKL7v# literal 0 HcmV?d00001 diff --git a/CD_IN/CD_D06.DAT b/CD_IN/CD_D06.DAT new file mode 100644 index 0000000000000000000000000000000000000000..0c01bb06f2472ebc0f73e5c7247d3a4bcd9c0fad GIT binary patch literal 1406 zcmd;8;8I{$&{c4DiT4i;0Wx?MxEM$VUirmM3NDFdnJEhHrI|T7O?e=5fCfvEViY3- zBS?7yLw-?;LU2i9QHesCf|;HHLug56PG(6ZP)>m$7*&Hmh(^O_G<m$7*&Hmh(^O_G<m$7*&Hmh(^O_G<8nu5XYHzC=eho(CNk&aD}>wgQ8m_2L%i?Nr5(#fr6$8n>9r`q!iR^p1_aL zj~DGxvJ}deTxZD;kb`_Wl6R-SU~m!*2)vKpuH#$_{zC)P=|V`FXaflc_9qcj zU9OLSkk9!N{$@e~%c)8IDy#w1 zM9@A6Y4`iyu*O$o+Yb6{YvOx?KE4{;_T%bPk^zrDKa3YfPYq4SHxoyylR-V#Wmul& zi^k;YOdE-iVsISw`=o)oE1hwbA>JCWi#-+*5^DuqI>OB;tm{Eu0k^mjhf8)#Ta=Lb=a}F?u^xIAmt#GV1mO^_i)E38b+`LI@5;2lEN()7G714 z=&#)~F6sJ`?)`*ZXvhRt94oO%-UL(V9@yX0oXd*O3_D26r@0XcO)#m_fDgoyrr3K@ z^UFqi=DN?@Wf5|oh)f$nC5-5tS*`q*6!W<8F~=oEh;wBG(-3Q^(+TQR#oh1PtJU3~ zAx^h8ZYJpS6!j^7WbWXj&Y>vbte)#Io^AVAmxduXu1||MbWPOlmM`35L7!a;1pMq$ kC*XOvI_0acHLpC>X@{%R>feNIo>d-f$ZSTXtj_WCAL?IBUjP6A literal 0 HcmV?d00001 diff --git a/CD_IN/CD_D10.DAT b/CD_IN/CD_D10.DAT new file mode 100644 index 0000000000000000000000000000000000000000..447736d82221c2ce63157f456616d428254c9c1b GIT binary patch literal 1406 zcmd;8;8I{$&{c4DiT4i;0Wx?MxEM$VUirmM3NDFdnJEhHrI|T7O?e=5fCfvEViY3- zBS`rIhN3KnYz3#p;>=_P6FpM~1q(d`s5uG*0Rsa;B?_Zz@Q2Z8_>6`Rt`Hd6X#-je HQHufqyQP>R literal 0 HcmV?d00001 diff --git a/CD_IN/CD_D11.DAT b/CD_IN/CD_D11.DAT new file mode 100644 index 0000000000000000000000000000000000000000..35fba6d128f0549dab0190a4f91e9d0ae5dd2104 GIT binary patch literal 1406 zcmd;8;8I{$&{c4DiT4i;0Wx?MxEM$VUirmM3NDFdnJEhHrI|T7O?e=5fCfvEViY3- zBS`rMhN3KnYz3#p;>=_P6FpM~1q(d`s5uG*0Rsa;B?_Zz@Q2Z8_>6`Rt`Hd6X#-je HQHufq3S^iu literal 0 HcmV?d00001 diff --git a/CD_IN/CD_D12.DAT b/CD_IN/CD_D12.DAT new file mode 100644 index 0000000000000000000000000000000000000000..c16c79cb51f8303b1ace7a9368ae4c41f8f3fbe7 GIT binary patch literal 7701 zcmeI0!D_-l5Qf)75d>eLr+I+}4;Fg03Pln0P%pidkP6*ujU?y;_+8_;J52fbVvj0(-Tc+pR3KgErv8u!E2G`7n;Rq{Y7slz29FBw>ft3W5}qU z>OEM$nPfj|N3U_N6BI#B&&6sd9qdaMBVLIo?VQ&r-a7?rf7o? Q`1lBP`)vFL%>TVy0d|sXA^-pY literal 0 HcmV?d00001 diff --git a/CD_IN/CD_D13.DAT b/CD_IN/CD_D13.DAT new file mode 100644 index 0000000000000000000000000000000000000000..dae0a8e9ca72547bb2b8d787fd4733ff49c42a24 GIT binary patch literal 1406 zcmeH^!D_-l5Qf)NLGT57nxlno@&ulgiUkRj_9leUY;7RP=&ormIr)Trq|R)TB8V|U zkNqRr+1+pc87Ctc!X0Rs&f@6pm4gus)y;Y)cZ3;!rU}f;G|P^K_^|Q)Emi|H5d1s( zDvWi(eDQRa4OgYqRRok;TBy|R@8z~1<3H@*y?y{z C8OCS; literal 0 HcmV?d00001 diff --git a/CD_IN/CD_D14.DAT b/CD_IN/CD_D14.DAT new file mode 100644 index 0000000000000000000000000000000000000000..a60cd571bc358970d33b7b5379eb314aaa8a7f84 GIT binary patch literal 6442 zcmeH}&q@O^5XMswghF4y(>#DJB6#p9trWai)Z$Un-KkxhKPAZ)dhL_=X!|HmtjKoA zrC29OuVjpUJaY(C< z=$uh~Ga2^B%FYmO23KtTT~N})N;(OX;Q$gth=j?kT*H7cnfWjvOlCd|2$QGFhsDuf zW%FuX3A<3c9bE6Vn;IyrUMURrrveRx8fXO?Sz0$ZUCiu0C1gH(0!quud|EIP)66FU zrDg3!(J@3bv|d{;;`@z9-E*aD6(bEwR4}icmKsg4lyJY}30Dq1xiZG0g*7^)en6o} zYl;e${qBuEINV5o2`eQH2HI{zZS|**rxU`?J}6N=6sVR|i?Km%B+Ri`NGgpRE-bw- z3u_8T>+>tKbuD%bnURqB_ewx%S(#4@Mq>KEeBwWU#L?W>0hclvbrWabozxPv3=~SC zD(qgs#Lr0ZU{)U?5jCOW3hu?hp&|1y~ozn}N&~o+d{il!B#RZ)k@6T=V@Io8{y#*=GsS+&n+k!RjEx zF&Vn|>s>H(GXkG6K0ZFCsBNuo_S%@{01K;w498^X-miDT(9H;Z#`q}g%crDcbqhSz zF?`67Nyrg=WG?)vz`$lc1ABBDSl(beipAPTC0ahMVlhuvO)d79L(5;WS`3(IiaNV)G84j>4ytpOC z6zmav>}={C@HqvaKx-S`-m$tltd0i+sWJ&Uf{)CFv*5!d0 z9#oUnjmy;meZbJIkGS~+n_Is@xm-=YB!`q}|Cgp$^m)CeOS(CJZwIS$2{CRNy2!x7 zp$)e_bbR_w6};+O-IQqk6;?;OQMkuh@1l>J5%_?QjX +#include +#include +#include +#include +#include +#include // Para getch(); +#include // Para outtextxy(...); y cleardevice(...); +#include "d:\program\src_dos\libs\make_bot\make_bot.h" // Fuciones de MAKE_BOTON +#include "cd_icons.h" + +#include "..\cd_file.h" + +#define DOS 1 +#define WINDOWS 2 + +#define Letra_Boton setcolor(1); +#define Azul 1 +#define Texto_Normal setcolor(255); +#define Texto_Negrita setcolor(240); + +void BEEP(void); +int InputCadenaG_T4(char *s, int numalp, int lmax, int cc, int cf, int X0, int Y0/*, int X1, int Y1*/, int RoW); +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// +/*****/ void Abre_Ficha_CD_in(void); /*****/ +/*****/ void Poner_a_cero_estructura_actual_CD_in(void); /*****/ +/*****/ void PutLineCD_in(void); /*****/ +/*****/ void GetLineCD_in(void); /*****/ +/*****/ void DeleteRecordCD_in(void); /*****/ +/*****/ void AddRecordCD_in(void); /*****/ +/*****/ void Mueve_Abajo_CD_in(void); /*****/ +/*****/ void Mueve_Arriba_CD_in(void); /*****/ +/*****/ void EditCursorCD_in(int ShowHide); /*****/ +/*****/ void PrintLineCD_in(void); /*****/ +/*****/ void PrintLineCD_in2(void); /*****/ +/*****/ void PrintWholeScreenCD_in(void); /*****/ +/*****/ void Edit_Item_CD_in(void); /*****/ +/*****/ void Borra_Campo_Visual(int Columna); /*****/ +/*****/ FILE *CD_in; /*****/ +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// +CD_FILE CD_in1; +struct Cabecera CD_cabecera; + +void Muestra_Comentario(void); +int Editar_Comentario(void); +void Muestra_Informacion(void); +void Inicializa_Apertura(void); +void Coloca_Iconos(int Start_Icon); +void Menu_de_Edicion(void); + + int Items_for = DOS; + int Item_select = 1; + int CurrTopLineCD_in = 1; int CurrRowCD_in = 1; + int CurrColCD_in = 1; + +void Menu_de_Edicion(void){ + int ok = 0, key; + + int Curr_Item = 1; + + + Imprime_Bordes(1, 2, 251); + settextstyle( SMALL_FONT, HORIZ_DIR, 4); + + Inicializa_Apertura(); + Muestra_Informacion(); + Muestra_Comentario(); + +while(!ok){ // Bucle infinito + + switch( Comprueba_Secuencia( 1 ) ) { // Iniciamos comprobacion de iconos + + case 0: // No se pulso ningun BOTON + // Pero el raton fue presionado en + // algun sitio... + break; + case -2: // Hay una tecla normal en BUFFER + key = getch(); // La utilizamos + if( isprint(key) || isspace(key) ) { + if(key!=13) ungetch(key); + Edit_Item_CD_in(); + EditCursorCD_in(0); + } + break; + case -1: // Hay una tecla especial en BUFFER + EditCursorCD_in(1); + switch( (key=getch()) ){ // La utilizamos + // Flecha Arriba + case 72: + Mueve_Arriba_CD_in(); + Muestra_Informacion(); + Muestra_Comentario(); + break; + // Flecha Izquierda + case 75: + case 15: + CurrColCD_in--; if ( CurrColCD_in<1 ) CurrColCD_in=8; + break; + // Flecha Derecha + case 77: + case 9: + CurrColCD_in++; if ( CurrColCD_in>8 ) CurrColCD_in=1; + break; + // Flecha Abajo + case 80: + Mueve_Abajo_CD_in(); + Muestra_Informacion(); + Muestra_Comentario(); + break; + // INICIO + case 71: + CurrColCD_in = 1; + break; + // FIN + case 79: + CurrColCD_in = 8; + break; + // RePg + case 73: + // CurrRow = 1; + if( CurrTopLineCD_in + CurrRowCD_in > 28 ) { CurrTopLineCD_in -= 11; } else { CurrTopLineCD_in = 1; CurrRowCD_in = 1;} + if( CurrTopLineCD_in + CurrRowCD_in< 1 ) { CurrTopLineCD_in = 1; CurrRowCD_in = 1;} + PrintWholeScreenCD_in(); + GetLineCD_in(); + Muestra_Informacion(); + break; + // AvPg + case 81: + // CurrRow = 1; + CurrTopLineCD_in += 11; + if ( (CurrTopLineCD_in +CurrRowCD_in-1) > CD_cabecera.Records) { CurrTopLineCD_in = CD_cabecera.Records; CurrRowCD_in = 1; } + if (CurrTopLineCD_in ==0) CurrTopLineCD_in = 1; + PrintWholeScreenCD_in(); + GetLineCD_in(); + Muestra_Informacion(); + break; + default: + break; + } + EditCursorCD_in(0); + break; + // Boton Windows + case 1: + Imprime_Bordes(1, 2, -1); + Items_for = WINDOWS; + Imprime_Bordes(1, 1, 251); + fclose(CD_in); + Inicializa_Apertura(); + Muestra_Informacion(); + Muestra_Comentario(); + break; + // Boton Dos + case 2: + Imprime_Bordes(1, 1, -1); + Items_for = DOS; + Imprime_Bordes(1, 2, 251); + fclose(CD_in); + Inicializa_Apertura(); + Muestra_Informacion(); + Muestra_Comentario(); + break; + // Boton Retroceder Icono + case 3: + Curr_Item--; if ( Curr_Item<= 0 ) Curr_Item = 15; + Coloca_Iconos(Curr_Item); + break; + // Boton Avanzar Icono + case 4: + Curr_Item++; if ( Curr_Item>=15 ) Curr_Item = 1; + Coloca_Iconos(Curr_Item); + break; + // Boton Creditos + case 5: + break; + // Boton Salir + case 6: + ok = 1; + break; + // Boton Aadir + case 7: + AddRecordCD_in(); + Muestra_Informacion(); + Muestra_Comentario(); + break; + // Boton Borrar + case 8: + DeleteRecordCD_in(); + Muestra_Informacion(); + Muestra_Comentario(); + break; + // Boton Editar Comentario + case 9: + Editar_Comentario(); + break; + // Boton Confirmar Icono + case 10: + Item_select = Curr_Item; + fclose(CD_in); + Inicializa_Apertura(); + Muestra_Informacion(); + Muestra_Comentario(); + break; + default: + while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER + break; + } + +} + +fclose(CD_in); + return; +} + + +// +// +// +// +// +// +// +// + +void Abre_Ficha_CD_in(void){ + +char ArchivoDatos[]="JD_Soft.FV"; +char Memoria; +void *Imagen; + +int cm; +cm = JD_imagesize(200, 212, 440, 267); +if ( (Imagen = malloc( cm /*imagesize(200, 212, 440, 267)*/ ) ) == NULL ) Memoria = 0; +else { + Memoria = 1; + getimage( 200, 212, 440, 267, Imagen ); + Fichero_cd_in2(113); + + //Imprime_Estaticos( 113, "cd_in.img"); + settextstyle( SMALL_FONT, HORIZ_DIR, 4); +} + +if (Items_for == DOS) + sprintf(ArchivoDatos, "CD_D%02d.dat", Item_select ); +else + sprintf(ArchivoDatos, "CD_W%02d.dat", Item_select ); + +//// +// CD_in Apertura de Indice, y Datos, o creacin... // +//// + + int LSJ = sizeof(struct Cabecera); + int LSC = sizeof(CD_FILE); + + if ( (CD_in = fopen( ArchivoDatos, "r+b"))==NULL) { + + FILE *fa; + + if ( (fa = fopen( ArchivoDatos, "wb" ) )!=NULL ) { + + Poner_a_cero_estructura_actual_CD_in(); + CD_cabecera.Records = 0; + rewind(fa); + + fwrite(&CD_cabecera, LSJ, 1, fa); fseek(fa, (long)LSJ, SEEK_SET); + fwrite(&CD_in1, LSC, 1, fa); + + if (fclose(fa) == EOF ) exit(1); + } + + if ( (CD_in = fopen( ArchivoDatos, "r+b"))==NULL) { + if ( Memoria ) free(Imagen); + restorecrtmode(); + printf("NO SE PUDO ABRIR EL FICHERO INDICE EN LA 2 PASADA"); + exit(1); + } + } + + rewind(CD_in); + if ( fread(&CD_cabecera, LSJ, 1, CD_in) != 1 ) { + if ( Memoria ) free(Imagen); + restorecrtmode(); + printf("NO SE PUDO LEER EN EL FICHERO: INDICE"); + exit(1); + } + fseek(CD_in, (long)LSJ, SEEK_SET); + if ( fread(&CD_in1, LSC, 1, CD_in) != 1 ) { + if ( Memoria ) free(Imagen); + restorecrtmode(); + printf("NO SE PUDO LEER EN EL FICHERO: DATOS"); + exit(1); + } + + if( Memoria ) { + putimage( 200, 212, Imagen, COPY_PUT); + free(Imagen); + } + +} + +void Poner_a_cero_estructura_actual_CD_in(void){ + + char CR = 13, LF = 10, BEEP = 7, ANY = 26; + sprintf( CD_cabecera.Nombre_del_Programa, "%c %c %c - CD_OUT - %c %c", CR, LF, BEEP, CR, LF ); + sprintf( CD_cabecera.Comentario_Inicial, "Jos David Guilln %c %c %c %c", CR, LF, BEEP, ANY ); + CD_cabecera.VerHi = 1; CD_cabecera.VerLow = 0; + CD_cabecera.Register = 1; + + CD_in1.Typo.DOS_WINDOWS = ( Items_for == DOS ? 0 : 1); + CD_in1.Typo.Tipo_de_Programa = Item_select; + CD_in1.Typo.T_Dibujo = 0; + CD_in1.Typo.Install = 0; + CD_in1.Typo.Ejecutable = 0; + + strcpy( CD_in1.Nombre, "\0" ); + for(CR=0; CR<32; CR++) +// strcpy( CD_in1.Comentario[CR], " "); + strcpy( CD_in1.Comentario[CR], " "); + + strcpy( CD_in1.N_Img, "\0"); + strcpy( CD_in1.Dir_P, "\0"); + + CD_in1.Alt_Install.Usar_VGA_COPY = 0; + CD_in1.Alt_Install.Usar_ARJ = 0; + CD_in1.Alt_Install.Usar_ZIP = 0; + CD_in1.Alt_Install.Usar_LHA = 0; + CD_in1.Alt_Install.Usar_XCopy = 0; + CD_in1.Alt_Install.Usar_Install_P = 0; +// CD_in1.Alt_Install.Usar_NO_Install = 0; + + strcpy( CD_in1.N_Install, "\0"); + strcpy( CD_in1.N_Exe, "\0"); + +} + +// +// +// +// +// +// +// +// + + + + +void PutLineCD_in(void){ + + long LSJ = sizeof(struct Cabecera); + long LSC = sizeof(CD_FILE); + + long CurrRecord = CurrTopLineCD_in + CurrRowCD_in - 1; + +fseek(CD_in, (long)LSJ + ( LSC * CurrRecord ) - LSC, SEEK_SET); // Se coloca +fwrite(&CD_in1, LSC, 1, CD_in); // Y escribe + +} + +void GetLineCD_in(void){ + + long LSJ = sizeof(struct Cabecera); + long LSC = sizeof(CD_FILE); + + long CurrRecord = CurrTopLineCD_in + CurrRowCD_in - 1; + +fseek(CD_in, (long)LSJ + ( LSC * CurrRecord ) - LSC, SEEK_SET); // Se coloca +fread(&CD_in1, LSC, 1, CD_in); // Y lee + +} + +void DeleteRecordCD_in(void) { + + long CurrRecord; + long LSJ = sizeof(struct Cabecera); + long LSC = sizeof(CD_FILE); + +CurrRecord = CurrTopLineCD_in + CurrRowCD_in - 1; + + if ( (CD_cabecera.Records == 0) ) { BEEP(); + Poner_a_cero_estructura_actual_CD_in(); + fseek(CD_in, (long)LSJ + ( LSC * ( 0 ) ), SEEK_SET); + fwrite(&CD_in1, LSC, 1, CD_in); + PrintWholeScreenCD_in(); + GetLineCD_in(); + EditCursorCD_in(0); + + } else { + + CD_cabecera.Records -= 1; + + unsigned int p = CurrRecord - 1; + + while( p <= CD_cabecera.Records ) { + + fseek(CD_in, (long)(LSJ + ( LSC * ( p + 1 ) )), SEEK_SET); // Se coloca + fread(&CD_in1, LSC, 1, CD_in); // Y lee + + fseek(CD_in, (long)(LSJ + ( LSC * p )), SEEK_SET); // Se coloca + fwrite(&CD_in1, LSC, 1, CD_in); // Y escribe + + p++; + }; + + rewind(CD_in); + fwrite(&CD_cabecera, LSJ, 1, CD_in); // Acualiza n de registros + + if ((CurrRecord - 1) == CD_cabecera.Records + 1) CurrRowCD_in--; +/* */ +/* */ PrintWholeScreenCD_in(); +/* */ GetLineCD_in(); + EditCursorCD_in(0); + + PrintLineCD_in2(); + } +} + + + +void AddRecordCD_in(void){ + + long CurrRecord= CurrTopLineCD_in + CurrRowCD_in - 1; + + long LSJ = sizeof(struct Cabecera); + long LSC = sizeof(CD_FILE); + +if( CurrRecord < 100000 ) { + + long avance = CD_cabecera.Records; + + while( avance >= (CurrRecord-1) ) { + + fseek(CD_in, (long)LSJ + ( LSC * avance ), SEEK_SET); + fread(&CD_in1, LSC, 1, CD_in); + + fseek(CD_in, (long)LSJ + ( LSC * (avance + 1) ), SEEK_SET); + fwrite(&CD_in1, LSC, 1, CD_in); + + avance--; + }; + +// CD_in1_inx.Fin = CD_in1_inx.Fin + 1; + CD_cabecera.Records++; + + rewind(CD_in); + fwrite(&CD_cabecera, LSJ, 1, CD_in); // Acualiza n de registros + + Poner_a_cero_estructura_actual_CD_in(); + + fseek(CD_in, (long)LSJ + ( LSC * ( CurrTopLineCD_in + CurrRowCD_in - 1) ), SEEK_SET); + fwrite(&CD_in1, LSC, 1, CD_in); + + CurrRowCD_in++; + if (CurrRowCD_in>19) { CurrTopLineCD_in++; CurrRowCD_in--; } + PrintWholeScreenCD_in(); + GetLineCD_in(); + EditCursorCD_in(0); + PrintLineCD_in2(); + + } + +} + +// +// +// +// +// +// +// +// + +void Mueve_Abajo_CD_in(void){ + + int CurrRecord = CurrTopLineCD_in + CurrRowCD_in - 1; + + if (CurrRowCD_in == 19) { + if ( (CurrRecord - 1) >= CD_cabecera.Records) { BEEP(); EditCursorCD_in(0); } + else { CurrTopLineCD_in++; + PrintWholeScreenCD_in(); + GetLineCD_in(); + PrintLineCD_in2(); + } + } else { + if( (CurrRecord - 1) >= CD_cabecera.Records) { BEEP(); EditCursorCD_in(0); } + else { CurrRowCD_in++; + GetLineCD_in(); + PrintLineCD_in2(); + } + } + +} + +void Mueve_Arriba_CD_in(void){ + int CurrRecord = CurrTopLineCD_in + CurrRowCD_in - 1; + + if (CurrRowCD_in==1) { + if ((CurrRecord - 1) <= 0) { BEEP(); EditCursorCD_in(0); } + else { + CurrTopLineCD_in--; + PrintWholeScreenCD_in(); + GetLineCD_in(); + PrintLineCD_in2(); + } + + } else { + if( (CurrRecord - 1) <= 0) { BEEP(); // Do nothing, get over... + + } else { CurrRowCD_in--; + GetLineCD_in(); + PrintLineCD_in2(); + } + } + +} + +void EditCursorCD_in(int ShowHide) { + +char Buffer[80]; +int Ch; + + if (!ShowHide) { + setcolor(255); + setfillstyle(SOLID_FILL, 255); + Borra_Campo_Visual( CurrColCD_in ); + setcolor(240); + } else { + setcolor(240); + setfillstyle(SOLID_FILL, 240); + Borra_Campo_Visual( CurrColCD_in ); + Texto_Normal + } + + switch(CurrColCD_in){ + case 1: + // Nombre del Programa 26 d. + outtextxy( 8, 98 + (CurrRowCD_in-1) * 12, CD_in1.Nombre ); + break; + case 2: + // Nombre del Instalador + outtextxy( 175, 98 + (CurrRowCD_in-1) * 12, CD_in1.N_Install ); + break; + case 3: + // Nombre del Ejecutable + outtextxy( 233, 98 + (CurrRowCD_in-1) * 12, CD_in1.N_Exe); + break; + case 4: + // Es Instalable ? Cual es el Tipo ? + if ( CD_in1.Alt_Install.Usar_VGA_COPY ) strcpy( Buffer, "VCpy" ); else + if ( CD_in1.Alt_Install.Usar_ARJ ) strcpy( Buffer, "Arj" ); else + if ( CD_in1.Alt_Install.Usar_ZIP ) strcpy( Buffer, "Zip" ); else + if ( CD_in1.Alt_Install.Usar_XCopy ) strcpy( Buffer, "Xcpy" ); else + if ( CD_in1.Alt_Install.Usar_Install_P) strcpy( Buffer, "Inst" ); else + if ( CD_in1.Alt_Install.Usar_LHA ) strcpy( Buffer, "NO I" ); else + strcpy( Buffer, "NO I" ); + outtextxy( 291, 98 + (CurrRowCD_in-1) * 12, Buffer ); + break; + + case 5: + // Es ejecutable ? + strcpy( Buffer, (CD_in1.Typo.Ejecutable ? "SI" : "NO") ); + outtextxy( 321, 98 + (CurrRowCD_in-1) * 12, Buffer ); + break; + + case 6: + // Tiene Dibujo ? + strcpy( Buffer, (CD_in1.Typo.T_Dibujo ? "SI" : "NO") ); + outtextxy( 353, 98 + (CurrRowCD_in-1) * 12, Buffer ); + break; + case 7: + // Directorio + outtextxy( 123, 338, CD_in1.Dir_P ); + break; + case 8: + // Nombre Imagen + outtextxy( 123, 358, CD_in1.N_Img ); + break; + } + +} + + + +void PrintLineCD_in(void){ + + char Buffer[80]; + + setcolor(240); + setfillstyle(SOLID_FILL, 240); + Borra_Campo_Visual(-1); + + Texto_Normal + // Nombre del Programa 26 d. + outtextxy( 8, 98 + (CurrRowCD_in-1) * 12, CD_in1.Nombre ); + // Nombre del Instalador + outtextxy( 175, 98 + (CurrRowCD_in-1) * 12, CD_in1.N_Install ); + // Nombre del Ejecutable + outtextxy( 233, 98 + (CurrRowCD_in-1) * 12, CD_in1.N_Exe); + // Es Instalable ? Cual es el Tipo ? + if ( CD_in1.Alt_Install.Usar_VGA_COPY ) strcpy( Buffer, "VCpy" ); else + if ( CD_in1.Alt_Install.Usar_ARJ ) strcpy( Buffer, "Arj" ); else + if ( CD_in1.Alt_Install.Usar_ZIP ) strcpy( Buffer, "Zip" ); else + if ( CD_in1.Alt_Install.Usar_XCopy ) strcpy( Buffer, "Xcpy" ); else + if ( CD_in1.Alt_Install.Usar_Install_P) strcpy( Buffer, "Inst" ); else + if ( CD_in1.Alt_Install.Usar_LHA ) strcpy( Buffer, "NO I" ); else + strcpy( Buffer, "NO I" ); + outtextxy( 291, 98 + (CurrRowCD_in-1) * 12, Buffer ); + // Es ejecutable ? + strcpy( Buffer, (CD_in1.Typo.Ejecutable ? "SI" : "NO") ); + outtextxy( 321, 98 + (CurrRowCD_in-1) * 12, Buffer ); + // Tiene Dibujo ? + strcpy( Buffer, (CD_in1.Typo.T_Dibujo ? "SI" : "NO") ); + outtextxy( 353, 98 + (CurrRowCD_in-1) * 12, Buffer ); + // Directorio + outtextxy( 123, 338, CD_in1.Dir_P ); + // Nombre Imagen + outtextxy( 123, 358, CD_in1.N_Img ); + +} + + +void PrintLineCD_in2(void){ + + setcolor(240); + setfillstyle(SOLID_FILL, 240); + Borra_Campo_Visual(7); + Borra_Campo_Visual(8); + + Texto_Normal + // Directorio + outtextxy( 123, 338, CD_in1.Dir_P ); + // Nombre Imagen + outtextxy( 123, 358, CD_in1.N_Img ); + +} + +void PrintWholeScreenCD_in(void){ + +int tmp = CurrRowCD_in; + + setcolor(240); + setfillstyle(SOLID_FILL, 240); +Borra_Campo_Visual(-2); + + for(CurrRowCD_in = 1; CurrRowCD_in < (19+1); CurrRowCD_in++) + + if ( (CurrTopLineCD_in + CurrRowCD_in - 1) <= (CD_cabecera.Records + 1) ) { + GetLineCD_in(); + PrintLineCD_in(); + } + +PrintLineCD_in2(); +CurrRowCD_in = tmp; + +} + +void Edit_Item_CD_in(void){ + + char buffer[80]; + + switch(CurrColCD_in){ + case 1: + // Nombre del Programa 26 d. + // Puntero a cadena, T/N, Dtos, Color, Fondo, Up, Left, Right, Down, Linea + InputCadenaG_T4( CD_in1.Nombre, 0, 26, 255, 250, 8, 98/*, 175, 327*/, CurrRowCD_in-1); + break; + case 2: + // Nombre del Instalador + InputCadenaG_T4( CD_in1.N_Install, 0, 8, 255, 250, 175, 98/*, 227, 327*/, CurrRowCD_in-1); + break; + case 3: + // Nombre del Ejecutable + InputCadenaG_T4( CD_in1.N_Exe, 0, 8, 255, 250, 233, 98/*, 285, 327*/, CurrRowCD_in-1); + break; + case 4: + // Es Instalable ? Cual es el Tipo ? + if ( CD_in1.Alt_Install.Usar_VGA_COPY ) strcpy( buffer, "1" ); else + if ( CD_in1.Alt_Install.Usar_ARJ ) strcpy( buffer, "2" ); else + if ( CD_in1.Alt_Install.Usar_ZIP ) strcpy( buffer, "3" ); else + if ( CD_in1.Alt_Install.Usar_XCopy ) strcpy( buffer, "4" ); else + if ( CD_in1.Alt_Install.Usar_Install_P) strcpy( buffer, "5" ); else + if ( CD_in1.Alt_Install.Usar_LHA ) strcpy( buffer, "6" ); + + InputCadenaG_T4( buffer, 1, 1, 255, 250, 291, 98/*, 315, 327*/, CurrRowCD_in-1); + + CD_in1.Alt_Install.Usar_VGA_COPY = 0; + CD_in1.Alt_Install.Usar_ARJ = 0; + CD_in1.Alt_Install.Usar_ZIP = 0; + CD_in1.Alt_Install.Usar_XCopy = 0; + CD_in1.Alt_Install.Usar_Install_P = 0; + CD_in1.Alt_Install.Usar_LHA = 0; + + switch( atoi(buffer) ) { + + case 1: CD_in1.Alt_Install.Usar_VGA_COPY = 1; + break; + case 2: CD_in1.Alt_Install.Usar_ARJ = 1; + break; + case 3: CD_in1.Alt_Install.Usar_ZIP = 1; + break; + case 4: CD_in1.Alt_Install.Usar_XCopy = 1; + break; + case 5: CD_in1.Alt_Install.Usar_Install_P = 1; + break; + case 6: CD_in1.Alt_Install.Usar_LHA = 1; + break; + default: + break; + } + break; + case 5: + // Es ejecutable ? + strcpy( buffer, (CD_in1.Typo.Ejecutable ? "1" : "0") ); + InputCadenaG_T4( buffer, 1, 1, 255, 250, 321, 98/*, 347, 327*/, CurrRowCD_in-1); + CD_in1.Typo.Ejecutable = atoi(buffer); + break; + case 6: + // Tiene Dibujo ? + strcpy( buffer, (CD_in1.Typo.T_Dibujo ? "1" : "0") ); + InputCadenaG_T4( buffer, 1, 1, 255, 250, 353, 98/*, 377, 327*/, CurrRowCD_in-1); + CD_in1.Typo.T_Dibujo = atoi(buffer); + break; + case 7: + // Directorio + InputCadenaG_T4( CD_in1.Dir_P, 0, 40, 255, 250, 123, 338/*, 377, 352*/, 0); + break; + case 8: + // Nombre Imagen + InputCadenaG_T4( CD_in1.N_Img, 0, 8, 255, 250, 123, 358/*, 175, 372*/, 0); + break; + } + PutLineCD_in(); + GetLineCD_in(); + PrintLineCD_in(); + PrintLineCD_in2(); + +} + + + +void Borra_Campo_Visual(int Columna){ + + +switch( Columna ) { + case -2: + // ** Nombre + bar( 8, 98, 169, 327 ); + // ** Nombre Install + bar( 175, 98, 227, 327 ); + // ** Nombre Exe + bar( 233, 98, 285, 327 ); + // ** Instalable + bar( 291, 98, 315, 327 ); + // ** Ejecutable + bar( 321, 98, 347, 327 ); + // ** Imagen + bar( 353, 98, 377, 327 ); + // *** Directorio + bar( 123, 338, 377, 352 ); + // *** Nombre Imagen + bar( 123, 358, 175, 372 ); + // *** Directorio + bar( 123, 338, 377, 352 ); + // *** Nombre Imagen + bar( 123, 358, 175, 372 ); + break; + case -1: + // *** Los Borra -> TODOS + // C:\>del. + // Todos los archivos en el directorio + // seran eliminados. Si / No ? S + // C:\>_ + // ** Nombre + bar( 8, 98 + (CurrRowCD_in-1) * 12, 169, 98 + ( CurrRowCD_in - 1 ) * 12 + 10); + // ** Nombre Install + bar( 175, 98 + (CurrRowCD_in-1) * 12, 227, 98 + ( CurrRowCD_in - 1 ) * 12 + 10); + // ** Nombre Exe + bar( 233, 98 + (CurrRowCD_in-1) * 12, 285, 98 + ( CurrRowCD_in - 1 ) * 12 + 10); + // ** Instalable + bar( 291, 98 + (CurrRowCD_in-1) * 12, 315, 98 + ( CurrRowCD_in - 1 ) * 12 + 10); + // ** Ejecutable + bar( 321, 98 + (CurrRowCD_in-1) * 12, 347, 98 + ( CurrRowCD_in - 1 ) * 12 + 10); + // ** Imagen + bar( 353, 98 + (CurrRowCD_in-1) * 12, 377, 98 + ( CurrRowCD_in - 1 ) * 12 + 10 ); + // *** Directorio + bar( 123, 338, 377, 352 ); + // *** Nombre Imagen + bar( 123, 358, 175, 372 ); + break; + case 1: + // ** Nombre + bar( 8, 98 + (CurrRowCD_in-1) * 12, 169, 98 + ( CurrRowCD_in - 1 ) * 12 + 10); + break; + case 2: + // ** Nombre Install + bar( 175, 98 + (CurrRowCD_in-1) * 12, 227, 98 + ( CurrRowCD_in - 1 ) * 12 + 10); + break; + case 3: + // ** Nombre Exe + bar( 233, 98 + (CurrRowCD_in-1) * 12, 285, 98 + ( CurrRowCD_in - 1 ) * 12 + 10); + break; + case 4: + // ** Instalable + bar( 291, 98 + (CurrRowCD_in-1) * 12, 315, 98 + ( CurrRowCD_in - 1 ) * 12 + 10); + break; + case 5: + // ** Ejecutable + bar( 321, 98 + (CurrRowCD_in-1) * 12, 347, 98 + ( CurrRowCD_in - 1 ) * 12 + 10); + break; + case 6: + // ** Imagen + bar( 353, 98 + (CurrRowCD_in-1) * 12, 377, 98 + ( CurrRowCD_in - 1 ) * 12 + 10 ); + break; + case 7: + // *** Directorio + bar( 123, 338, 377, 352 ); + break; + case 8: + // *** Nombre Imagen + bar( 123, 358, 175, 372 ); + break; + default: + break; +} + +} + + +int InputCadenaG_T4(char *s, int numalp, int lmax, int cc, int cf, int X0, int Y0/*, int X1, int Y1*/, int RoW) +{ + + int ls; // longitud cadena + char *s1; // puntero a cadena inicial + int c, ok; + + s1 = s; // inicio cadena + + setcolor(cf); // pone color a 0 para borrar + setfillstyle(SOLID_FILL, cf); + Borra_Campo_Visual(CurrColCD_in); + setcolor(cc); // devuelve el color a su estado + + outtextxy( X0, Y0+RoW*12, s ); + + ls = strlen ( s ); // Longitud de actual + + if ( ls < lmax ) { + setcolor(250); + outtextxy( X0+textwidth( s1 ), Y0+RoW*12, ""); + } + + s += ls; // se coloca en el final + + do{ + c = getch(); // obtiene tecla + + ok = ( c == 13 || c == 0); // 13 = INTRO || Especiales + + if ( c == 8 && ls > 0 && !ok ) { // 8 = Back Space + ls--; + s--; + + *s = '\0'; + + setcolor(cf); + setfillstyle(SOLID_FILL, cf); + Borra_Campo_Visual(CurrColCD_in); +//bar(X0, Y0+RoW*12+/*2*/4, X1-2, Y0+4+RoW*12 + 10); + + setcolor(cc); + outtextxy( X0, Y0+RoW*12, s1 ); + setcolor(4); + outtextxy( X0+textwidth( s1 ), Y0+RoW*12, ""); + setcolor(cc); + + } else { + if ( !numalp && c >= 32 && c <= 254 /* isprint(c) */ && ls < lmax) { + + *s++ = c; + ls++; + + *s = '\0'; + setcolor(cf); + setfillstyle(SOLID_FILL, cf); + Borra_Campo_Visual(CurrColCD_in); +//bar(X0, Y0+RoW*12+/*2*/4, X1-2, Y0+4+RoW*12 + 10); + setcolor(cc); + outtextxy( X0, Y0+RoW*12, s1 ); + + if ( ls < lmax ) { + setcolor(4); + outtextxy( X0+textwidth( s1 ), Y0+RoW*12, ""); + setcolor(cc); + } + + + } else { + if ( numalp && isdigit(c) && ls < lmax) { + *s++ = c; + ls++; + + *s = '\0'; // Cero final + setcolor(cf); + setfillstyle(SOLID_FILL, cf); + Borra_Campo_Visual(CurrColCD_in); +//bar(X0, Y0+RoW*12+4, X1-2, Y0+4+RoW*12 + 10); + setcolor(cc); + + outtextxy( X0, Y0+RoW*12, s1 ); + + if ( ls < lmax ) { + setcolor(4); + outtextxy( X0+textwidth( s1 ), Y0+RoW*12, ""); + setcolor(cc); + } + + + } + /**/ + else if( c == 27 ) {*s='\0'; ok = 1; } + /**/ + else BEEP(); + } + } + + }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; +} + +void BEEP(void){ + + sound(440); + delay(50); + nosound(); + +} + +void Inicializa_Apertura(void) { + + CurrTopLineCD_in = 1; + CurrRowCD_in = 1; + CurrColCD_in = 1; + Abre_Ficha_CD_in(); + PrintWholeScreenCD_in(); + GetLineCD_in(); + EditCursorCD_in(0); + +} + +void Muestra_Informacion(void){ + + char Buffer[80]; + + setcolor(240); + setfillstyle(SOLID_FILL, 240); + + bar( 13, 388, 182, 434 ); + + setcolor(255); + sprintf( Buffer, "Modulo:" ); + switch ( Item_select ) { + case 1: strcat( Buffer, " Juegos" ); break; + case 2: strcat( Buffer, " P.Texto" ); break; + case 3: strcat( Buffer, " Msica" ); break; + case 4: strcat( Buffer, " Dibujo" ); break; + case 5: strcat( Buffer, " Utild." ); break; + case 6: strcat( Buffer, " Base D" ); break; + case 7: strcat( Buffer, " Hoja C" ); break; + case 8: strcat( Buffer, " Red" ); break; + case 9: strcat( Buffer, " Lenguaj" ); break; + case 10:strcat( Buffer, " Scanner" ); break; + case 11:strcat( Buffer, " News" ); break; + case 12:strcat( Buffer, " Compr" ); break; + case 13:strcat( Buffer, " Videos" ); break; + case 14:strcat( Buffer, " Varios" ); break; + case 15:strcat( Buffer, " CD's" ); break; + default: strcat( Buffer, "ERROR" ); break; + } + + strcat( Buffer, ( (Items_for==DOS) ? ", DOS" : ", WINDOWS") ); + outtextxy( 15, 390, Buffer); + + sprintf( Buffer, "Linea %02d. Reg %d / %d", CurrRowCD_in, (CurrRowCD_in+CurrTopLineCD_in-1), (CD_cabecera.Records + 1) ); + outtextxy( 15, 400, Buffer); + + + +} + + + +/////// EDITAR COMENTARIO.... + +int Editar_Comentario(void) +{ + + int ls; // longitud cadena + char *s1, *s, *s_tmp, *s_tmp1; // puntero a cadena inicial + int key, ok, Linea = 0, Columna = 0, X, Y, lmax; + char Buffer[80]; + + X = 395; Y = 105; lmax = 35; + ok = 0; + + s_tmp1 = s_tmp = s = s1 = CD_in1.Comentario[0]; // inicio cadena + + s += lmax ; *s = '\0'; + s = s_tmp; + +do { + + setcolor(250); // pone color a 0 para borrar + setfillstyle(SOLID_FILL, 250); // selecciona los atributos de + bar( X, Y+Linea*11, X + 230, Y+Linea*11 + 11); // relleno, y Borra el campo + setcolor(255); // devuelve el color a su estado + + outtextxy( X, Y+Linea*11, s1 ); // e imprime la cadena. +// ls = strlen ( s ); // Longitud de la cadena actual + + + if ( Columna < lmax ) { // Muestra cursor si es posible + setcolor(251); + strncpy( Buffer, s1, Columna ); + Buffer[Columna] = '\0'; + outtextxy( X + textwidth( Buffer ), Y+Linea*11+2, ""); + } + + switch ( ( key = getch() ) ) { // obtiene tecla + // Intro o Return + case 13: + + if( Linea < 31 ) { + setcolor(240); // pone color a 0 para borrar + setfillstyle(SOLID_FILL, 240); // selecciona los atributos de + bar( X, Y+Linea*11, X + 230, Y+Linea*11 + 11); // relleno, y Borra el campo + setcolor(255); // devuelve el color a su estado + outtextxy( X, Y+Linea*11, s1 ); // e imprime la cadena. + + Linea++; + s_tmp1 = s_tmp = s = s1 = CD_in1.Comentario[Linea]; // inicio cadena + s += lmax; *s = '\0'; + Columna = 0; + s = s_tmp1 = s_tmp = s1; + } + break; + + case 0: + + switch ( key = getch() ) { + + // F. Arriba + case 72: + if( Linea > 0 ) { + setcolor(240); // pone color a 0 para borrar + setfillstyle(SOLID_FILL, 240); // selecciona los atributos de + bar( X, Y+Linea*11, X + 230, Y+Linea*11 + 11); // relleno, y Borra el campo + setcolor(255); // devuelve el color a su estado + outtextxy( X, Y+Linea*11, s1 ); // e imprime la cadena. + + Linea--; + s_tmp1 = s_tmp = s = s1 = CD_in1.Comentario[Linea]; // inicio cadena + s += lmax; *s = '\0'; + if ( Columna < strlen( s1 ) ) s_tmp += Columna; else { Columna = 0; + s_tmp = s1; } + s = s_tmp1 = s_tmp; + + } + + break; + // F. Abajo + case 80: + + if( Linea < 31 ) { + setcolor(240); // pone color a 0 para borrar + setfillstyle(SOLID_FILL, 240); // selecciona los atributos de + bar( X, Y+Linea*11, X + 230, Y+Linea*11 + 11); // relleno, y Borra el campo + setcolor(255); // devuelve el color a su estado + outtextxy( X, Y+Linea*11, s1 ); // e imprime la cadena. + + Linea++; + s_tmp1 = s_tmp = s = s1 = CD_in1.Comentario[Linea]; // inicio cadena + s += lmax; *s = '\0'; + if ( Columna < strlen( s1 ) ) s_tmp += Columna; else { Columna = 0; + s_tmp = s1; } + s = s_tmp1 = s_tmp; + } + break; + // F. Derecha + case 77: + case 9: + if ( Columna < strlen(s1) ) { Columna++; s++; } + break; + // F. Izquierda + case 75: + case 15: + if ( Columna > 0) { Columna--; s--; } + break; + default: + BEEP(); + + } + + break; + // Back Space + case 8: + if ( Columna > 0 ) { + Columna--; + s--; + s_tmp1 = s_tmp = s; + while ( *s_tmp1 != NULL ) { + s_tmp1++; + *s_tmp = *s_tmp1; + s_tmp++; + } + } + break; + case 27: + ok = 1; + break; + default: + if ( key >= 32 && key <= 254 && Columna < lmax) { + *s++ = key; + Columna++; + } + else BEEP(); + break; + } +}while(!ok); + +while(kbhit()) getch(); // Vacia Buffer impidiendo falsas + // pulsaciones... + + setcolor(240); // pone color a 0 para borrar + setfillstyle(SOLID_FILL, 240); // selecciona los atributos de + bar( X, Y+Linea*11, X + 230, Y+Linea*11 + 11); // relleno, y Borra el campo + setcolor(255); // devuelve el color a su estado + + outtextxy( X, Y+Linea*11, s1 ); // e imprime la cadena. + PutLineCD_in(); + GetLineCD_in(); + + +return /* de momento nada */ 0; + +} + +void Muestra_Comentario(void){ + + int X, Y; + + X = 395; Y = 105; + + setcolor(240); // pone color a 0 para borrar + setfillstyle(SOLID_FILL, 240); // selecciona los atributos de + for(int Linea=0; Linea<32; Linea++ ){ + bar( X, Y+Linea*11, X + 230, Y+Linea*11 + 11); // relleno, y Borra el campo + setcolor(255); // devuelve el color a su estado + outtextxy( X, Y+Linea*11, CD_in1.Comentario[Linea] ); // e imprime la cadena. + } +} diff --git a/CD_IN/CD_ERROR.H b/CD_IN/CD_ERROR.H new file mode 100644 index 0000000..f41313a --- /dev/null +++ b/CD_IN/CD_ERROR.H @@ -0,0 +1,14 @@ +#define SIN_CVN 100 +#define SIN_XMS 101 +#define E_ICONO 102 +#define E_PCX 103 +#define E_WAV 104 +#define E_EXE 105 +#define ERROR_ D 107 + +#define E_O 108 +#define E_W 109 +#define E_R 110 +#define E_C 111 + + diff --git a/CD_IN/CD_EXE.CPP b/CD_IN/CD_EXE.CPP new file mode 100644 index 0000000..0724a20 --- /dev/null +++ b/CD_IN/CD_EXE.CPP @@ -0,0 +1,191 @@ +#include +#include +#include +#include +#include +#include +#include // Para getch(); +#include // Para outtextxy(...); y cleardevice(...); +#include "..\..\jd_lib\make_bot.h" // Fuciones de MAKE_BOTON +#include "cd_icons.h" +#include "cd_error.h" + +#define DOS 1 +#define WINDOWS 2 + + +void Init_EXE(int CurrIcon); +char *current_directory(char *path); +extern void Inicializa_Dibujo(void); +extern void Inicializa_Iconos(void); +extern void Coloca_Iconos_Dos_Windows(void); +extern char far *Icono; // 18 +extern unsigned char *P_Raton1, *P_Raton2, *P_Raton3, *P_Raton4; +extern void *Pantalla; +void InicializaSVGA(void); +extern char dac[256*3]; +extern "C" void APAGA_PANTALLA(char *); +extern "C" void ENCIENDE_PANTALLA(char *); + +extern void Menu_de_Edicion(void); +extern void Coloca_Iconos(int Start_Icon); + +void Init_EXE(int CurrIcon){ + + int ok = 0, exe = 0; + char curdir[80]; +/* + void far *Mascara; + +if( (Mascara = farmalloc(imagesize(118, 160, 521, 335) ) ) == NULL) { + closegraph(); + cprintf("\n\rSALIENDO"); + cprintf("\n\rImposible encontrar %dKbytes en el Heap", ok); + exit(SIN_MEMORIA); +} +getimage(118, 159, 521, 335, Mascara); +*/ +Imprime_Estaticos(10, "cd_out.img"); // Imprime botones estaticos 'Seccion 4' +Imprime_Secuencia(3); // Imprime secuencia 1. +Imprime_Estaticos(11, "cd_out.img"); // Imprime textos estaticos 'Seccion 5' + +while(!ok){ // Bucle infinito + + switch( Comprueba_Secuencia( 3 ) ) { // 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( getch() ) { // La utilizamos + // Intro ( ACEPTAR ) + case 13: + exe = 1; + ok = 1; + break; + // ESC ( CANCELAR ) + case 14: + exe = 0; + ok = 1; + break; + default: + break; + } + break; + case -1: // Hay una tecla especial en BUFFER + getch(); // La eliminamos + break; + // Boton Aceptar + case 1: + exe = 1; + ok = 1; + break; + // Boton Cancelar + case 2: + exe = 0; + ok = 1; + break; + default: + while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER + break; + } + +} + +/* +putimage(118, 160, Mascara, COPY_PUT); + +farfree(Mascara); +*/ +if ( exe == 1 ) { + /// Liberamos la memoria asignada para al DRIVER grfico... + current_directory(curdir); + APAGA_PANTALLA(dac); + closegraph(); + Libera_Memoria(); + free(P_Raton1); + free(P_Raton2); + free(P_Raton3); + free(P_Raton4); + free(Pantalla); + farfree(Icono); + closegraph(); + + cprintf("Ŀ\n\r"); + cprintf(" JD & CD_OUT \n\r"); + cprintf("\n\r"); + cprintf("EJECUTANDO PROGRAMA: []\n\r"); + /* + + C O M I E N Z A L A E J E C U C I O N D E L P R O G R A M A + + */ + + if ( system( getenv( "COMSPEC") ) != 0 ) { printf("\n\nImposible salir a MS-DOS\n\n"); sleep(5); } + + clrscr(); + cprintf("Ŀ\n\r"); + cprintf(" JD & CD_OUT \n\r"); + cprintf("\n\r"); + cprintf("Regresando a CD_OUT...\n\r"); + + //// Recargamos el Programa... + chdir(curdir); // Refresamos a nuestro directorio + // de origen + InicializaSVGA(); // Reinicializamos la SVGA + APAGA_PANTALLA(dac); // Apagamos la Pantalla + Inicializa_Dibujo(); // Inicializamos un nuevo dibujo + + if( carga_botones("cd_out.img") // Recarga botones del fichero "CD_out.img" + != OK ) { + Imprime_Estaticos( 112, "cd_out.img"); + Espera_Tecla_o_Raton(); + closegraph(); + cprintf("\n\rError en la CARGA DE BOTONES"); + exit(112); + + /* + + SALE CON UN MENSAJE GRFICO + + */ + } + + + Imprime_Estaticos( 1, "cd_out.img"); // Imprime botones estaticos 'Seccion 1' + + Imprime_Secuencia(1); // Imprime secuencia 1. + + Imprime_Estaticos( 2, "cd_out.img"); // Imprime botones estaticos 'Seccion 2' + // para los textos + + Inicializa_Iconos(); + Coloca_Iconos_Dos_Windows(); + Coloca_Iconos(CurrIcon); + + ENCIENDE_PANTALLA(dac); + if ( (Pantalla = malloc( imagesize(0, 0, 20, 20) )) == NULL ) { + Imprime_Estaticos( SIN_CVN, "cd_out.img"); + Espera_Tecla_o_Raton(); + closegraph(); + cprintf("\n\rError en la asignacin de memoria para la mascara del raton"); + exit(2); + } + + inicializa_raton_grafico( 0, 0, 619, 460); + + True_Push = ON; // Activa el TRUE PUSH ( PRESION REAL ) +} + + +} + + +char *current_directory(char *path) +{ + strcpy(path, "X:\\"); /* fill string with form of response: X:\ */ + path[0] = 'A' + getdisk(); /* replace X with current drive letter */ + getcurdir(0, path+3); /* fill rest of string with current directory */ + return(path); +} diff --git a/CD_IN/CD_FILE.H b/CD_IN/CD_FILE.H new file mode 100644 index 0000000..efdea92 --- /dev/null +++ b/CD_IN/CD_FILE.H @@ -0,0 +1,61 @@ + + struct byte { + int T_Dibujo : 1; + int DOS_WINDOWS : 1; + int Install : 1; + int Ejecutable : 1; + int Tipo_de_Programa : 4; + }; + + struct Install { + int Usar_VGA_COPY : 1; + int Usar_ARJ : 1; + int Usar_ZIP : 1; + int Usar_LHA : 1; + int Usar_XCopy : 1; + int Usar_Install_P : 1; + + int Manual_Automatico : 1; + }; + + +typedef struct { + + struct byte Typo; // 1 bit DOS o WINDOWS + // 4 bit Tipo de programa, ( Juegos, Dibujo, ... ) + // 1 bit ( Tiene Dibujo SI / NO ) + // 1 bit Instalable ( SI / NO ) + // 1 bit Ejecutable + + + char Nombre[26+1]; // Nombre del programa + char Comentario[32][35 + 1]; // Comentario + + char N_Img[8+1]; // Nombre de la imagen ( sin extensin ) + + char Dir_P[50+1]; + + // Instalacion alternativa... + struct Install Alt_Install; + + char N_Install[8+1]; + char N_Exe[8+1]; + + +} CD_FILE; + +struct Cabecera { + char Nombre_del_Programa[70]; + char Comentario_Inicial[70]; +// const char R1 = 13, R2 =10; +// const char Comentario_Inicial[] = {"Jos David Guilln Dominguez"}; +// const char R3 = 13, R4 =10; +// const char R5 = 7, R6 =26; + + char VerHi, VerLow; + char Register; + + long Records; +}; + +struct Cabecera CD_cabecera; \ No newline at end of file diff --git a/CD_IN/CD_ICONS.CPP b/CD_IN/CD_ICONS.CPP new file mode 100644 index 0000000..78b5066 --- /dev/null +++ b/CD_IN/CD_ICONS.CPP @@ -0,0 +1,520 @@ +extern int Fichero_cd_in2(char Dinamicos_Estaticos); + +///////////////////////////// FICHEROS A INCLUIR ///////////////////////////// +#include +#include +#include +#include +#include // Para getch(); +#include // Para outtextxy(...); y cleardevice(...); + +#include "cd_icons.h" +// #include "List_col.h" +#include "cd_error.h" +#include "d:\program\src_dos\libs\make_bot\make_bot.h" // Fuciones de MAKE_BOTON +////////////////////////////////// VARIABLES ///////////////////////////////// +void Mete(FILE *P_R, int Color); + +FILE *handle; +char dac[256*3]; + +extern unsigned char *P_Raton1, *P_Raton2, *P_Raton3, *P_Raton4; + +unsigned char far *Icono; // 18 + +void Coloca_Iconos_Dos_Windows(void); +void Coloca_Iconos(int Start_Icon); +//////////////////////// DECLARACIONES DE FUNCIONES ////////////////////////// + +extern "C" void ENCIENDE_PANTALLA(char *); + +///////////////////////////////// PROGRAMA /////////////////////////////////// +void Inicializa_Iconos(void) +{ + int ancho; + int Posicion[18] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + int alto; + + int esq_x1, esq_y1, esq_x2, esq_y2; + unsigned char byte, contador; + int n = (20*20); + int PR1, PR2, PR3, PR4; + PR1 = PR2 = PR3 = PR4 = -1; + + if( (Icono = (unsigned char far *)farcalloc( /*(39762)*/40000L, sizeof(unsigned char) ) ) == NULL ){ + Fichero_cd_in2(SIN_CVN); + +// Imprime_Estaticos( SIN_CVN, "cd_in.img"); + Espera_Tecla_o_Raton(); + closegraph(); + printf("No se encontr memoria suficiente"); + exit(1); + } +/* +if( ((P_Raton1 = (unsigned char *)malloc( n ))==NULL) || + ((P_Raton2 = (unsigned char *)malloc( n ))==NULL) || + ((P_Raton3 = (unsigned char *)malloc( n ))==NULL) || + ((P_Raton4 = (unsigned char *)malloc( n ))==NULL) ) { + Imprime_Estaticos( SIN_CVN, "cd_in.img"); + Espera_Tecla_o_Raton(); + closegraph(); + cprintf("\n\rImposible encontrar memoria para el cursor del Raton"); + exit(2); + } +*/ +/// +/// +/* +FILE *P_R1, *P_R2, *P_R3, *P_R4; +int PR1_C=0, PR2_C=0, PR3_C=0, PR4_C=0; +P_R1 = fopen("P_Raton1.cpp", "w"); +P_R2 = fopen("P_Raton2.cpp", "w"); +P_R3 = fopen("P_Raton3.cpp", "w"); +P_R4 = fopen("P_Raton4.cpp", "w"); +*/ +/// +/// + if((handle=fopen("CD_in2.IMG", "rb"))==NULL) + { + Fichero_cd_in2(E_O); + +// Imprime_Estaticos( E_O, "cd_in.img"); + Espera_Tecla_o_Raton(); + restorecrtmode(); + printf("No se encontr el archivo de iconos"); + exit(1); + } + + if(10!=getc(handle)) + { + Fichero_cd_in2(E_PCX); + +// Imprime_Estaticos( E_PCX, "cd_in.img"); + Espera_Tecla_o_Raton(); + restorecrtmode(); + printf("El archivo de iconos, esta daado"); + exit(1); + } + + getw(handle); getc(handle); + + esq_x1=getw(handle); esq_y1=getw(handle); + esq_x2=getw(handle); esq_y2=getw(handle); + + ancho=esq_x2-esq_x1+1; + alto =esq_y2-esq_y1+1; + + fseek(handle, 128, 0); + + for(alto=(esq_y2-esq_y1+1); alto>0; alto--) + { + for(ancho=(esq_x2-esq_x1+1); ancho>0; ) + { + byte=getc(handle); + if(byte<=0xC0) + { + + if( ancho>=272 && ancho <=318 && alto >=152 && alto <= 198 ) { + Posicion[0] ++; + Icono[ Posicion[0] ] = byte; + } else + if( ancho>=224 && ancho <=270 && alto >=152 && alto <= 198 ) { + Posicion[1] ++; + Icono[ Posicion[1]+2209*1 ] = byte; + } else + if( ancho>=176 && ancho <=222 && alto >=152 && alto <= 198 ) { + Posicion[2] ++; + Icono[ Posicion[2]+2209*2 ] = byte; + } else + if( ancho>=128 && ancho <=174 && alto >=152 && alto <= 198 ) { + Posicion[3] ++; + Icono[ Posicion[3]+2209*3 ] = byte; + } else + if( ancho>=80 && ancho <=126 && alto >=152 && alto <= 198 ) { + Posicion[4] ++; + Icono[ Posicion[4]+2209*4 ] = byte; + } else + if( ancho>=32 && ancho <=78 && alto >=152 && alto <= 198 ) { + Posicion[5] ++; + Icono[ Posicion[5]+2209*5 ] = byte; + } else + +//////////////////////////////////////////////////////////////////////////////////// + + if( ancho>=272 && ancho <=318 && alto >=104 && alto <= 150 ) { + Posicion[6] ++; + Icono[ Posicion[6]+2209*6 ] = byte; + } else + if( ancho>=224 && ancho <=270 && alto >=104 && alto <= 150 ) { + Posicion[7] ++; + Icono[ Posicion[7]+2209*7 ] = byte; + } else + if( ancho>=176 && ancho <=222 && alto >=104 && alto <= 150 ) { + Posicion[8] ++; + Icono[ Posicion[8]+2209*8 ] = byte; + } else + if( ancho>=128 && ancho <=174 && alto >=104 && alto <= 150 ) { + Posicion[9] ++; + Icono[ Posicion[9]+2209*9 ] = byte; + } else + if( ancho>=80 && ancho <=126 && alto >=104 && alto <= 150 ) { + Posicion[10] ++; + Icono[ Posicion[10]+2209*10 ] = byte; + } else + if( ancho>=32 && ancho <=78 && alto >=104 && alto <= 150 ) { + Posicion[11] ++; + Icono[ Posicion[11]+2209*11] = byte; + } else + +//////////////////////////////////////////////////////////////////////////////////// + + if( ancho>=272 && ancho <=318 && alto >=56 && alto <= 102 ) { + Posicion[12] ++; + Icono[ Posicion[12]+2209*12 ] = byte; + } else + if( ancho>=224 && ancho <=270 && alto >=56 && alto <= 102 ) { + Posicion[13] ++; + Icono[ Posicion[13]+2209*13 ] = byte; + } else + if( ancho>=176 && ancho <=222 && alto >=56 && alto <= 102 ) { + Posicion[14] ++; + Icono[ Posicion[14]+2209*14 ] = byte; + } else + if( ancho>=128 && ancho <=174 && alto >=56 && alto <= 102 ) { + Posicion[15] ++; + Icono[ Posicion[15]+2209*15 ] = byte; + } else + if( ancho>=80 && ancho <=126 && alto >=56 && alto <= 102 ) { + Posicion[16] ++; + Icono[ Posicion[16]+2209*16 ] = byte; + } else + if( ancho>=32 && ancho <=78 && alto >=56 && alto <= 102 ) { + Posicion[17] ++; + Icono[ Posicion[17]+2209*17] = byte; + } else + +//////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////// + + if( ancho>=274/*279*/ && ancho <=/*318*/316 && alto >= /*8*/11 && alto <= 29 ) { + // Flecha Izquierda +// putpixel( 385 +43+ (279-ancho), 30 + 24 + (11-alto), byte); +putpixel( ancho + 120, alto + 24, byte ); + } else + if( ancho>=/*272*/276 && ancho <=318/*313*/ && alto >= /*32*/35 && alto <= 52 ) { + // Flecha Derecha +// putpixel( 385 +48+ (276-ancho), 57 + 26 + (35-alto), byte); +putpixel( ancho + 120, alto + 32, byte ); +} +//// } else +// if( ancho>=251 && ancho <=270 && alto >= 14 && alto <= 54 ) { +// // Flecha Arriba +// putpixel( 235 + (248-ancho), 420 + (8-alto), byte); +// putpixel( 385 + (248-ancho), 360 + (8-alto), byte); +// } else +// if( ancho>=/*224*/227 && ancho <= 245 && alto >= /*8*/12 && alto <= /*54*/49 ) { +// // Flecha Abajo +// putpixel( 235 - 1 + (224-ancho), 470 + (8-alto), byte); +// putpixel( 385 - 1 + (224-ancho), 415 -2 + (8-alto), byte); +// } else +/* + if( ancho>=180 && ancho <= 220 && alto >= 12 && alto <= 52 ) { + // Punteros del Raton... + putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte); + } +*/ + if( ancho>=180 && ancho <= 199 && alto >= 12 && alto <= 31 ) { +//// // Punteros del Raton... + PR1++; + P_Raton1[/*(199-ancho) + 20*(31-alto)*/PR1] = byte; +////// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte); +/////* +////Mete(P_R1, byte); +////PR1_C ++ ; if ( PR1_C == 6 ) { PR1_C=0; fprintf(P_R1, "\n"); } +////*/ + } else + if( ancho>=201 && ancho <= 220 && alto >= 12 && alto <= 31 ) { +//// // Punteros del Raton... + PR2++; + P_Raton2[/*(220-ancho) + 20*(31-alto)*/PR2] = byte; +///// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte); +/////* +////Mete(P_R2, byte); +////PR2_C ++ ; if ( PR2_C == 11 ) { PR2_C=0; fprintf(P_R2, "\n"); } +////*/ + } else + if( ancho>=180 && ancho <= 199 && alto >= 33 && alto <= 52 ) { +//// // Punteros del Raton... + PR3++; + P_Raton3[/*(199-ancho) + 20*(52-alto)*/PR3] = byte; +////// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte); +/////* +////Mete(P_R3, byte); +////PR3_C ++ ; if ( PR3_C == 6 ) { PR3_C=0; fprintf(P_R3, "\n"); } +////*/ + } else + if( ancho>=201 && ancho <= 220 && alto >= 33 && alto <= 52 ) { +//// // Punteros del Raton... + PR4++; + P_Raton4[/*(220-ancho) + 20*(52-alto)*/PR4] = byte; +////// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte); +/////* +////Mete(P_R4, byte); +////PR4_C ++ ; if ( PR4_C == 6 ) { PR4_C=0; fprintf(P_R4, "\n"); } +////*/ + } + +//////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////// + + +///////////////// +// putpixel( (10+ancho), (10+alto), byte); +///////////////// + ancho--; + } + else + { + contador=byte&0x3F; byte=getc(handle); + for(; contador>0; contador--) + { + // *dir_vga++=byte; + if( ancho>=272 && ancho <=318 && alto >=152 && alto <= 198 ) { + Posicion[0] ++; + Icono[ Posicion[0] ] = byte; + } else + if( ancho>=224 && ancho <=270 && alto >=152 && alto <= 198 ) { + Posicion[1] ++; + Icono[ Posicion[1]+2209*1 ] = byte; + } else + if( ancho>=176 && ancho <=222 && alto >=152 && alto <= 198 ) { + Posicion[2] ++; + Icono[ Posicion[2]+2209*2 ] = byte; + } else + if( ancho>=128 && ancho <=174 && alto >=152 && alto <= 198 ) { + Posicion[3] ++; + Icono[ Posicion[3]+2209*3 ] = byte; + } else + if( ancho>=80 && ancho <=126 && alto >=152 && alto <= 198 ) { + Posicion[4] ++; + Icono[ Posicion[4]+2209*4 ] = byte; + } else + if( ancho>=32 && ancho <=78 && alto >=152 && alto <= 198 ) { + Posicion[5] ++; + Icono[ Posicion[5]+2209*5 ] = byte; + } else + + + +//////////////////////////////////////////////////////////////////////////////////// + if( ancho>=272 && ancho <=318 && alto >=104 && alto <= 150 ) { + Posicion[6] ++; + Icono[ Posicion[6]+2209*6 ] = byte; + } else + if( ancho>=224 && ancho <=270 && alto >=104 && alto <= 150 ) { + Posicion[7] ++; + Icono[ Posicion[7]+2209*7 ] = byte; + } else + if( ancho>=176 && ancho <=222 && alto >=104 && alto <= 150 ) { + Posicion[8] ++; + Icono[ Posicion[8]+2209*8 ] = byte; + } else + if( ancho>=128 && ancho <=174 && alto >=104 && alto <= 150 ) { + Posicion[9] ++; + Icono[ Posicion[9]+2209*9 ] = byte; + } else + if( ancho>=80 && ancho <=126 && alto >=104 && alto <= 150 ) { + Posicion[10] ++; + Icono[ Posicion[10]+2209*10 ] = byte; + } else + if( ancho>=32 && ancho <=78 && alto >=104 && alto <= 150 ) { + Posicion[11] ++; + Icono[ Posicion[11]+2209*11] = byte; + } else + +//////////////////////////////////////////////////////////////////////////////////// + if( ancho>=272 && ancho <=318 && alto >=56 && alto <= 102 ) { + Posicion[12] ++; + Icono[ Posicion[12]+2209*12 ] = byte; + } else + if( ancho>=224 && ancho <=270 && alto >=56 && alto <= 102 ) { + Posicion[13] ++; + Icono[ Posicion[13]+2209*13 ] = byte; + } else + if( ancho>=176 && ancho <=222 && alto >=56 && alto <= 102 ) { + Posicion[14] ++; + Icono[ Posicion[14]+2209*14 ] = byte; + } else + if( ancho>=128 && ancho <=174 && alto >=56 && alto <= 102 ) { + Posicion[15] ++; + Icono[ Posicion[15]+2209*15 ] = byte; + } else + if( ancho>=80 && ancho <=126 && alto >=56 && alto <= 102 ) { + Posicion[16] ++; + Icono[ Posicion[16]+2209*16 ] = byte; + } else + if( ancho>=32 && ancho <=78 && alto >=56 && alto <= 102 ) { + Posicion[17] ++; + Icono[ Posicion[17]+2209*17] = byte; + } else + +//////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////// + + if( ancho>=274/*279*/ && ancho <=/*318*/316 && alto >= /*8*/11 && alto <= 29 ) { + // Flecha Izquierda +// putpixel( 385 + 43 + (279-ancho), 30 + 24 + (11-alto), byte); +putpixel( ancho + 120, alto + 24, byte ); + } else + if( ancho>=/*272*/276 && ancho <=318/*313*/ && alto >= /*32*/35 && alto <= 52 ) { + // Flecha Derecha +// putpixel( 385 + 48 + (276-ancho), 57 + 26 + (35-alto), byte); +putpixel( ancho + 120, alto + 32, byte ); + } else +// if( ancho>=251 && ancho <=270 && alto >= 14 && alto <= 54 ) { +// // Flecha Arriba +// putpixel( 235 + (248-ancho), 420 + (8-alto), byte); +// putpixel( 385 + (248-ancho), 360 + (8-alto), byte); +// } else +// if( ancho>=/*224*/227 && ancho <= 245 && alto >= /*8*/12 && alto <= /*54*/49 ) { +// // Flecha Abajo +// putpixel( 235 - 1 + (224-ancho), 470 + (8-alto), byte); +// putpixel( 385 - 1 + (224-ancho), 415 -2 + (8-alto), byte); +// } else +/* + if( ancho>=180 && ancho <= 220 && alto >= 12 && alto <= 52 ) { + // Punteros del Raton... + putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte); + } +*/ + if( ancho>=180 && ancho <= 199 && alto >= 12 && alto <= 31 ) { +//// // Punteros del Raton... + PR1++; + P_Raton1[/*(199-ancho) + 20*(31-alto)*/PR1] = byte; +////// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte); +/////* +////Mete(P_R1, byte); +////PR1_C ++ ; if ( PR1_C == 6 ) { PR1_C=0; fprintf(P_R1, "\n"); } +////*/ + } else + if( ancho>=201 && ancho <= 220 && alto >= 12 && alto <= 31 ) { +//// // Punteros del Raton... + PR2++; + P_Raton2[/*(220-ancho) + 20*(31-alto)*/PR2] = byte; +////// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte); +/////* +////Mete(P_R2, byte); +////PR2_C ++ ; if ( PR2_C == 6 ) { PR2_C=0; fprintf(P_R2, "\n"); } +////*/ + } else + if( ancho>=180 && ancho <= 199 && alto >= 33 && alto <= 52 ) { +//// // Punteros del Raton... + PR3++; + P_Raton3[/*(199-ancho) + 20*(52-alto)*/PR3] = byte; + ///// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte); +/////* +////Mete(P_R3, byte); +////PR3_C ++ ; if ( PR3_C == 6 ) { PR3_C=0; fprintf(P_R3, "\n"); } +////*/ + } else + if( ancho>=201 && ancho <= 220 && alto >= 33 && alto <= 52 ) { +//// // Punteros del Raton... + PR4++; + P_Raton4[/*(220-ancho) + 20*(52-alto)*/PR4] = byte; +///// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte); +/////* +////Mete(P_R4, byte); +////PR4_C ++ ; if ( PR4_C == 6 ) { PR4_C=0; fprintf(P_R4, "\n"); } +////*/ + } +//////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////// + +///////////////// +// putpixel( (10+ancho), (10+alto), byte); +///////////////// + ancho--; + } + } + } + } + getc(handle); + +// for(n=0; n<256*3; n++) dac[n]=getc(handle) >> 2; + for(n=0; n<256*3; n++) + if( n >= (256-16)*3 ) + dac[n]=getc(handle) >> 2; + else + getc(handle); + + fclose(handle); + +/* +fclose(P_R1); +fclose(P_R2); +fclose(P_R3); +fclose(P_R4); +*/ + +} + +void Coloca_Iconos_Dos_Windows(void){ + +int x, y, i; + +for( y = 0; y <= (46-1); y++ ) + for( x = 1; x <= 46; x++ ) { + putpixel( 523 + x, 37+y, Icono[ x + (47*y) + (2209*11) ] ); + + putpixel( 583 + x, 37+y, Icono[ x + (47*y) + (2209*17) ] ); + } + +} + + +void Coloca_Iconos(int Start_Icon){ + +int x, y, i; +char Icon_inx[] = { Juegos, Texto, Musica, Dibujo, Util, Base, Hoja, + Red, TC, Scanner, News, Zip, Peli, Varios, CD, Ayuda }; + +Start_Icon--; + +for( y = 0; y <= (46-1); y++ ) + for( x = 1; x <= 46; x++ ) { + + putpixel( 453 + x, 37+y, Icono[ x + (47*y) + (2209*Icon_inx[Start_Icon]) ] ); + + } + +} + +void Mete(FILE *P_R, int Color) { + + char Buffer[80]; + + switch( Color ) { + case 255: + sprintf( Buffer, "*P_Ratonx++ = BLANCO"); + break; + case 240: + sprintf( Buffer, "*P_Ratonx++ = NEGRO"); + break; + case 253: + sprintf( Buffer, "*P_Ratonx++ = GRIS_CLARO"); + break; + case 249: + sprintf( Buffer, "*P_Ratonx++ = UNKNOW"); + break; + case 250: + sprintf( Buffer, "*P_Ratonx++ = AZUL"); + break; + + default: + sprintf( Buffer, "*P_Ratonx++ = %d", Color); + } + + fprintf( P_R, "%-24s; ", Buffer ); + + +} \ No newline at end of file diff --git a/CD_IN/CD_ICONS.H b/CD_IN/CD_ICONS.H new file mode 100644 index 0000000..0fdee06 --- /dev/null +++ b/CD_IN/CD_ICONS.H @@ -0,0 +1,16 @@ +#define Juegos 0 +#define Musica 1 +#define Texto 2 +#define Dibujo 3 +#define Varios 4 +#define Ayuda 5 +#define CD 6 +#define Scanner 7 +#define Util 8 +#define TC 9 +#define Red 10 +#define Base 12 +#define Hoja 13 +#define News 14 +#define Peli 15 +#define Zip 16 diff --git a/CD_IN/CD_IN.EXE b/CD_IN/CD_IN.EXE new file mode 100644 index 0000000000000000000000000000000000000000..32aed158a906bcd43e1f0617632169c7b20c1cc8 GIT binary patch literal 111361 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 oaDe8Un{yEj z&pbSR4RHi2l=kNL=W}&cchv+Wr=ILJE^vV+pf;#l1p$mi1h@zM%a{xbRUxd)FSS8CR0|&C;azU0)!j?YtKp{_b+=keg`SruPdiD*-YLI4jooRv z+>UZaIV37wZd+vx$P$fPWh3gMQR8*qh7o7+oKpD*P5droa3hz;s3kQbYL%(V?J~LC zyhJXss}8BEudZ{|S99AMJ&KF|btur@6eb?zb+x9tzPjF32jKxG6;{c0vYU7z5N>UK ztt{5M>KV$trh%vK(%R5Xm&U@)%TSG)LT%!zDr&Flk#}lmP=7!=GF=6EE3?|#I*nd+AR<~# zw7afV`c)7xHJomsWhEq1m&=D{+OVp&hI&?2Xc?->-=!QHC?y%P5>%g?cWnHq~jh>Ucs@CYPbHj#n zva!Cd-UoS9CmZTl$zr`r7V4`|`?_k3HC?sF+AbMA(E6@=AC<7oeac;Mt#{QSq%M?! zZdIMk>gwF9s=JW33U^&ih1VB_pXLr-2kyQmn9phvWkVtP-B2i$R(dD@H9Qsy4YG^g;T|^R zN~4pmmfWMZAiwCm@$gY&sw=CBhd7luPjMeS)L>XL{E}4C(nKL@G|)n-sRTC$(@Qj= zc(feWxFDrnkk-L>88K0u+#a~9vZ~rui6%RcW=>Cf^V5y;O>aCuWJYg1x4cxfaCqK$ zN%o{0FCVz})4e+sGNX|M*h{WO3T32N=A%3+Q3{{I#sw_9M3+pxyebj0iTt5nQ~wbS zCi$Z<87Pjhv=F#&N-LT1oD(&O3S_fNkK70QHPqKc3qWCT3E)D7m3=M|9VCb&YMT%n z65(?3c1n*F=xbzIzp94(pkItsphPJqZG0vo5ol$Q67+hghgS`8LvE3JNKvgNsS>Ju z{xP7A`bE?Ofwa_VE@jZgFC`IxKd_o=J@PD|-2J`PDhVltB@a>So$GmDTk9v0G^OYu zmIHlxxRj}EuVWWkkUMlm)W|I%T*{O>PR4=)g(18m(Fsa73ndiAReVKLBl{g zcnXLsWC4X>@Q+y;(X@touo@TByHtY$<@JHda*ZUzn%>Y#At^{u7Y{km((t}5%6Jv} zbFi<1d_^XSKqy!4Qsh$wG|oiVz*S9VRcPI4)KBFE;vkLOr4D^Xlq(9B(jFX_(%UMu zXPo!6baJ|(fVFyQ;C#6XwMDCIj1cEjQR7?$z}S+9Os1UNjPbUlo0Dy6rHe|Pb{owP zPApnlJio{`(O!&2nzrHO1TL<%C5=eB8B>MhoeOPAx6)kUZ8zC2pDcvoou&4|f)d;0 z0{cRH!IB4xmxr5K+y=y06pas$!8yWi6Qe&4IO*|=w+!sO$M-}(cHh8ViPtgaAv@15 z!MMZtp)rP?F#cc^O_7*Fe2U*A+2bKG?A4GrLk@+U40#okXpwBN;F&=t)7rJs$p4LZr-4qRl14618j0&> z?Ac+Jx<>`N$mLbTxXT>pk|H}%GeslH>Pu=CKuSXxhzP@V0(Ae0a6RJKKrTxjwgeKX<>e*m^K{`VW zWAmk@R;F$ zC-b?u$PNAIc^|HT`=0NV2KtS_HIgI7ZtU@XE3lz-0j`C(in$A2CWw?N;1Y2egmClS zrG-Vdl2V7Q%(-MqsojAOa-}6U#{

w)qA2!V%aQF&2sev0vOHpVL?9{;0PYlTIq% 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 literal 0 HcmV?d00001 diff --git a/CD_IN/CD_IN.IMG b/CD_IN/CD_IN.IMG new file mode 100644 index 0000000..930197c --- /dev/null +++ b/CD_IN/CD_IN.IMG @@ -0,0 +1,213 @@ +* BLANCO 255 +* Gris_C 253 +* Gris_F 254 +* NEGRO 240 +* Amarillo 251 +* Rosa 241 +* Rojo 242 +* Azul 250 +* UNKNOW 249 + +#1 + +***** Botones para elegir el tipo de ITEM a mirar... +!1, 10 +***** Botones para seleccionar DOS / WINDOWS +$ 575, 30, 635, 90, 253, 255, 254, 5, 1, 00, 17 +$ 515, 30, 575, 90, 253, 255, 254, 5, 1, 00, 32 + +**** Retroceder, Avanzar, en los anteriores iconos +$ 385, 30, 445, 58, 253, 255, 254, 3, 1, 00, 115 +$ 385, 62, 445, 90, 253, 255, 254, 3, 1, 00, 116 + +**** Creditos +$ 195, 447, 380, 475, 253, 255, 254, 3, 1, 00, 46 +**** Salir +$ 5, 447, 190, 475, 253, 255, 254, 3, 1, 00, 31 + +**** Aadir, Borrar, Editar Comentario +$ 5, 30, 125, 58, 253, 255, 254, 3, 1, 00, 30 +$ 130, 30, 250, 58, 253, 255, 254, 3, 1, 00, 48 +$ 255, 30, 380, 58, 253, 255, 254, 3, 1, 00, 18 + +**** Boton donde se muestran los iconos disponibles +$ 445, 30, 505, 90, 253, 255, 254, 5, 1, 00, 120 + + +1 +***** Pantalla inicial +& 1, 1, 639, 479, 253, 255, 254, 2, 2 +& 5, 5, 635, 25, 240, 254, 255, 2, 2 + +| 10, 7, 2, 5, 0, 255, Utilidad de introducin de datos para CD_OUT Jos David Guilln 1995 (c), +| 11, 8, 2, 5, 0, 251, Utilidad de introducin de datos para CD_OUT Jos David Guilln 1995 (c), + + +***** Cuadro para el comentario... +& 385, 95, 635, 475, 250, 255, 254, 2, 1 +& 390, 100, 630, 470, 240, 254, 255, 2, 1 + +2 + +| 5, 452, 2, 6, 0, 241, _, +| 6, 453, 2, 6, 0, 0, _, +| 5, 450, 2, 6, 0, 255, S A L I R, +| 6, 451, 2, 6, 0, 0, S A L I R, + +| 195, 452, 2, 6, 0, 241, _, +| 196, 453, 2, 6, 0, 240, _, +| 195, 450, 2, 6, 0, 255, C R E D I T O S, +| 196, 451, 2, 6, 0, 240, C R E D I T O S, + + +| 11, 35, 2, 6, 0, 241, _, +| 12, 36, 2, 6, 0, 0, _, +| 11, 33, 2, 6, 0, 255, A A D I R, +| 12, 34, 2, 6, 0, 0, A A D I R, + +| 136, 35, 2, 6, 0, 241, _, +| 137, 36, 2, 6, 0, 240, _, +| 136, 33, 2, 6, 0, 255, B O R R A R, +| 137, 34, 2, 6, 0, 240, B O R R A R, + +| 257, 39, 2, 4, 0, 241, _, +| 258, 40, 2, 4, 0, 240, _, +| 257, 38, 2, 4, 0, 255, Editar comentario, +| 258, 39, 2, 4, 0, 240, Editar comentario, + +***** Pantalla de Edicion +& 5, 62, 172, 90, 240, 255, 254, 2, 2 +& 172, 62, 230, 90, 240, 255, 254, 2, 2 +& 230, 62, 288, 90, 240, 255, 254, 2, 2 +& 288, 62, 318, 90, 240, 255, 254, 2, 2 +& 318, 62, 350, 90, 240, 255, 254, 2, 2 +& 350, 62, 380, 90, 240, 255, 254, 2, 2 + + + +| 11, 71, 2, 4, 0, 242, Nombre N_Install N_Exe Inst EXE Img, +| 10, 70, 2, 4, 0, 255, Nombre N_Install N_Exe Inst EXE Img, + +** Nombre +& 5, 95, 172, 330, 240, 255, 254, 2, 2 +** Nombre Install +& 172, 95, 230, 330, 240, 255, 254, 2, 2 +** Nombre Exe +& 230, 95, 288, 330, 240, 255, 254, 2, 2 +** Instalable +& 288, 95, 318, 330, 240, 255, 254, 2, 2 +** Ejecutable +& 318, 95, 350, 330, 240, 255, 254, 2, 2 +** Imagen +& 350, 95, 380, 330, 240, 255, 254, 2, 2 +*** +| 11, 335, 2, 5, 0, 255, Directorio, +| 12, 336, 2, 5, 0, 240, Directorio, +& 120, 335, 380, 355, 240, 255, 254, 2, 2 +| 11, 355, 2, 5, 0, 255, Nombre Imagen, +| 12, 356, 2, 5, 0, 240, Nombre Imagen, +& 120, 355, 178, 375, 240, 255, 254, 2, 2 + +**** Tipos de Instalacin +| 200, 390, 2, 4, 1, 255, Tipos de, +| 201, 391, 2, 4, 1, 240, Tipos de, + +| 210, 375, 2, 4, 1, 255, instalacin, +| 211, 376, 2, 4, 1, 240, instalacin, + +& 226, 360, 380, 442, 250, 255, 254, 2, 2 +& 231, 365, 375, 437, 240, 254, 255, 2, 2 +| 231, 370, 2, 4, 0, 255, 1 Imagen de VGA_COPY, +| 231, 380, 2, 4, 0, 255, 2 Descompresor ARJ, +| 231, 390, 2, 4, 0, 255, 3 Descompresor ZIP, +| 231, 400, 2, 4, 0, 255, 4 XCopy, +| 231, 410, 2, 4, 0, 255, 5 Programa propio, +| 231, 420, 2, 4, 0, 255, 6 No Instalable, + +**** Informacin adicional +& 5, 380, 190, 442, 250, 255, 254, 2, 2 +& 10, 385, 185, 437, 240, 254, 255, 2, 2 + + + +************************************************************************ +* * +* MENSAJES DE ERROR <------>---------<----------->--------<------>- * +* -------<-------->_------<-------->-->----------<--------->_----<- * +************************************************************************ +100 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, Error en asignacin, +| 210, 242, 2, 5, 0, 240, de memoria CONVENCIONAL, +101 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, Error en asignacin, +| 210, 222, 2, 5, 0, 240, de memoria XMS, +102 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, Error cargando ICONOS, +| 210, 222, 2, 5, 0, 240, y punteros de RATON..., +103 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, Error cargando PCX, +| 210, 222, 2, 5, 0, 240, de Fondo., +104 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, Error cargando ficheros, +| 210, 222, 2, 5, 0, 240, de sonido WAV, +105 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, Error intentando ejecutar, +| 210, 222, 2, 5, 0, 240, el programa deseado..., +106 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, Error intentando ejecutar, +| 210, 222, 2, 5, 0, 240, el programa deseado..., +107 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, ERROR D E TIPO, +| 210, 222, 2, 5, 0, 240, D E S C O N O C I D O, + +108 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, ERROR ABRIENDO, +| 210, 222, 2, 5, 0, 240, FICHERO, +109 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, ERROR de ESCRITURA, +| 210, 222, 2, 5, 0, 240, DISCO PROTEGIDO., +110 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, ERROR de LECTURA, +| 210, 222, 2, 5, 0, 240, POSIBLE DAO FSICO, +111 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, ERROR INTENTANDO, +| 210, 222, 2, 5, 0, 240, CERRAR FICHERO, +112 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, ERROR INTENTANDO, +| 210, 222, 2, 5, 0, 240, CARGAR BOTONES, +113 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, Icono ha cambiado., +| 210, 222, 2, 5, 0, 240, Cargando nuevo archivo..., + + + + + diff --git a/CD_IN/CD_IN.PRJ b/CD_IN/CD_IN.PRJ new file mode 100644 index 0000000000000000000000000000000000000000..9295ad4a1321203b8e4f64186ad2b7a3aefe0a45 GIT binary patch literal 6845 zcmeI0`EwLS6vyA}K^Bs5pAo|pEH`Y(l8bO|W_QEFUhHlZFq$IC5|LwZlK=vSD0q~p zC2CRSFUsMCpyK(1pj1)i51djehsqE916H9Rc!1;k_CTDFY<4QFQe`=*eD-zs>-S#w zyq=lvSaY&AAuDn?nRqB(*CczFt%%EcB<1!WBJod_lf1SgWFm=`Ol|E%XQaecXp}jV1GS;7`=407>kTFOtj* zvH(_~2kNpI!)%QDo(#DcgR+4fAeSNa2Ku1b7g9f92fXcMNV_2IhV(k{2Jj~E7VtKM z_5&ZF_#yBSihF=}80Ni@_5tq#?*Z=vp8%f%{o!%|A{Yn^LUAypA(A$SLs1weVYc!h z-USS2NOuGI4D$#`GJ{3}qX0WF8W_W!)lFkrnkdXHH?ephL%JV$0H_7(fO;SfECm{X z2N|>ySOp|d_b{YJNX?MeKw1lF9i&Hq^}q&TBZHm?9!0SQ*aWl!j{%PZn;EnP(i6aw zC_V)|jp8%FR^U0{1z;QSBJdJm>C3PJJ%B90227URJcGA?Iiyx{msf`)p~{FWP+bv< z_+3G_Qtb;W{wlZU_8l0oP>>=9zpuhT@64!7;q;v9Br24wrQ<^V4+;F*e4f+WP7GAauav(OWC1^%7) zeCHu#r1nJH6!HdQDeoOpCLuMgW{r$E)r|aCrtqXHMOxyGiRNToTvie*SEruEh?2qi zV^j7_8_aBYhOK?Y&qCkI)rn-2>|a)!T#{V2WL1jJzCbvmpSSi*8%z=RKV5xF#XI`{ z>$YZ~n2wuycT5M?EAn~XZRYU*F18qsRCy{~H5KBENZaRmt31J&Ct9tzYeH2q{P=>r z8`SA_5ebe_EM#SkVp_LBk@w`X#M^uu@9tqq2?e9+e6`c-!k3MDQZM#KG@knM$6NhK zqQhB4uW%LH@VI?3;p)czwbOCw^}29Hy{QkM*x)LqBinn7;G7f}YNAzPPvo9Tmm^d$ zkGhz{c6#WT;u=8xsh_S*@5|w+_WNQnZ)#tEH|tEK6muzuvURPu_=@tdoW&)YJ3a%r zWe(dl>#TGxX7Oh>GJ|Lw+14oXq~S!%xx&f0hbP9dOO})Kr9GZGs4=OE;o%Fb$%C zIP7aBImoMfIq61XSX6|e3)#@> z$e}R=XWEQw0qXNY3s4)17N#nK>!{x@X5OIlaW~0yFwe~Sv8_m6eEpEMmwL#$oxcVg zX@{i57KJ?+6Yi;QOdW1RG#2p%E1`+3)M=&}y#dpFej1+ZQ=&$~;1{DWWJEC6 zpr$dCHNh&s--tz*-yc$pDAu?=UPHs?hcE2m;#V6dtk>rkw+%I1YK%$4n^&DUWk4Kz^D}GiWBwqIu+_xip*R ekc%qGOCG8qh1^uaZ~royM&&e} +#include +#include +#include + + + +extern int vez, memoria_asignada, Secuencias, *n_Botones_Secuencia; + struct Make_Boton { int Up, Left, Down, Right; unsigned char Cdf, Cb1, Cb2; unsigned char Ab, Pb; unsigned char Isc, Sc; }; +extern struct Make_Boton far *Botones; +struct Make_Boton Bot_Static; + + + +extern void Libera_Memoria(void);extern void Imprime_Boton(int D_Bord, struct Make_Boton Bot_Imp); + + +// Esta funcin debe ser llamada para la inicializacion de los +// botones en lugar de CARGA_BOTONES(...). +// Para cargar los botones con parametro 0 y para imprimir +// imprimir los estaticos con parametro [ n de secuencia ] +int Fichero_cd_in2(char Dinamicos_Estaticos); + +int Fichero_cd_in2(char Dinamicos_Estaticos) { + +static char vez = 0; + + switch(Dinamicos_Estaticos) { + + case 0: + if( vez == 0 ) { + vez = 1; + atexit( Libera_Memoria ); + } + if ( memoria_asignada == 1 ) { + free(n_Botones_Secuencia); + farfree(Botones); + memoria_asignada = 0; + } + int SiZe_BoToN = 0; + if ( (Botones = (struct Make_Boton far *)farcalloc(1, sizeof( struct Make_Boton ) )) == NULL) + return SIN_MEMORIA; + memoria_asignada = 1; + + Secuencias = 1; + if (( n_Botones_Secuencia = (int *) malloc( sizeof(int)*Secuencias ) ) == NULL) { + printf("\nNo Hay suficiente Memoria, ni para un Boton\n\n"); + return SIN_MEMORIA; + } + n_Botones_Secuencia[1 - 1] = 10; + SiZe_BoToN += ( sizeof( struct Make_Boton ) * 10); + if ( (Botones = (struct Make_Boton far *)farrealloc(Botones, SiZe_BoToN )) == NULL) { + Secuencias = 1; + return SIN_MEMORIA; + } + memoria_asignada = 1; + Botones [0].Left = 575; Botones [0].Up = 30;Botones [0]. Right = 635;Botones [0]. Down = 90; + Botones [0]. Cdf = 253; Botones [0]. Cb1 = 255; Botones [0]. Cb2 = 254; Botones [0]. Ab = 5; Botones [0]. Pb = 1; Botones [0]. Isc = 0; Botones [0]. Sc = 17; + Botones [1].Left = 515; Botones [1].Up = 30;Botones [1]. Right = 575;Botones [1]. Down = 90; + Botones [1]. Cdf = 253; Botones [1]. Cb1 = 255; Botones [1]. Cb2 = 254; Botones [1]. Ab = 5; Botones [1]. Pb = 1; Botones [1]. Isc = 0; Botones [1]. Sc = 32; + Botones [2].Left = 385; Botones [2].Up = 30;Botones [2]. Right = 445;Botones [2]. Down = 58; + Botones [2]. Cdf = 253; Botones [2]. Cb1 = 255; Botones [2]. Cb2 = 254; Botones [2]. Ab = 3; Botones [2]. Pb = 1; Botones [2]. Isc = 0; Botones [2]. Sc = 115; + Botones [3].Left = 385; Botones [3].Up = 62;Botones [3]. Right = 445;Botones [3]. Down = 90; + Botones [3]. Cdf = 253; Botones [3]. Cb1 = 255; Botones [3]. Cb2 = 254; Botones [3]. Ab = 3; Botones [3]. Pb = 1; Botones [3]. Isc = 0; Botones [3]. Sc = 116; + Botones [4].Left = 195; Botones [4].Up = 447;Botones [4]. Right = 380;Botones [4]. Down = 475; + Botones [4]. Cdf = 253; Botones [4]. Cb1 = 255; Botones [4]. Cb2 = 254; Botones [4]. Ab = 3; Botones [4]. Pb = 1; Botones [4]. Isc = 0; Botones [4]. Sc = 46; + Botones [5].Left = 5; Botones [5].Up = 447;Botones [5]. Right = 190;Botones [5]. Down = 475; + Botones [5]. Cdf = 253; Botones [5]. Cb1 = 255; Botones [5]. Cb2 = 254; Botones [5]. Ab = 3; Botones [5]. Pb = 1; Botones [5]. Isc = 0; Botones [5]. Sc = 31; + Botones [6].Left = 5; Botones [6].Up = 30;Botones [6]. Right = 125;Botones [6]. Down = 58; + Botones [6]. Cdf = 253; Botones [6]. Cb1 = 255; Botones [6]. Cb2 = 254; Botones [6]. Ab = 3; Botones [6]. Pb = 1; Botones [6]. Isc = 0; Botones [6]. Sc = 30; + Botones [7].Left = 130; Botones [7].Up = 30;Botones [7]. Right = 250;Botones [7]. Down = 58; + Botones [7]. Cdf = 253; Botones [7]. Cb1 = 255; Botones [7]. Cb2 = 254; Botones [7]. Ab = 3; Botones [7]. Pb = 1; Botones [7]. Isc = 0; Botones [7]. Sc = 48; + Botones [8].Left = 255; Botones [8].Up = 30;Botones [8]. Right = 380;Botones [8]. Down = 58; + Botones [8]. Cdf = 253; Botones [8]. Cb1 = 255; Botones [8]. Cb2 = 254; Botones [8]. Ab = 3; Botones [8]. Pb = 1; Botones [8]. Isc = 0; Botones [8]. Sc = 18; + Botones [9].Left = 445; Botones [9].Up = 30;Botones [9]. Right = 505;Botones [9]. Down = 90; + Botones [9]. Cdf = 253; Botones [9]. Cb1 = 255; Botones [9]. Cb2 = 254; Botones [9]. Ab = 5; Botones [9]. Pb = 1; Botones [9]. Isc = 0; Botones [9]. Sc = 120; + break; + case 1: + Bot_Static.Left = 1; Bot_Static.Up = 1; Bot_Static.Right = 639; Bot_Static.Down = 479; Bot_Static.Cdf = 253; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 2; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 5; Bot_Static.Up = 5; Bot_Static.Right = 635; Bot_Static.Down = 25; Bot_Static.Cdf = 240; Bot_Static.Cb1 = 254; Bot_Static.Cb2 = 255; Bot_Static.Ab = 2; Bot_Static.Pb = 2; + Imprime_Boton(1, Bot_Static); + setcolor(255); settextstyle( 2, 0, 5); outtextxy( 10, 7, " Utilidad de introducin de datos para CD_OUT Jos David Guilln 1995 (c)" ); + setcolor(251); settextstyle( 2, 0, 5); outtextxy( 11, 8, " Utilidad de introducin de datos para CD_OUT Jos David Guilln 1995 (c)" ); + Bot_Static.Left = 385; Bot_Static.Up = 95; Bot_Static.Right = 635; Bot_Static.Down = 475; Bot_Static.Cdf = 250; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 390; Bot_Static.Up = 100; Bot_Static.Right = 630; Bot_Static.Down = 470; Bot_Static.Cdf = 240; Bot_Static.Cb1 = 254; Bot_Static.Cb2 = 255; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + break; + case 2: + setcolor(241); settextstyle( 2, 0, 6); outtextxy( 5, 452, " _" ); + setcolor(0); settextstyle( 2, 0, 6); outtextxy( 6, 453, " _" ); + setcolor(255); settextstyle( 2, 0, 6); outtextxy( 5, 450, " S A L I R" ); + setcolor(0); settextstyle( 2, 0, 6); outtextxy( 6, 451, " S A L I R" ); + setcolor(241); settextstyle( 2, 0, 6); outtextxy( 195, 452, " _" ); + setcolor(240); settextstyle( 2, 0, 6); outtextxy( 196, 453, " _" ); + setcolor(255); settextstyle( 2, 0, 6); outtextxy( 195, 450, " C R E D I T O S" ); + setcolor(240); settextstyle( 2, 0, 6); outtextxy( 196, 451, " C R E D I T O S" ); + setcolor(241); settextstyle( 2, 0, 6); outtextxy( 11, 35, "_" ); + setcolor(0); settextstyle( 2, 0, 6); outtextxy( 12, 36, "_" ); + setcolor(255); settextstyle( 2, 0, 6); outtextxy( 11, 33, "A A D I R" ); + setcolor(0); settextstyle( 2, 0, 6); outtextxy( 12, 34, "A A D I R" ); + setcolor(241); settextstyle( 2, 0, 6); outtextxy( 136, 35, "_" ); + setcolor(240); settextstyle( 2, 0, 6); outtextxy( 137, 36, "_" ); + setcolor(255); settextstyle( 2, 0, 6); outtextxy( 136, 33, "B O R R A R" ); + setcolor(240); settextstyle( 2, 0, 6); outtextxy( 137, 34, "B O R R A R" ); + setcolor(241); settextstyle( 2, 0, 4); outtextxy( 257, 39, " _" ); + setcolor(240); settextstyle( 2, 0, 4); outtextxy( 258, 40, " _" ); + setcolor(255); settextstyle( 2, 0, 4); outtextxy( 257, 38, " Editar comentario" ); + setcolor(240); settextstyle( 2, 0, 4); outtextxy( 258, 39, " Editar comentario" ); + Bot_Static.Left = 5; Bot_Static.Up = 62; Bot_Static.Right = 172; Bot_Static.Down = 90; Bot_Static.Cdf = 240; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 2; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 172; Bot_Static.Up = 62; Bot_Static.Right = 230; Bot_Static.Down = 90; Bot_Static.Cdf = 240; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 2; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 230; Bot_Static.Up = 62; Bot_Static.Right = 288; Bot_Static.Down = 90; Bot_Static.Cdf = 240; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 2; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 288; Bot_Static.Up = 62; Bot_Static.Right = 318; Bot_Static.Down = 90; Bot_Static.Cdf = 240; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 2; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 318; Bot_Static.Up = 62; Bot_Static.Right = 350; Bot_Static.Down = 90; Bot_Static.Cdf = 240; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 2; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 350; Bot_Static.Up = 62; Bot_Static.Right = 380; Bot_Static.Down = 90; Bot_Static.Cdf = 240; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 2; + Imprime_Boton(1, Bot_Static); + setcolor(242); settextstyle( 2, 0, 4); outtextxy( 11, 71, " Nombre N_Install N_Exe Inst EXE Img" ); + setcolor(255); settextstyle( 2, 0, 4); outtextxy( 10, 70, " Nombre N_Install N_Exe Inst EXE Img" ); + Bot_Static.Left = 5; Bot_Static.Up = 95; Bot_Static.Right = 172; Bot_Static.Down = 330; Bot_Static.Cdf = 240; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 2; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 172; Bot_Static.Up = 95; Bot_Static.Right = 230; Bot_Static.Down = 330; Bot_Static.Cdf = 240; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 2; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 230; Bot_Static.Up = 95; Bot_Static.Right = 288; Bot_Static.Down = 330; Bot_Static.Cdf = 240; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 2; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 288; Bot_Static.Up = 95; Bot_Static.Right = 318; Bot_Static.Down = 330; Bot_Static.Cdf = 240; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 2; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 318; Bot_Static.Up = 95; Bot_Static.Right = 350; Bot_Static.Down = 330; Bot_Static.Cdf = 240; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 2; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 350; Bot_Static.Up = 95; Bot_Static.Right = 380; Bot_Static.Down = 330; Bot_Static.Cdf = 240; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 2; + Imprime_Boton(1, Bot_Static); + setcolor(255); settextstyle( 2, 0, 5); outtextxy( 11, 335, "Directorio" ); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 12, 336, "Directorio" ); + Bot_Static.Left = 120; Bot_Static.Up = 335; Bot_Static.Right = 380; Bot_Static.Down = 355; Bot_Static.Cdf = 240; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 2; + Imprime_Boton(1, Bot_Static); + setcolor(255); settextstyle( 2, 0, 5); outtextxy( 11, 355, "Nombre Imagen" ); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 12, 356, "Nombre Imagen" ); + Bot_Static.Left = 120; Bot_Static.Up = 355; Bot_Static.Right = 178; Bot_Static.Down = 375; Bot_Static.Cdf = 240; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 2; + Imprime_Boton(1, Bot_Static); + setcolor(255); settextstyle( 2, 1, 4); outtextxy( 200, 390, "Tipos de" ); + setcolor(240); settextstyle( 2, 1, 4); outtextxy( 201, 391, "Tipos de" ); + setcolor(255); settextstyle( 2, 1, 4); outtextxy( 210, 375, "instalacin" ); + setcolor(240); settextstyle( 2, 1, 4); outtextxy( 211, 376, "instalacin" ); + Bot_Static.Left = 226; Bot_Static.Up = 360; Bot_Static.Right = 380; Bot_Static.Down = 442; Bot_Static.Cdf = 250; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 2; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 231; Bot_Static.Up = 365; Bot_Static.Right = 375; Bot_Static.Down = 437; Bot_Static.Cdf = 240; Bot_Static.Cb1 = 254; Bot_Static.Cb2 = 255; Bot_Static.Ab = 2; Bot_Static.Pb = 2; + Imprime_Boton(1, Bot_Static); + setcolor(255); settextstyle( 2, 0, 4); outtextxy( 231, 370, " 1 Imagen de VGA_COPY" ); + setcolor(255); settextstyle( 2, 0, 4); outtextxy( 231, 380, " 2 Descompresor ARJ" ); + setcolor(255); settextstyle( 2, 0, 4); outtextxy( 231, 390, " 3 Descompresor ZIP" ); + setcolor(255); settextstyle( 2, 0, 4); outtextxy( 231, 400, " 4 XCopy" ); + setcolor(255); settextstyle( 2, 0, 4); outtextxy( 231, 410, " 5 Programa propio" ); + setcolor(255); settextstyle( 2, 0, 4); outtextxy( 231, 420, " 6 No Instalable" ); + Bot_Static.Left = 5; Bot_Static.Up = 380; Bot_Static.Right = 190; Bot_Static.Down = 442; Bot_Static.Cdf = 250; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 2; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 10; Bot_Static.Up = 385; Bot_Static.Right = 185; Bot_Static.Down = 437; Bot_Static.Cdf = 240; Bot_Static.Cb1 = 254; Bot_Static.Cb2 = 255; Bot_Static.Ab = 2; Bot_Static.Pb = 2; + Imprime_Boton(1, Bot_Static); + break; + case 100: + Bot_Static.Left = 200; Bot_Static.Up = 212; Bot_Static.Right = 440; Bot_Static.Down = 267; Bot_Static.Cdf = 251; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 205; Bot_Static.Up = 217; Bot_Static.Right = 435; Bot_Static.Down = 262; Bot_Static.Cdf = 253; Bot_Static.Cb1 = 254; Bot_Static.Cb2 = 255; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " Error en asignacin" ); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 242, " de memoria CONVENCIONAL" ); + break; + case 101: + Bot_Static.Left = 200; Bot_Static.Up = 212; Bot_Static.Right = 440; Bot_Static.Down = 267; Bot_Static.Cdf = 251; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 205; Bot_Static.Up = 217; Bot_Static.Right = 435; Bot_Static.Down = 262; Bot_Static.Cdf = 253; Bot_Static.Cb1 = 254; Bot_Static.Cb2 = 255; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " Error en asignacin" ); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " de memoria XMS" ); + break; + case 102: + Bot_Static.Left = 200; Bot_Static.Up = 212; Bot_Static.Right = 440; Bot_Static.Down = 267; Bot_Static.Cdf = 251; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 205; Bot_Static.Up = 217; Bot_Static.Right = 435; Bot_Static.Down = 262; Bot_Static.Cdf = 253; Bot_Static.Cb1 = 254; Bot_Static.Cb2 = 255; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " Error cargando ICONOS" ); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " y punteros de RATON..." ); + break; + case 103: + Bot_Static.Left = 200; Bot_Static.Up = 212; Bot_Static.Right = 440; Bot_Static.Down = 267; Bot_Static.Cdf = 251; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 205; Bot_Static.Up = 217; Bot_Static.Right = 435; Bot_Static.Down = 262; Bot_Static.Cdf = 253; Bot_Static.Cb1 = 254; Bot_Static.Cb2 = 255; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " Error cargando PCX" ); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " de Fondo." ); + break; + case 104: + Bot_Static.Left = 200; Bot_Static.Up = 212; Bot_Static.Right = 440; Bot_Static.Down = 267; Bot_Static.Cdf = 251; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 205; Bot_Static.Up = 217; Bot_Static.Right = 435; Bot_Static.Down = 262; Bot_Static.Cdf = 253; Bot_Static.Cb1 = 254; Bot_Static.Cb2 = 255; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " Error cargando ficheros" ); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " de sonido WAV" ); + break; + case 105: + Bot_Static.Left = 200; Bot_Static.Up = 212; Bot_Static.Right = 440; Bot_Static.Down = 267; Bot_Static.Cdf = 251; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 205; Bot_Static.Up = 217; Bot_Static.Right = 435; Bot_Static.Down = 262; Bot_Static.Cdf = 253; Bot_Static.Cb1 = 254; Bot_Static.Cb2 = 255; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " Error intentando ejecutar" ); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " el programa deseado..." ); + break; + case 106: + Bot_Static.Left = 200; Bot_Static.Up = 212; Bot_Static.Right = 440; Bot_Static.Down = 267; Bot_Static.Cdf = 251; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 205; Bot_Static.Up = 217; Bot_Static.Right = 435; Bot_Static.Down = 262; Bot_Static.Cdf = 253; Bot_Static.Cb1 = 254; Bot_Static.Cb2 = 255; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " Error intentando ejecutar" ); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " el programa deseado..." ); + break; + case 107: + Bot_Static.Left = 200; Bot_Static.Up = 212; Bot_Static.Right = 440; Bot_Static.Down = 267; Bot_Static.Cdf = 251; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 205; Bot_Static.Up = 217; Bot_Static.Right = 435; Bot_Static.Down = 262; Bot_Static.Cdf = 253; Bot_Static.Cb1 = 254; Bot_Static.Cb2 = 255; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " ERROR D E TIPO" ); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " D E S C O N O C I D O" ); + break; + case 108: + Bot_Static.Left = 200; Bot_Static.Up = 212; Bot_Static.Right = 440; Bot_Static.Down = 267; Bot_Static.Cdf = 251; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 205; Bot_Static.Up = 217; Bot_Static.Right = 435; Bot_Static.Down = 262; Bot_Static.Cdf = 253; Bot_Static.Cb1 = 254; Bot_Static.Cb2 = 255; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " ERROR ABRIENDO" ); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " FICHERO" ); + break; + case 109: + Bot_Static.Left = 200; Bot_Static.Up = 212; Bot_Static.Right = 440; Bot_Static.Down = 267; Bot_Static.Cdf = 251; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 205; Bot_Static.Up = 217; Bot_Static.Right = 435; Bot_Static.Down = 262; Bot_Static.Cdf = 253; Bot_Static.Cb1 = 254; Bot_Static.Cb2 = 255; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " ERROR de ESCRITURA" ); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " DISCO PROTEGIDO." ); + break; + case 110: + Bot_Static.Left = 200; Bot_Static.Up = 212; Bot_Static.Right = 440; Bot_Static.Down = 267; Bot_Static.Cdf = 251; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 205; Bot_Static.Up = 217; Bot_Static.Right = 435; Bot_Static.Down = 262; Bot_Static.Cdf = 253; Bot_Static.Cb1 = 254; Bot_Static.Cb2 = 255; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " ERROR de LECTURA" ); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " POSIBLE DAO FSICO" ); + break; + case 111: + Bot_Static.Left = 200; Bot_Static.Up = 212; Bot_Static.Right = 440; Bot_Static.Down = 267; Bot_Static.Cdf = 251; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 205; Bot_Static.Up = 217; Bot_Static.Right = 435; Bot_Static.Down = 262; Bot_Static.Cdf = 253; Bot_Static.Cb1 = 254; Bot_Static.Cb2 = 255; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " ERROR INTENTANDO" ); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " CERRAR FICHERO" ); + break; + case 112: + Bot_Static.Left = 200; Bot_Static.Up = 212; Bot_Static.Right = 440; Bot_Static.Down = 267; Bot_Static.Cdf = 251; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 205; Bot_Static.Up = 217; Bot_Static.Right = 435; Bot_Static.Down = 262; Bot_Static.Cdf = 253; Bot_Static.Cb1 = 254; Bot_Static.Cb2 = 255; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " ERROR INTENTANDO" ); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " CARGAR BOTONES" ); + break; + case 113: + Bot_Static.Left = 200; Bot_Static.Up = 212; Bot_Static.Right = 440; Bot_Static.Down = 267; Bot_Static.Cdf = 251; Bot_Static.Cb1 = 255; Bot_Static.Cb2 = 254; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + Bot_Static.Left = 205; Bot_Static.Up = 217; Bot_Static.Right = 435; Bot_Static.Down = 262; Bot_Static.Cdf = 253; Bot_Static.Cb1 = 254; Bot_Static.Cb2 = 255; Bot_Static.Ab = 2; Bot_Static.Pb = 1; + Imprime_Boton(1, Bot_Static); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " Icono ha cambiado." ); + setcolor(240); settextstyle( 2, 0, 5); outtextxy( 210, 222, " Cargando nuevo archivo..." ); + break; + default: + break; + } + +return 1; + +} diff --git a/CD_IN/CD_IN2.IMG b/CD_IN/CD_IN2.IMG new file mode 100644 index 0000000000000000000000000000000000000000..05c09e6272ae30782f8fdde309b400e31f2c30bd GIT binary patch literal 23530 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 literal 0 HcmV?d00001 diff --git a/CD_IN/CD_PCX.CPP b/CD_IN/CD_PCX.CPP new file mode 100644 index 0000000..21f9b73 --- /dev/null +++ b/CD_IN/CD_PCX.CPP @@ -0,0 +1,128 @@ +///////////////////////////// FICHEROS A INCLUIR ///////////////////////////// +#include +#include +#include +#include +#include // Para getch(); +#include // Para outtextxy(...); y cleardevice(...); +#include "cd_error.h" +#include "..\..\jd_lib\make_bot.h" // Fuciones de MAKE_BOTON +////////////////////////////////// VARIABLES ///////////////////////////////// + +char far *dir_vga; +int ancho; +int alto; +char bits_pixel; +FILE *handle; + +char dibujo[15]; +char dac[256*3]; + +//////////////////////// DECLARACIONES DE FUNCIONES ////////////////////////// + +void dibujo_640_x_480_256_c(void); +void asigna_modo_video(char); + +extern "C" +{ + int SET_VESA(int); + void CHANGE_BANK(int); + void ENCIENDE_PANTALLA(char *); + void APAGA_PANTALLA(char *); +} + +///////////////////////////////// PROGRAMA /////////////////////////////////// +void Inicializa_Dibujo(void) +{ + int esq_x1, esq_y1, esq_x2, esq_y2; + char string[80] = "cd_out0"; + + randomize(); + + string[7] = (unsigned char)(random(7)+ '0'); + string[8] = '.'; + string[9] = 'P'; + string[10] = 'C'; + string[11] = 'X'; + string[12] = '\0'; + + + + if((handle=fopen(/*"CD_OUT1.IMG"*/string, "rb"))==NULL) + { + Imprime_Estaticos( E_O, "cd_out.img"); // Imprime botones estaticos 'Seccion 2' + Espera_Tecla_o_Raton(); + restorecrtmode(); + printf("No se encontr el archivo especificado"); + exit(1); + } + + if(10!=getc(handle)) + { + Imprime_Estaticos( E_PCX, "cd_out.img"); // Imprime botones estaticos 'Seccion 2' + Espera_Tecla_o_Raton(); + restorecrtmode(); + printf("El archivo especificado no es un fichero PCX"); + exit(1); + } + + getw(handle); bits_pixel=getc(handle); + + esq_x1=getw(handle); esq_y1=getw(handle); + esq_x2=getw(handle); esq_y2=getw(handle); + + ancho=esq_x2-esq_x1+1; + alto =esq_y2-esq_y1+1; + + if(ancho!=640 || alto!=480 || bits_pixel!=8) + { + Imprime_Estaticos( E_PCX, "cd_out.img"); // Imprime botones estaticos 'Seccion 2' + Espera_Tecla_o_Raton(); + restorecrtmode(); + printf("El fichero especificado no es un dibujo de 640 x 480 en 256 colores"); + exit(1); + } + +// APAGA_PANTALLA(dac); + dibujo_640_x_480_256_c(); +// ENCIENDE_PANTALLA(dac); + +} + +void dibujo_640_x_480_256_c(void) +{ + unsigned char byte, contador; + int bank, n; + + fseek(handle, 128, 0); + + bank=0; (long)dir_vga=0xA0000000L; + + for(alto=480; alto>0; alto--) + { + for(ancho=640; ancho>0; ) + { + byte=getc(handle); + if(byte<=0xC0) + { + *dir_vga++=byte; ancho--; + if((long)dir_vga==0xA0000000L) { bank++; CHANGE_BANK(bank); } + } + else + { + contador=byte&0x3F; byte=getc(handle); + for(; contador>0; contador--) + { + *dir_vga++=byte; ancho--; + if((long)dir_vga==0xA0000000L) { bank++; CHANGE_BANK(bank); } + } + } + } + } + getc(handle); + +// for(n=0; n<256*3; n++) dac[n]=getc(handle) >> 2; + for(n=0; n<(256-16)*3; n++) dac[n]=getc(handle) >> 2; + + fclose(handle); +} diff --git a/CD_IN/CD_RATON.CPP b/CD_IN/CD_RATON.CPP new file mode 100644 index 0000000..747b052 --- /dev/null +++ b/CD_IN/CD_RATON.CPP @@ -0,0 +1,215 @@ +/////////////////////////////////////////////////////////////////////////// +///// Nombre: Craton.cpp /// +///// Modulo: Perteneciente a JD_FONTS.CPP /// +//// Descripcin: Utilidades para el manejo del raton /// +//// /// +//// Autor: ( Ver Pc-Mania n 20 ) /// +//// Autor puntero del raton: Jos David Guilln Dominguez /// +//// Fecha: ( Desconocida ) /// +//// /// +//// Compilador Borland C++ 3.0 ( Creacin original en Turbo C 2.0 ) /// +/////////////////////////////////////////////////////////////////////////// + +#include +#include + +void desactiva_raton(void); +void activa_raton(void); +void inicializa_raton_grafico(int x1, int y1, int x2, int y2, int px, int py); +void Anclar_Raton(void); +int Espera_Tecla_o_Raton(void); + + +int raton=0; +int x_raton; +int y_raton; +int boton_izq; +int boton_der; +extern int PunteroRaton; +int dir_raton [32+32] = { + +// 0x3FFF, /* 1 1 1 1 1 1 1 1 1 1 1 1 1 1*/ +// 0x1FFF, /* 1 1 1 1 1 1 1 1 1 1 1 1 1*/ +// 0x0FFF, /* 1 1 1 1 1 1 1 1 1 1 1 1*/ +// 0x07FF, /* 1 1 1 1 1 1 1 1 1 1 1*/ +// 0x03FF, /* 1 1 1 1 1 1 1 1 1 1*/ +// 0x07FF, /* 1 1 1 1 1 1 1 1 1 1 1*/ +// 0xC3FF, /*1 1 1 1 1 1 1 1 1 1 1 1*/ + + 0x007F, /* 1 1 1 1 1 1 1*/ + 0x00FF, /* 1 1 1 1 1 1 1 1*/ + 0x01FF, /* 1 1 1 1 1 1 1 1 1*/ + 0x01FF, /* 1 1 1 1 1 1 1 1 1*/ + 0x00FF, /* 1 1 1 1 1 1 1 1*/ + 0x007F, /* 1 1 1 1 1 1 1*/ + 0x18FF, /* 1 1 1 1 1 1 1 1 1 1*/ + +// 0xFC7F, /*1 1 1 1 1 1 1 1 1 1 1 1 1*/ +// 0xF83F, /*1 1 1 1 1 1 1 1 1 1 1*/ +// 0xF01F, /*1 1 1 1 1 1 1 1 1*/ +// 0xE00F, /*1 1 1 1 1 1 1*/ +// 0xE00F, /*1 1 1 1 1 1 1*/ +// 0xF83F, /*1 1 1 1 1 1 1 1 1 1 1*/ +// 0xF83F, /*1 1 1 1 1 1 1 1 1 1 1*/ + + 0x800F, /*1 1 1 1 1*/ + 0x8083, /*1 1 1*/ + 0x8001, /*1 1*/ + 0xF810, /*1 1 1 1 1 1 1*/ + 0x8810, /*1 1 1 1*/ + 0x8811, /*1 1 1 1*/ + 0x8003, /*1 1 1*/ + 0x8007, /*1 1 1 1*/ + 0x800F, /*1 1 1 1 1*/ + +// 0x0000, /*0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*/ +// 0x4000, /*0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*/ +// 0x6000, /*0 0 0 0 0 0 0 0 0 0 0 0 0 0*/ +// 0x7000, /*0 0 0 0 0 0 0 0 0 0 0 0 0*/ +// 0x7800, /*0 0 0 0 0 0 0 0 0 0 0 0*/ +// 0x3000, /*0 0 0 0 0 0 0 0 0 0 0 0 0 0*/ +// 0x1800, /*0 0 0 0 0 0 0 0 0 0 0 0 0 0*/ + + 0x0000, /*0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*/ + 0x7E00, /*0 0 0 0 0 0 0 0 0 0*/ + 0x7C00, /*0 0 0 0 0 0 0 0 0 0 0*/ + 0x7C00, /*0 0 0 0 0 0 0 0 0 0 0*/ + 0x7E00, /*0 0 0 0 0 0 0 0 0 0*/ + 0x6700, /*0 0 0 0 0 0 0 0 0 0 0*/ + 0x0200, /*0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*/ + + +// 0x0100, /*0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*/ +// 0x0380, /*0 0 0 0 0 0 0 0 0 0 0 0 0*/ +// 0x07C0, /*0 0 0 0 0 0 0 0 0 0 0*/ +// 0x0FE0, /*0 0 0 0 0 0 0 0 0*/ +// 0x0380, /*0 0 0 0 0 0 0 0 0 0 0 0 0*/ +// 0x0380, /*0 0 0 0 0 0 0 0 0 0 0 0 0*/ +// 0x0000, /*0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*/ + + 0x0000, /*0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*/ + 0x3E70, /*0 0 0 0 0 0 0 0*/ + 0x0248, /*0 0 0 0 0 0 0 0 0 0 0 0 0*/ + 0x0244, /*0 0 0 0 0 0 0 0 0 0 0 0 0*/ + 0x0242, /*0 0 0 0 0 0 0 0 0 0 0 0 0*/ + 0x2244, /*0 0 0 0 0 0 0 0 0 0 0 0*/ + 0x2248, /*0 0 0 0 0 0 0 0 0 0 0 0*/ + 0x3E70, /*0 0 0 0 0 0 0 0*/ + 0x0000 /*0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*/ + }; + + +void inicializa_raton_grafico(int x1, int y1, int x2, int y2, int px, int py) +{ + struct SREGS seg; + 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 */ + + if(!PunteroRaton) { + dir = (long)dir_raton; + ent.x.ax = 9; + ent.x.bx = 0; + ent.x.cx = 0; + ent.x.dx = (int) dir; + seg.es = (int) (dir >> 16); + int86x(0x33, &ent, &sal, &seg); /* asigna un cursor diferente */ + } + + ent.x.ax = 4; + ent.x.cx = px; + x_raton=ent.x.cx >> 1; + ent.x.dx = py; + y_raton=ent.x.dx; + int86(0x33, &ent, &sal); /* fija la posicin del ratn */ + + ent.x.ax = 1; + int86(0x33, &ent, &sal); /* muestra el puntero del ratn */ + } +} + +void activa_raton(void) +{ + union REGS ent, sal; + + ent.x.ax = 1; + int86(0x33, &ent, &sal); +} + +void desactiva_raton(void) +{ + union REGS ent, sal; + + ent.x.ax = 2; + int86(0x33, &ent, &sal); +} + + + +void Anclar_Raton(void){ + union REGS ent, sal; + do { + ent.x.ax = 3; + int86(0x33, &ent, &sal); + boton_izq = sal.x.bx & 1; + boton_der = (sal.x.bx >> 1) & 1; + } while(boton_izq==1 || boton_der==1); +} + +int Espera_Tecla_o_Raton(void){ + union REGS ent, sal; + + ent.x.ax = 3; + + do{ + int86(0x33, &ent, &sal); // lee posicin y estados del botn + boton_izq = sal.x.bx & 1; + boton_der = (sal.x.bx >> 1) & 1; + x_raton = sal.x.cx; + y_raton = sal.x.dx; + + }while( boton_izq == 0 && boton_der == 0 && kbhit()==0 ); + + + + ///////////////////////////////////////// + // RETURN Derecho Izquierdo // + // // + // 0 0 0 // + // 1 1 0 // + // 2 0 1 // + // 3 1 1 // + // // + ///////////////////////////////////////// + int Que; + + if ( boton_der==0 && boton_izq==0 ) Que = 0; + if ( boton_der==1 && boton_izq==0 ) Que = 1; + if ( boton_der==0 && boton_izq==1 ) Que = 2; + if ( boton_der==1 && boton_izq==1 ) Que = 3; + + return Que; +} diff --git a/CD_IN/CD_RATON.H b/CD_IN/CD_RATON.H new file mode 100644 index 0000000..ac19ee5 --- /dev/null +++ b/CD_IN/CD_RATON.H @@ -0,0 +1,8 @@ +extern void desactiva_raton(void); +extern void activa_raton(void); +extern void inicializa_raton_grafico(int x1, int y1, int x2, int y2, int px, int py); +extern void Anclar_Raton(void); +extern int Espera_Tecla_o_Raton(void); + + +extern int raton, x_raton, y_raton, boton_izq, boton_der, PunteroRaton; diff --git a/CD_IN/CD_STOCK.CPP b/CD_IN/CD_STOCK.CPP new file mode 100644 index 0000000..ba3c449 --- /dev/null +++ b/CD_IN/CD_STOCK.CPP @@ -0,0 +1,883 @@ +#define SV_REF_X + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "c:\things\borlandc\jd_lib\jd_graph.h" +#include "sv_util.h" +#include "sv_graph.h" +#include "sv_ref_x.h" + + +#define Letra_Boton setcolor(1); +#define Azul 1 +#define Texto_Normal setcolor(63); +#define Texto_Negrita setcolor(0); + +extern int x_raton, y_raton, raton; +extern int boton_izq, boton_der; + +extern void desactiva_raton(void); +extern void activa_raton(void); +extern void Anclar_Raton(void); +extern void inicializa_raton_grafico(int x1, int y1, int x2, int y2, int px, int py); +extern int Espera_Tecla_o_Raton(void); +extern void BEEP(void); + +extern int InputCadenaG(char *s, int numalp, int lmax, int cc, int cf, struct boton Campo); +extern int InputCadenaG_l(char *s, int numalp, int lmax, int cc, int cf, struct boton Campo, int Row); +extern int InputCadenaG_T4(char *s, int numalp, int lmax, int cc, int cf, struct boton Campo, int RoW); + +void PutLineStock(void); +void GetLineStock(void); +void Menu_de_Stock(void); +void AddRecordStock(void); +void PrintLineStock(void); +void Edit_Item_Stock(void); +void Abre_Ficha_Stock(void); +void DeleteRecordStock(void); +void Mueve_Abajo_Stock(void); +void Mueve_Arriba_Stock(void); +void CompruebaLineasStock(void); +void PrintWholeScreenStock(void); +void EditCursorStock(int ShowHide); +void Imprimir_Stock(); +void Poner_a_cero_estructura_actual_Stock(void); +void Recalcula_Porcentaje(int Individual_Seleccionado); + +// void Llena_con_Stock_basicas(void); +extern void Coloca_Nombres_a_botones(void); + + + + + + +// extern int Confirma(char *f1, char *f2, char *f3); +extern int Comprueba_Impresora(void); + + + + + +struct Stock_inx { unsigned int Fin; }; + + +struct Stock_actual { int Ref; long Und_0; long Und_1; }; + +struct Stock_actual Stock1; +struct Stock_actual Stock1_Graficas[10]; +struct Stock_inx Stock1_inx; + +struct boton *PS;//[5] +extern struct boton Comunes[9]; + +FILE *Stock; // Fichero de Stock + + +int CurrRowStock1; +int CurrColStock1; +int CurrTopLineStock; + + + + + +void Menu_de_Stock(void) { + + int finished = 0, key, bpush; + CurrRowStock1 = 1; CurrColStock1 = 1; + + CurrTopLineStock = 1; + + inicializa_raton_grafico(0, 0, 624, 464, 320, 240); + if(raton!=0) desactiva_raton(); + + if( ( PS = (struct boton *) malloc( sizeof(struct boton)*5 ) ) == NULL ) + { + Confirma("Memoria insuficiente", "para crear tablas de", "posisin PS."); + return ; + } + + + cleardevice(); + Dibuja_Pantalla_Stock(PS); + Fuente(SMALL_FONT, 5); + setcolor(NEGRO); + Coloca_Nombres_a_botones(); + setcolor(GRIS_C); + outtextxy(Comunes[3].left, Comunes[3].up, " SWAP" ); + outtextxy(Comunes[3].left, Comunes[3].up+18, " F6 " ); + + + Fuente(SMALL_FONT, 4); + Abre_Ficha_Stock(); + Abre_Ficha_Referencias(); + Carga_Referencias(); + + PrintWholeScreenStock(); + GetLineStock(); + int oldCR1=0, oldCC1=0; + +do{ + +if(oldCR1!=CurrRowStock1 || oldCC1!=CurrColStock1 ) + EditCursorStock(0); + +oldCR1 = CurrRowStock1; oldCC1 = CurrColStock1; + + if(raton!=0) activa_raton(); + Espera_Tecla_o_Raton(); + if(raton!=0) desactiva_raton(); + + if(kbhit()){ + EditCursorStock(1); + key = getch(); + if( isprint(key) || isspace(key) ) { + EditCursorStock(0); + if(key!=13) ungetch(key); + Edit_Item_Stock(); + Recalcula_Porcentaje(1); + EditCursorStock(0); + } else if( key == 0 ) { + switch( (key=getch()) ){ + // Flecha Arriba + case 72: + Mueve_Arriba_Stock(); + Recalcula_Porcentaje(1); + break; + // Flecha Izquierda + case 75: + case 15: + CurrColStock1--; + if ( CurrColStock1<1 ) CurrColStock1=5; + break; + // Flecha Derecha + case 77: + case 9: + CurrColStock1++; + if ( CurrColStock1>5 ) CurrColStock1=1; + break; + // Flecha Abajo + case 80: + Mueve_Abajo_Stock(); + Recalcula_Porcentaje(1); + break; + // Buscar F2 + case 60: +// BuscarStock(); + break; + // Imprimir Stock F5 + case 63: + Imprimir_Stock(); + break; + + // F9 --> AADIR + case 67: +// if( Confirma("AADIR NUEVO STOCK", "INICIAL", "") ) +// if ( Pide_Codigo(SV_CFG.COD_Stock) ) +// AddRecordStock(); + break; + // F10 -> BORRAR + case 68: + if( Confirma("ELIMINAR TOTALMENTE", "STOCK ACTUAL", "") ) +// if ( Pide_Codigo(SV_CFG.COD_Stock) ) + DeleteRecordStock(); + Recalcula_Porcentaje(1); + break; + + // INICIO + case 71: + CurrColStock1 = 1; + break; + // FIN + case 79: + CurrColStock1 = 5; + break; + // RePg + case 73: + // CurrRow = 1; +// + if( CurrTopLineStock > /*28*/26 ) { CurrTopLineStock -= /*28*/26; } else { CurrTopLineStock = 1; } + if( CurrTopLineStock < 1 ) { CurrTopLineStock = 1; } + PrintWholeScreenStock(); + GetLineStock(); + EditCursorStock(0); + Recalcula_Porcentaje(1); + break; +// + // AvPg + case 81: + // CurrRow = 1; +// + CurrTopLineStock += /*28*/26; + if ( (CurrTopLineStock+CurrRowStock1) > Stock1_inx.Fin) { CurrTopLineStock = Stock1_inx.Fin; CurrRowStock1 = 1; } + if (CurrTopLineStock==0) CurrTopLineStock = 1; + PrintWholeScreenStock(); + GetLineStock(); + EditCursorStock(0); + Recalcula_Porcentaje(1); +// + break; + // Salir F1 + case 59: + finished = 1; + break; + default: + break; + } + EditCursorStock(0); + } + } else if(raton!=0 && ( boton_izq==1 || boton_der==1 ) ) + if( (bpush = CheckButon( 9, Comunes))>0 ) { + EditCursorStock(1); + switch(bpush){ + // Flecha Arriba + case 1: + Mueve_Arriba_Stock(); + Recalcula_Porcentaje(1); + break; + // Buscar + case 2: +// BuscarVend(); + break; + // Flecha Abajo + case 3: + Mueve_Abajo_Stock(); + Recalcula_Porcentaje(1); + break; + case 4: + break; + // Imprimir + case 5: + Imprimir_Stock(); + break; + // Aadir + case 6: +// if( Confirma("AADIR NUEVO STOCK", "INICIAL", "") ) +// if ( Pide_Codigo(SV_CFG.COD_Stock) ) +// AddRecordStock(); + break; + // Borrar + case 7: + if( Confirma("ELIMINAR TOTALMENTE", "STOCK ACTUAL", "") ) +// if ( Pide_Codigo(SV_CFG.COD_Stock) ) + DeleteRecordStock(); + Recalcula_Porcentaje(1); + break; + // Salir + case 9: + finished = 1; + break; + default: + break; + } + EditCursorStock(0); + } else CompruebaLineasStock(); + +}while(!finished); + +fclose(Stock); // Fichero Vendedores +fclose(Ref); // Fichero Vendedores +free(PS); // Libera la memoria + +if(Memory_ok==1) farfree(Addr); else free(Ref_inx_addr); + + + +} + +void Mueve_Abajo_Stock(void){ + + int CurrRecord = CurrTopLineStock + CurrRowStock1 - 1; + + if (CurrRowStock1==/*28*/40) { + if ( (CurrRecord - 1) >= Stock1_inx.Fin) { BEEP(); EditCursorStock(0); } + else { CurrTopLineStock++; + PrintWholeScreenStock(); + // + // + // + GetLineStock(); +// PrintLineStock(); + } + } else { + if( (CurrRecord - 1) >= Stock1_inx.Fin) { BEEP(); EditCursorStock(0); } + else { CurrRowStock1++; + GetLineStock(); +// PrintLineStock(); + } + } + +} + +void Mueve_Arriba_Stock(void){ + int CurrRecord = CurrTopLineStock + CurrRowStock1 - 1; + + if (CurrRowStock1==1) { + if ((CurrRecord - 1) <= 0) { BEEP(); EditCursorStock(0); } + else { + CurrTopLineStock--; + PrintWholeScreenStock(); + // + // + // + GetLineStock(); +// PrintLineStock(); + } + + } else { + if( (CurrRecord - 1) <= 0) BEEP(); + else { CurrRowStock1--; + + GetLineStock(); +// PrintLineStock(); + } + } + +} + +void EditCursorStock(int ShowHide) { + +char Buffer[80]; + + setcolor(GRIS_C); + setfillstyle(SOLID_FILL, GRIS_C); + bar(10, 455, 545, 473); + + + if (!ShowHide) { + setcolor(63); + setfillstyle(SOLID_FILL, 63); + bar((PS[CurrColStock1-1].left+2), PS[CurrColStock1-1].up+(CurrRowStock1-1)*/*15*/12+/*2*/4, PS[CurrColStock1-1].right-2, PS[CurrColStock1-1].up+/*3*/4+((CurrRowStock1)-1)*12+10); + setcolor(0); + } else { + setcolor(0); + setfillstyle(SOLID_FILL, 0); + bar((PS[CurrColStock1-1].left+2), PS[CurrColStock1-1].up+(CurrRowStock1-1)*/*15*/12+/*2*/4, PS[CurrColStock1-1].right-2, PS[CurrColStock1-1].up+/*3*/4+((CurrRowStock1)-1)*12+10); + Texto_Normal + } + + if(Ref_no_valid) setcolor(ROJO); + +// struct Stock_actual { int Ref; long Und_0; long Und_1; }; + + + switch(CurrColStock1){ +// LA REFERENCIA DEBE SER INDEDITABLE... + + case 1: //4 + sprintf(Buffer, "% 5d", Stock1.Ref ); + outtextxy( PS[0].left+2, (PS[0].up+3)+(CurrRowStock1-1)*12, Buffer ); + outtextxy( 15, 455, "Referencia de Producto. 4 digitos mximo."); + break; + case 2: + outtextxy( PS[1].left+2, (PS[1].up+3)+(CurrRowStock1-1)*12, Ref1.Concepto ); + outtextxy( 15, 455, "Concepto."); + break; + case 3: + sprintf(Buffer, " % 5d", Stock1.Und_1); // 4 + outtextxy( PS[2].left+2, (PS[2].up+3)+(CurrRowStock1-1)*12, Buffer); + outtextxy( 15, 455, "Unidades con Cod. 1"); + break; + case 4: + sprintf(Buffer, " % 5d", Stock1.Und_0); // 4 + outtextxy( PS[3].left+2, (PS[3].up+3)+(CurrRowStock1-1)*12, Buffer ); + outtextxy( 15, 455, "Unidades con Cod. 0"); + break; + case 5: + sprintf(Buffer, "% 10d", ( Stock1.Und_0 + Stock1.Und_1 ) ); // 4 + outtextxy( PS[4].left+2, (PS[4].up+3)+(CurrRowStock1-1)*12, Buffer ); + outtextxy( 15, 455, "Unidades TOTALES."); + break; + } + +} + + + +void PrintLineStock(void){ + + char Buffer[80]; + + setcolor(0); + setfillstyle(SOLID_FILL, 0); + bar((PS[0].left+2), PS[0].up+(CurrRowStock1-1)*12+/*2*/4, PS[0].right-2, PS[0].up+(CurrRowStock1-1)*12+10); + bar((PS[1].left+2), PS[1].up+(CurrRowStock1-1)*12+/*2*/4, PS[1].right-2, PS[1].up+(CurrRowStock1-1)*12+10); + bar((PS[2].left+2), PS[2].up+(CurrRowStock1-1)*12+/*2*/4, PS[2].right-2, PS[2].up+(CurrRowStock1-1)*12+10); + bar((PS[3].left+2), PS[3].up+(CurrRowStock1-1)*12+/*2*/4, PS[3].right-2, PS[3].up+(CurrRowStock1-1)*12+10); + bar((PS[4].left+2), PS[4].up+(CurrRowStock1-1)*12+/*2*/4, PS[4].right-2, PS[4].up+(CurrRowStock1-1)*12+10); + + Texto_Normal + + if(Ref_no_valid) setcolor(ROJO); + // + sprintf(Buffer, "% 5d", Stock1.Ref ); + outtextxy( PS[0].left+2, (PS[0].up+3)+(CurrRowStock1-1)*12, Buffer ); + outtextxy( PS[1].left+2, (PS[1].up+3)+(CurrRowStock1-1)*12, Ref1.Concepto ); + sprintf(Buffer, " % 5d", Stock1.Und_1); // 4 + outtextxy( PS[2].left+2, (PS[2].up+3)+(CurrRowStock1-1)*12, Buffer); + sprintf(Buffer, " % 5d", Stock1.Und_0); // 4 + outtextxy( PS[3].left+2, (PS[3].up+3)+(CurrRowStock1-1)*12, Buffer ); + sprintf(Buffer, "% 10d", ( Stock1.Und_0 + Stock1.Und_1 ) ); // 4 + outtextxy( PS[4].left+2, (PS[4].up+3)+(CurrRowStock1-1)*12, Buffer ); + +} + + +void PrintWholeScreenStock(void){ + +int tmp = CurrRowStock1; + +for(int i=0; i<5; i++) + ImprimeBoton (1, NEGRO, GRIS_O, BLANCO, PS[i]); + + + for(CurrRowStock1 = 1; CurrRowStock1 < (/*28*/40+1); CurrRowStock1++) + + if ( (CurrTopLineStock + CurrRowStock1 - 1) <= (Stock1_inx.Fin + 1) ) { + GetLineStock(); + PrintLineStock(); + } + + + +CurrRowStock1 = tmp; + +} + +void Edit_Item_Stock(void){ + + char buffer[80]; + + switch (CurrColStock1) { + + case 1:/* + if( Stock1.Ref == -1 ) { + sprintf( buffer, "%d", Stock1.Ref); + InputCadenaG_T4( buffer, 1, 4, 63, 57, PS[0], CurrRowStock1-1); + Stock1.Ref = atoi(buffer); + PutLineStock(); + } + */ + while( kbhit() ) getch(); + break; + case 2: + while( kbhit() ) getch(); + break; + case 3: // int Old_Und_0 = Stock1.Und_0; + sprintf( buffer, "%d", Stock1.Und_1); + InputCadenaG_T4( buffer, 1, 4, 63, 57, PS[2], CurrRowStock1-1); + Stock1.Und_1 = atol(buffer); + PutLineStock(); + break; + case 4: // int Old_Und_1 = Stock1.Und_1; + sprintf( buffer, "%d", Stock1.Und_0); + InputCadenaG_T4( buffer, 1, 4, 63, 57, PS[3], CurrRowStock1-1); + Stock1.Und_0 = atol(buffer); + PutLineStock(); + break; + default: + return; + } + + PrintLineStock(); + +} + +void Abre_Ficha_Stock(void){ + +char ArchivoDatos[]="SV_Stock.DAT"; + +//// +// Stockrueba apertura correcta de Indice, y Datos y creacin... // +//// + + int LSJ = sizeof(struct JD); + int LSI = sizeof(struct Stock_inx); + int LSC = sizeof(struct Stock_actual); + + if ( (Stock = fopen( ArchivoDatos, "r+b"))==NULL) { + + FILE *fa; + + if ( (fa = fopen( ArchivoDatos, "wb" ) )!=NULL ) { + + Poner_a_cero_estructura_actual_Stock(); + Stock1_inx.Fin = 0; + rewind(fa); + + fwrite(&cabecera, LSJ, 1, fa); fseek(fa, (long)LSJ, SEEK_SET); + fwrite(&Stock1_inx, LSI, 1, fa); fseek(fa, (long)LSJ+LSI, SEEK_SET); + fwrite(&Stock1, LSC, 1, fa); + + if (fclose(fa) == EOF ) exit(1); + } + + if ( (Stock = fopen( ArchivoDatos, "r+b"))==NULL) { + restorecrtmode(); + printf("NO SE PUDO ABRIR EL FICHERO INDICE EN LA 2 PASADA"); + exit(1); + } + } + + fseek(Stock, (long)LSJ, SEEK_SET); + if ( fread(&Stock1_inx, LSI, 1, Stock) != 1 ) { + restorecrtmode(); + printf("NO SE PUDO LEER EN EL FICHERO: INDICE"); + exit(1); + } + fseek(Stock, (long)LSJ+LSI, SEEK_SET); + if ( fread(&Stock1, LSC, 1, Stock) != 1 ) { + restorecrtmode(); + printf("NO SE PUDO LEER EN EL FICHERO: DATOS"); + exit(1); + } + + +} + +void DeleteRecordStock(void) { + +unsigned int CurrRecord; + int LSJ = sizeof(struct JD); + int LSI = sizeof(struct Stock_inx); + int LSC = sizeof(struct Stock_actual); + +CurrRecord = CurrTopLineStock + CurrRowStock1 - 1; + + if ( (Stock1_inx.Fin == 0) ) { BEEP(); + + Poner_a_cero_estructura_actual_Stock(); + Stock1.Ref=-1; + fseek(Stock, (long)LSJ + LSI + ( LSC * ( 0 ) ), SEEK_SET); // Se coloca + fwrite(&Stock1, LSC, 1, Stock); // Y escribe +/* */ PrintWholeScreenStock(); +/* */ GetLineStock(); + EditCursorStock(0); + + + } else { + + Stock1_inx.Fin -= 1; + + unsigned int p = CurrRecord - 1; + + while( p <= Stock1_inx.Fin ) { + + fseek(Stock, (long)LSJ + LSI + ( LSC * ( p + 1 ) ), SEEK_SET); // Se coloca + fread(&Stock1, LSC, 1, Stock); // Y lee + + fseek(Stock, (long)LSJ + LSI + ( LSC * p ), SEEK_SET); // Se coloca + fwrite(&Stock1, LSC, 1, Stock); // Y escribe + + p++; + }; + + fseek(Stock, (long)LSJ, SEEK_SET); + fwrite(&Stock1_inx, LSI, 1, Stock); // Acualiza n de registros + +/* */ if ((CurrRecord - 1) == Stock1_inx.Fin + 1) CurrRowStock1--; +/* */ +/* */ PrintWholeScreenStock(); +/* */ GetLineStock(); + EditCursorStock(0); + +// PrintLineStock(); + } +} + + + +void AddRecordStock(void){ + +unsigned int CurrRecord= CurrTopLineStock + CurrRowStock1 - 1; + + int LSJ = sizeof(struct JD); + int LSI = sizeof(struct Stock_inx); + int LSC = sizeof(struct Stock_actual); + +if(CurrRecord < 10000 ) { + + long avance = Stock1_inx.Fin /*+ 1*/; + + while( avance >= (CurrRecord-1) ) { + + fseek(Stock, (long)LSJ + LSI + ( LSC * avance ), SEEK_SET); // Se coloca + fread(&Stock1, LSC, 1, Stock); // Y lee + + fseek(Stock, (long)LSJ + LSI + ( LSC * (avance + 1) ), SEEK_SET); // Se coloca + fwrite(&Stock1, LSC, 1, Stock); // Y escribe + + avance--; + }; + +// Stock1_inx.Fin = Stock1_inx.Fin + 1; + Stock1_inx.Fin++; + + fseek(Stock, (long)LSJ, SEEK_SET); + fwrite(&Stock1_inx, LSI, 1, Stock); // Acualiza n de registros + + Poner_a_cero_estructura_actual_Stock(); + Stock1.Ref=-1; + + fseek(Stock, (long)LSJ + LSI + ( LSC * ( CurrTopLineStock + CurrRowStock1 - 1) ), SEEK_SET); // Se coloca + fwrite(&Stock1, LSC, 1, Stock); // Y escribe + + CurrRowStock1++; + if (CurrRowStock1>/*28*/40) { CurrTopLineStock++; CurrRowStock1--; } + PrintWholeScreenStock(); + GetLineStock(); + EditCursorStock(0); +// PrintLineStock(); + + } + +} + + +void PutLineStock(void){ + + int LSJ = sizeof(struct JD); + int LSI = sizeof(struct Stock_inx); + int LSC = sizeof(struct Stock_actual); + + int CurrRecord = CurrTopLineStock + CurrRowStock1 - 1; + +fseek(Stock, (long)LSJ + LSI + ( LSC * CurrRecord ) - LSC, SEEK_SET); // Se coloca +fwrite(&Stock1, LSC, 1, Stock); // Y escribe + +} + +void GetLineStock(void){ + + int LSJ = sizeof(struct JD); + int LSI = sizeof(struct Stock_inx); + int LSC = sizeof(struct Stock_actual); + + int CurrRecord = CurrTopLineStock + CurrRowStock1 - 1; + +fseek(Stock, (long)LSJ + LSI + ( LSC * CurrRecord ) - LSC, SEEK_SET); // Se coloca +fread(&Stock1, LSC, 1, Stock); // Y lee + + BuscaReferencia(Stock1.Ref); + +} + + + + + +void Poner_a_cero_estructura_actual_Stock(void){ + + cabecera.esc = 27; strcpy(cabecera.color, "[31;40m"); + strcpy(cabecera.prog, "Jos David Guilln Dominguez"); + cabecera.nl = 13; cabecera.rt = 10; + strcpy(cabecera.autor, " 6 / Mayo / 1995 "); + cabecera.pt = 7; cabecera.ef = 26; + + Stock1.Ref=0; Stock1.Und_1=0; Stock1.Und_0=0; + +} + + +void Imprimir_Stock(void){ + +int LSJ = sizeof(struct JD); +int LSI = sizeof(struct Stock_inx); +int LSC = sizeof(struct Stock_actual); +int lprint = 3, Curr_Stock = 0; + +if ( Comprueba_Impresora() == 0 ) { +Confirma("Error Imprimiendo.", "Impresora Fuera de", "Servicio."); +return; +} + +fprintf( stdprn, "\n\r"); + + + fprintf( stdprn, " Ref Concepto Und.C.0 Und.C.1 TOTAL\n\r"); + fprintf( stdprn, "\n\r"); + + while( (Curr_Stock <= Stock1_inx.Fin) ){ + + fseek(Stock, (long)LSJ + LSI + ( LSC * Curr_Stock ), SEEK_SET); // Se coloca + fread(&Stock1, LSC, 1, Stock); // Y lee + BuscaReferencia(Stock1.Ref); + + fprintf( stdprn, "% 5d %-20s % 4ld % 4ld % 8ld \n\r", Stock1.Ref, Ref1.Concepto, Stock1.Und_0, Stock1.Und_1, ( Stock1.Und_0 + Stock1.Und_1 ) ); + + lprint++; + if (lprint==55) { lprint = 3; + fputc(12, stdprn); + fprintf( stdprn, " Ref Concepto Und.C.0 Und.C.1 TOTAL\n\r"); + fprintf( stdprn, "\n\r"); + } + Curr_Stock++; + } + fputc(12, stdprn); + GetLineStock(); + +} + + +void CompruebaLineasStock(void){ + // Check una pulsacion sobre un campo, y se situa, si es posible + int ok_p=0, inc=0, md=0; + int oldr, oldc; +// Anclar_Raton(); + + do{ + inc++; + if(x_raton >= (PS[(inc)-1].left+2) && x_raton <= (PS[inc-1].right-2) ) { ok_p=1; md = 1; + oldc=inc; } + if(inc==5) ok_p=1; + }while(!ok_p); + if(md==1){ + inc=0; ok_p=0; md = 0; + do{ + inc++; + if( (y_raton >= (PS[(oldc)-1].up+4+(inc-1)*15+2)) && (y_raton <= (PS[oldc-1].up+4+(inc-1)*15+16)) ) { ok_p=1; oldr=inc; md = 1;} + if(inc==26) ok_p=1; + }while(!ok_p); + } + int newc; + + switch(oldc){ + case 1: + case 2: newc = oldc; break; + case 4: + case 5: newc = (oldc - 1); break; + default: + break; + } + + + if( (md==1) && ((CurrColStock1!=newc) || (CurrRowStock1!=oldr)) ) + { + + if( (CurrTopLineStock + oldr - 2 )<= Stock1_inx.Fin ){ + EditCursorStock(1); + switch(oldc){ + case 1: + case 2: + CurrColStock1 = oldc; + CurrRowStock1 = oldr; + break; + case 4: + case 5: + CurrColStock1 = (oldc-1); + CurrRowStock1 = oldr; + break; + default: + EditCursorStock(0); + break; + } + GetLineStock(); + } + } + + } + + +void Actualizar_Stock(int Referencia, int Unidades, int Codigo){ + + int LSJ = sizeof(struct JD); + int LSI = sizeof(struct Stock_inx); + int LSC = sizeof(struct Stock_actual); + + int ok = 0; + int Curr_Stock = 0, Encuentro = 0; + + + while( (Curr_Stock <= Stock1_inx.Fin) && (ok == 0) ){ + + fseek(Stock, (long)LSJ + LSI + ( LSC * Curr_Stock ), SEEK_SET); // Se coloca + fread(&Stock1, LSC, 1, Stock); // Y lee + + if( Stock1.Ref == Referencia ) { + if(Codigo==1) Stock1.Und_1 += Unidades; + else Stock1.Und_0 += Unidades; + fseek(Stock, (long)LSJ + LSI + ( LSC * Curr_Stock ), SEEK_SET); // Se coloca + fwrite(&Stock1, LSC, 1, Stock); // Y escribe + ok = 1; + Encuentro = 1; + } + + Curr_Stock++; + } + + if (Encuentro==0) { + Stock1.Ref = Referencia; + if(Codigo==1) { Stock1.Und_1 = Unidades; Stock1.Und_0 = 0; } + else { Stock1.Und_0 = Unidades; Stock1.Und_1 = 0; } + + fseek(Stock, (long)LSJ + LSI + ( LSC * (Stock1_inx.Fin + 1) ), SEEK_SET); // Se coloca + fwrite(&Stock1, LSC, 1, Stock); // Y escribe + + Stock1_inx.Fin ++; + + fseek(Stock, (long)LSJ, SEEK_SET); + fwrite(&Stock1_inx, LSI, 1, Stock); // Acualiza n de registros + } + + +} + +void Recalcula_Porcentaje(int Individual_Seleccionado){ + + if( Individual_Seleccionado == 1 ) { + + long P_0, P_1; + struct boton Ptmp; + + Ptmp.up = 15; Ptmp.down = 213; + Ptmp.left = 349; Ptmp.right = 549; + ImprimeBoton (1, NEGRO, GRIS_O, BLANCO, Ptmp); + +// Centro = (449, 114) radio = 80 +// si (Stock1.Und_0 + Stock1.Und_1) es 100 +// Stock1.Und_0 es PS + +// si 360 es 100 +// x es PS +if ( (abs(Stock1.Und_0)+abs(Stock1.Und_1) )!= 0 ) { + + P_0 = labs( ( 360 * ( (labs(Stock1.Und_0) * 100) / (labs(Stock1.Und_0)+labs(Stock1.Und_1)) ) ) / 100); + P_1 = labs( ( 360 * ( (labs(Stock1.Und_1) * 100) / (labs(Stock1.Und_0)+labs(Stock1.Und_1)) ) ) / 100); + // struct Stock_actual { int Ref; long Und_0; long Und_1; }; + if( Stock1.Und_1 < 0 ) + { P_0 += P_1; P_1 = 0; } + if( Stock1.Und_0 < 0 ) + { P_1 += P_0; P_0 = 0; } +if( P_1 != 0 ) { + setcolor(ROJO); + setfillstyle(9, ROJO); + pieslice(449, 114, 0, P_1, 80); +} +if( P_0 != 0 ) { + setcolor(AZUL); + setfillstyle(9, AZUL); + pieslice(449, 114, ( 360 - P_0 ), 360, 80); +} + +} + + + } else { + + // struct Stock_actual Stock1_Graficas[10]; + // bar3d + + + } + +} \ No newline at end of file diff --git a/CD_IN/CD_UTIL.CPP b/CD_IN/CD_UTIL.CPP new file mode 100644 index 0000000..2e7835e --- /dev/null +++ b/CD_IN/CD_UTIL.CPP @@ -0,0 +1,497 @@ +#include +#include +#include +#include +#include +// #include +#include +#include +#include +#include "sv_util.h" +#include "c:\things\borlandc\jd_lib\jd_graph.h" + + +#define Letra_Boton setcolor(1); +#define Azul 1 +#define Texto_Normal setcolor(63); +#define Texto_Negrita setcolor(0); + +extern int x_raton, y_raton, raton; +extern int boton_izq, boton_der; + +extern int InputCadenaG(char *s, int numalp, int lmax, int cc, int cf, struct boton Campo); +extern void desactiva_raton(void); +extern void activa_raton(void); +// extern void Anclar_Raton(void); +extern void inicializa_raton_grafico(int x1, int y1, int x2, int y2, int px, int py); +extern int Espera_Tecla_o_Raton(void); +extern void BEEP(void); +extern void textxy(int x, int y, char *text); + + +#define NEGRO 0 +#define AZUL 1 +#define ROJO 4 +#define VERDE 2 +#define BLANCO 63 +#define GRIS_O 56 +#define GRIS_C 7 +#define AMARILLO 62 + +extern void textxy(int x, int y, char *text); + +int Comprueba_Impresora(void); +int Confirma(char *T1, char *T2, char *T3); +int Desde_Hasta(int *Desde, int *Hasta); +int Pide_Fecha_Actual(void); +int file_exists(char *filename); + +int Confirma(char *T1, char *T2, char *T3){ + +void far *ptr; +unsigned size; +struct boton pregunta[2]; +int fins_print=0, key_print, bpush, ok = 0; +int TFuente; +struct textsettingstype textinfo; +gettextsettings(&textinfo); +TFuente = textinfo.charsize; + +size = imagesize(198, 138, 372, 257); + +/* get byte size of image */ +Fuente(SMALL_FONT, 5); + +if ( (ptr = farmalloc(size)) == NULL) { Fuente(SMALL_FONT, TFuente); return 0; } + +getimage(198, 138, 372, 257, ptr); + +pregunta[0].up = 140; pregunta[0].down = 255; +pregunta[0].left= 200; pregunta[0].right= 370; +ImprimeBoton (1, GRIS_C, GRIS_O, BLANCO, pregunta[0]); + +pregunta[0].up = 235; pregunta[0].down = 250; +pregunta[0].left= 210; pregunta[0].right= 270; +ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, pregunta[0]); + +pregunta[1].up = 235; pregunta[1].down = 250; +pregunta[1].left= 300; pregunta[1].right= 360; +ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, pregunta[1]); + +textxy(212, 237, " Si"); + textxy(212, 239, " _"); +textxy(302, 237, " No"); + textxy(302, 239, " _"); + +textxy(210+2, 150+2, T1); +textxy(210+2, 165+2, T2); +textxy(210+2, 180+2, T3); + + +// +do{ + + if(raton!=0) activa_raton(); + Espera_Tecla_o_Raton(); + if(raton!=0) desactiva_raton(); + + if(kbhit()){ + key_print = getch(); + switch( toupper(key_print) ){ + // S Si + case 83: + ok = 1; + fins_print = 1; + break; + // N No + case 78: + ok = 0; + fins_print = 1; + break; + default: + break; + } + } else + if(raton!=0 && boton_izq==1 || boton_der==1) { + if( (bpush = CheckButon( 2, pregunta))>0 ) { + + switch(bpush){ + case 1: + ok = 1; + fins_print = 1; + break; + case 2: + ok = 0; + fins_print = 1; + break; + default: + break; + } + } + } + +}while(!fins_print); + + + + +putimage(198, 138, ptr, COPY_PUT); +farfree(ptr); +Fuente(SMALL_FONT, TFuente); + +return ok; + +} + + + +int Pide_Fecha_Actual(void){ + + int Fecha; + +// void far *ptr; +// unsigned size; + char mes[][11] = { " Enero", "Febrero", " Marzo", + " Abril", " Mayo", " Junio", + " Julio", " Agosto", "Septiemb", + "Octubre", "Noviemb", "Diciemb" + }; + + struct boton pregunta[3]; + struct boton meses[12]; + + int key_print, bpush, ok = 0; + int TFuente; + + for( Fecha = 0; Fecha < 4; Fecha++ ){ + meses[2+3*Fecha].left = 405; meses[2+3*Fecha].right = 455; + meses[1+3*Fecha].left = 350; meses[1+3*Fecha].right = 400; + meses[0+3*Fecha].left = 295; meses[0+3*Fecha].right = 345; + } + + for( Fecha = 0; Fecha < 3; Fecha++ ) { + meses[Fecha].up = 80+140; meses[Fecha].down = 80+160; + meses[Fecha+3].up = 80+165; meses[Fecha+3].down = 80+185; + meses[Fecha+6].up = 80+190; meses[Fecha+6].down = 80+210; + meses[Fecha+9].up = 80+215; meses[Fecha+9].down = 80+235; + } + + + struct textsettingstype textinfo; + gettextsettings(&textinfo); + TFuente = textinfo.charsize; + struct date d; + getdate(&d); + Fecha = d.da_mon; + + /* get byte size of image */ +// size = imagesize(198, 138, 372, 257); + + + +// if ( (ptr = farmalloc(size)) == NULL) { +// Fuente(SMALL_FONT, TFuente); +// return Fecha; +// } + +// getimage(198, 138, 372, 257, ptr); + + +pregunta[0].up = /*140*/130; pregunta[0].down = /*255*/400; +pregunta[0].left= /*200*/150; pregunta[0].right= /*370*/465; +ImprimeBoton (1, GRIS_C, GRIS_O, BLANCO, pregunta[0]); + +pregunta[0].up = /*143*/135; pregunta[0].down = /*252*/395; +pregunta[0].left= /*203*/155; pregunta[0].right= /*367*/460; +ImprimeBoton (0, GRIS_C, BLANCO, GRIS_O, pregunta[0]); + + +pregunta[0].up = /*235*/370; pregunta[0].down = /*250*/390; +pregunta[0].left= /*210*/160; pregunta[0].right= /*270*/230; +ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, pregunta[0]); + +pregunta[1].up = /*235*/370; pregunta[1].down = /*250*/390; +pregunta[1].left= /*300*/385; pregunta[1].right= /*360*/455; +ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, pregunta[1]); + +pregunta[2].up = /*165*/175; pregunta[2].down = /*185*/195; +pregunta[2].left= 212; pregunta[2].right= /*232*/245; +ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, pregunta[2]); + +Fuente(SMALL_FONT, 4); +for( int i = 0; i < 12; i++ ) { + ImprimeBoton (1, GRIS_C, GRIS_O, BLANCO, meses[i]); + textxy(meses[i].left+4, meses[i].up+3, mes[i]); +} +ImprimeBoton (1, ROJO, GRIS_O, BLANCO, meses[Fecha-1]); +textxy(meses[Fecha-1].left+4, meses[Fecha-1].up+3, mes[Fecha-1]); + +Fuente(SMALL_FONT, 5); + +textxy(162, 372, " Aceptar"); + textxy(162, 373, " _"); +textxy(387, 372, " Cancelar"); + textxy(387, 373, " _"); + +textxy(160+2, 145+2, "Introduzca mes a gestionar:"); + +// textxy(210+2, 165+2, T2); +// textxy(210+2, 180+2, T3); +char buffer[80]; +int Mes=Fecha; + +sprintf( buffer, "% 2d", Fecha); +textxy(pregunta[2].left + 4, pregunta[2].up + 2, buffer); + +// +do{ + + if(raton!=0) activa_raton(); + Espera_Tecla_o_Raton(); + if(raton!=0) desactiva_raton(); + + if(kbhit()){ + key_print = getch(); + if( key_print == 13 ) {Fecha = Mes; ok = 1; } else + if( isdigit(key_print) ) { + // Edita el mes actual + sprintf( buffer, "%d", Fecha); + do{ + InputCadenaG( buffer, 1, 4, 63, 57, pregunta[2]); + Fecha = atoi(buffer); + }while(Fecha<1 || Fecha>12); + } else + if(key_print==0) + switch( getch() ){ + // Flecha Izquierda + case 75: + case 15: + ImprimeBoton (0, GRIS_C, GRIS_O, BLANCO, meses[Mes-1]); + Mes--; + if ( (Mes + 1)== 1 ) Mes = 3; else + if ( (Mes + 1)== 4 ) Mes = 6; else + if ( (Mes + 1)== 7 ) Mes = 9; else + if ( (Mes + 1)==10 ) Mes = 12; + ImprimeBoton (0, GRIS_C, AZUL, AZUL, meses[Mes-1]); + break; + // Flecha Derecha + case 77: + case 9: + ImprimeBoton (0, GRIS_C, GRIS_O, BLANCO, meses[Mes-1]); + Mes++; + if ( (Mes - 1)== 3 ) Mes = 1; else + if ( (Mes - 1)== 6 ) Mes = 4; else + if ( (Mes - 1)== 9 ) Mes = 7; else + if ( (Mes - 1)==12 ) Mes = 10; + ImprimeBoton (0, GRIS_C, AZUL, AZUL, meses[Mes-1]); + break; + // Flecha Abajo + case 80: + ImprimeBoton (0, GRIS_C, GRIS_O, BLANCO, meses[Mes-1]); + Mes += 3; if ( Mes > 12) Mes = Mes - 12; + ImprimeBoton (0, GRIS_C, AZUL, AZUL, meses[Mes-1]); + break; + // Flecha Arriba + case 72: + ImprimeBoton (0, GRIS_C, GRIS_O, BLANCO, meses[Mes-1]); + Mes -= 3; if ( Mes < 1) Mes = 12 + Mes; + ImprimeBoton (0, GRIS_C, AZUL, AZUL, meses[Mes-1]); + break; + } + else + switch( toupper(key_print) ){ + // A Aceptar + case 65: + ok = 1; + break; + // C Cancelar + case 67: + ok = 1; + Fecha = -1; + break; + default: + break; + } + } else + if(raton!=0 && boton_izq==1 || boton_der==1) { + if( (bpush = CheckButon( 2, pregunta))>0 ) { + + switch(bpush){ + case 1: + ok = 1; + break; + case 2: + ok = 1; + Fecha = -1; + break; + default: + break; + } + } + } + +}while(!ok); + + +// putimage(198, 138, ptr, COPY_PUT); +// farfree(ptr); + + +Fuente(SMALL_FONT, TFuente); + +return Fecha; + +} + + +int file_exists(char *filename) +{ + return (access(filename, 0) == 0); +} + + +int Comprueba_Impresora(void){ + + unsigned int tmp; + union REGS Impresora_in, Impresora_out; + struct byte { + int a : 1; + int b : 1; + int c : 1; + int d : 1; + int e : 1; + int f : 1; + int g : 1; + int h : 1; + }; + union bits { + char ch; + struct byte bit; + } Imp_out; + + Impresora_in.h.ah = 0x02; + Impresora_in.x.dx = 0x0; + + int86(0x17, &Impresora_in, &Impresora_out); + + return ( Impresora_out.h.ah ? 1 : 0 ); + +} + +int Desde_Hasta(int *Desde, int *Hasta){ + +int fins_print= 0, key_print, bpush; +char buffer[80], devuelve = 0; +void far *ptr; +unsigned size; +struct boton pregunta[4]; + +struct date Fecha; +getdate(&Fecha); + +*Desde = *Hasta = Fecha.da_day; + +size = imagesize(198, 138, 372, 257); + +/* get byte size of image */ + +if ( (ptr = farmalloc(size)) == NULL) return -1; + getimage(198, 138, 372, 257, ptr); + + pregunta[0].up = 140; pregunta[0].down = 255; + pregunta[0].left= 200; pregunta[0].right= 370; + ImprimeBoton (1, ROJO, GRIS_C, BLANCO, pregunta[0]); + pregunta[0].up = 150; pregunta[0].down = /*175*/165; + pregunta[0].left= /*210*/250; pregunta[0].right= 360; + ImprimeBoton (1, NEGRO, GRIS_O, BLANCO, pregunta[0]); + pregunta[1].up = 185; pregunta[1].down = /*210*/200; + pregunta[1].left= /*210*/250; pregunta[1].right= 360; + ImprimeBoton (1, NEGRO, GRIS_O, BLANCO, pregunta[1]); + pregunta[2].up = 220; pregunta[2].down = 245; + pregunta[2].left= 210; pregunta[2].right= 280; + ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, pregunta[2]); + pregunta[3].up = 220; pregunta[3].down = 245; + pregunta[3].left= 290; pregunta[3].right= 360; + ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, pregunta[3]); + + Fuente(SMALL_FONT, 4); + +Letra_Boton +outtextxy(pregunta[0].left+2 - 40, pregunta[0].up+2, "DESDE"); +outtextxy(pregunta[1].left+2 - 40, pregunta[1].up+2, "HASTA"); +outtextxy(pregunta[2].left+2, pregunta[2].up+2, "CANCELAR"); + outtextxy(pregunta[2].left+2, pregunta[2].up+4, "_"); +outtextxy(pregunta[3].left+2, pregunta[3].up+2, "ACEPTAR"); + outtextxy(pregunta[3].left+2, pregunta[3].up+4, "_"); + +// +do{ + + if(raton!=0) activa_raton(); + Espera_Tecla_o_Raton(); + if(raton!=0) desactiva_raton(); + + if(kbhit()){ + key_print = getch(); + if(key_print == 27 ) { fins_print = 1; devuelve = -1; } else + if(key_print == 'A' || key_print == 'a') { fins_print = 1; } else + if(key_print == 'C' || key_print == 'c') { fins_print = 1; devuelve = -1; } else + if( isprint(key_print) ) { + sprintf( buffer, "%d", *Desde); + do{ + InputCadenaG( buffer, 1, 2, 63, 57, pregunta[0]); + *Desde = atol(buffer); + }while(*Desde<1 || *Desde>12); + + sprintf( buffer, "%d", *Hasta); + do{ + InputCadenaG( buffer, 1, 2, 63, 57, pregunta[1]); + *Hasta = atol(buffer); + }while(*Hasta<1 || *Hasta>12); + } else + if( key_print == 0 ) { + switch( (key_print=getch()) ){ + // F1 Cancelar + case 59: + fins_print = 1; + devuelve = -1; + break; + // F3 Imprimir Ficha + default: + break; + } + } + } else + if(raton!=0 && boton_izq==1 || boton_der==1) { + if( (bpush = CheckButon( 3, pregunta))>0 ) { +/* + pregunta[0].up = 140; pregunta[0].down = 255; + pregunta[0].left= 200; pregunta[0].right= 370; + ImprimeBoton (1, GRIS_O, GRIS_C, BLANCO, pregunta[0]); +*/ + switch(bpush){ + // Cancelar + case 3: + fins_print=1; + devuelve = -1; + break; + case 4: + fins_print=1; + break; + } + } + } + + +}while(!fins_print); + +// + + + putimage(198, 138, ptr, COPY_PUT); + farfree(ptr); + + Fuente(SMALL_FONT, 5); + +return devuelve; +} diff --git a/CD_IN/CD_W01.DAT b/CD_IN/CD_W01.DAT new file mode 100644 index 0000000000000000000000000000000000000000..b016ff83eebe391da22b3a4b9334691568f9c649 GIT binary patch literal 1406 zcmd;8;8I{$&{c4DiT4i;0Wx?MxEM$VUirmM3NDFdnJEhHrI|T7O?e=5fCfvEViY3- zBS^UrLusBuUcN#`Vx>Y}W?njwmsOgYo)3~!AP7d);18nF@EHvsTp=);HgJUuL>yEC HQ566H#~GUl literal 0 HcmV?d00001 diff --git a/CD_IN/CD_W02.DAT b/CD_IN/CD_W02.DAT new file mode 100644 index 0000000000000000000000000000000000000000..756cf7fb279d9cdf9a2d0303cf6863a10b3c1df5 GIT binary patch literal 7701 zcmeHLO>Y}F5M|H+1p?#`^fX8>4j>CLiWq2aMyv)c;Mi#*~*Pto`H!2f#nw2kL=(@B{px9ND~zbjFvOPWYn^^t}IUhBKIGt6kDm27ej2V9GV+ zChD)gM>C&jNXNvH3><@woO{xaf@W)OIMiO1qu9WH`rqD)a|0NPkxdrP8^Mbj2A$#iWWXpGnW+xec{XZ9}Ox%VJ%r-(6;_ zsg__eUzCX0Q>u~=BvCZS8D}!X;j<(hD}>_LPDM-$%(j_QL&r4MH$V-Aal&A#C1065~du6gjIcCE|oF_$2hgh8#RaqZDos;Ps~H z15?CvU|b;X2HZxWF?#GzOhsjrLF$p3i}DdZ99VoTuDmd@;Mni4Wj#xDx7^!US*&+B z3oh=O{eSt9_pBb17w2WtljP$$i(Hk(Ib`VL!L9v{Pr5|Wtd1w|eaPudhmp<_9rh38 zwWjyRse#&mYwALmN(#ou{SBsfrTI;TN+st}a?WR(uKZN=AvdT(Z6zX|8_^M|#5yNJ z5s8kW?sILa4*F#H`uMch>kWo~o}L}aB$oUY5PNh{X`sWamPMRYt3u8}7ntHydaK9y zT3~vrl$5k6foPac+Ci^sy{0KcJ|J2EVwl>Pjl4tihL4hNJQc9?sG1r6m zPH8MSTCl28yIjaF8S0dDn;wACT{+w!e{G?|StDfavEyfrkhRC}j~|pzGnS<8x;#9% zzFpt)`Eb+r^NGoVkA9TsbTl%Mp_$bE`dkexioCAWT6pH&4fJRZG~eDMG!?V13qp{Y z04f`|#Knb3owOv7ty;vAu|4#4b?YQv$wSo8sW_dXHH5G>`U3Y^djl+->k%RvpBHP_ z)I18#oraag+Gid%)lz@he+HjDD&I9a`&4iiK1UgXYCxc>$BeHRk<1mJ!6ZYl_1L4U zmu#~N>8$#kq3w04Zh~;utH8*n@o6@;{@ppRR)ogT;cO?Uo{+d1m^>G)}5pnEskm}%CR)ND=acIxVuw$G-U|En9~x1~u_*tdrw*3M@;M;$*M UKWz+j??xLl&HAQR{l}Gm0S-xLuK)l5 literal 0 HcmV?d00001 diff --git a/CD_IN/CD_W03.DAT b/CD_IN/CD_W03.DAT new file mode 100644 index 0000000000000000000000000000000000000000..185035c78e05a49244fbe747f8a8a491ae0aa72a GIT binary patch literal 5183 zcmeH~&u$Yj5XPrmkSbN;%xNAV^bl@bi9iKamD+HtgogDrb?aRR|4GTUPlDh@`Mg0% zvsnb?kW1H>*kgOv^ULn1&qsX7&-oRX~XKc z&W-VGl$~(>Gulc<+=vlIBdYbr2kcd@q)8Gu+F4fY7?t%-QxG!hFsI1j*axH7?Zb%Y z5`}ZaL6Rq97aEeqla`D=j*=8xZgP`63#S~Jq_#63kIRF5+6qw5L?_hNp1c8MRI;u* za4nIqWr-kC*`{)NspWk250jneT8(YXKozB4qIp&WU{%n9t3Bg9__;+MWLPy&sjP2W zt`S8cgI|+j5N4t(i)+up)>vN)5ERzAur5n#Z>Up5&ya>SJybTKfzO6TUvIyBet#ZB z-`-rV-t^1cm0De{r~cF_+SX~~>7BZT@)VyMb)`-#C=xUcs>7!zlan0<*>CB6@V8^b zdA50UM+2WOk?rxoXPZZNv|m1JsoF^0UAQDTq5qS*3yl$$g3q-=4*0hoSLaki@h)?P zDVqgpO+~T_bwpI=628NS6fuMkD>kOJG)`d(;cY0u!Py$iTl1w6?gq}L%`@U942&nb zR$kbM1y{K^99X{!hsurcEL%817(c3EXo_`AS~mTm@|Ye<-MK=MOs*14 z9TeuuR@WMQ9b3 IpdG3E1+X6T&Hw-a literal 0 HcmV?d00001 diff --git a/CD_IN/CD_W04.DAT b/CD_IN/CD_W04.DAT new file mode 100644 index 0000000000000000000000000000000000000000..d206d67a21b1b85bcf82ed05241b2785a1a7445c GIT binary patch literal 10219 zcmeHNUysx_5H}SP5)xmaPt&Ki(j~gvKS=bg+)*SX+LHkBauRY9Cu>OJU^}~nM?T3> z@j?5Wqe~YSH;?^C=KRjO;Z|E;wYPXWkB3q#6P zGS=pZ>Qd5Dy(fqWT{%R=a;%6L_JMcjm_tjVk_BvsN%QaM@W&D&a0im5Yu znd%sN;=FDY$wU>h)e+a$8A=pYy7aY`Ld2%z(L7RCR+Wjelp9A*#jMfsf|6_MCDfa+ zT?#J-?TX%W8D;hu2VJ9mM*Hlt!2kDbv@a`vz5C+=0K)IFyQmni(kbKAzDAk(visp< zE31W$9lbR64Lw_!icZ24dZ|nC$T6}M>b0>QN&#z@%6e@{7cx_&azav~od*~JX;Nbg z3F3&Hsf_iKyh)4`3`gre#;$HKsdpI3i0HzvGtYBbL|T=AHp+p3wMuZ4NJ}bJaXYUN zz+)9_nFDeq3N51pAA-RLtVCVCnu{-*DhiR>dvi6mD8q_ zIXyMDS}-ax(k0^0xAjK?7%9zeR_kFgYOS3#2iOt?57A|IM8&0Jq^N)int_jxE=RCV3aM^XrC=(43OWSeKs(*4RtGBwm7iq943Cc&OSXg7GBPol`Hy%?jwNh zq3)R`0Gx*-)rF-%rWk-%BTg-313-j22DJI?n4U&QEbMd!Y|2%G@X~}~$RdJ53hlCJ=!{5Q^D!jxqOxFtDLl zK?A)RG^SyYg)T_aMUV((8|w!SvS%U4^|tBnhbSQs5kpY}AGRUnCr$i%Ir7M;o2u=Xu6MwZ5!%3=1uXdxQ$_7 zv?rfI-8?*|-{@32AJXsQsmw~v5%R{7>y5rv({pxFhkF#ecHHyFz4x{lqDK1+S*7Rw z*!Edt%yp=n-w1Vm0PB>mD^~UJ+#=D|<><~-UcXZ`5my21Iad*^lDU45j8!Ge6u~K{ z;u_?=;Hw}ZhTIqe($?wQ1h{Q-53F^dE9_;Z6N6FdWvp`~%@EKchevU)<2M`yqgm?ZQ0wK$rlTH5s(L>#)a{%fdl};5=uGVD<JlI#}3H4cOP&4c-nC)OgJ*maOS|8S4A-{UT7-1{!ebo|jihiIP- VjBP{R>cRX~RYjY=9mGJc?mxZ#_9p-U literal 0 HcmV?d00001 diff --git a/CD_IN/CD_W05.DAT b/CD_IN/CD_W05.DAT new file mode 100644 index 0000000000000000000000000000000000000000..be77685476a94c7a53f1431f89c901bfb6b4e533 GIT binary patch literal 11478 zcmeI1&u`N(6vsV;1e!F7GpC2RLIo8=8aKoc8qx+TOk5_Rx5f*W61#JfmR|R_@K6J$7fgFz%h*J z6gM{XLmfZ8O;>wr?=iI>oH<`R3-4`h#>O`l{4n$+H7Sce752N;Uj#y z2qa8R7-+WeSwHb95S5;kNOVpjB#a#O(@4x+?MBNewf4<+-kY|#*!Y8HC*21UFBz2My z+l;!>=1DCpw?y4}SRmF$SJ0ck!CuNwk%Dh);nQZ4I>INV(bmGJ%_Mb_1lx?dCaLR? zT-1Hl*Ny&z70kkp-i9gdp1)QgQI~ROv`ke7N@5A01O_984+AB!k_=0uZWO-S=_;vZ z<%706V55$`W`q_-LRT(N>H=|WCh{1psJ7W!|enzGBRb9l;rS2Y{u8~Gx#vEC2O89V8 cq9=SJ3r_8h4;yuUmRF`;OR;w0iE2gNKMD<YGQG!f-{2xLBKGo25%URh7aE0Q5X%M(eS|) q0!W2fg;h*JNoqw&esN50ep*_&aRrhjb|wo$UU5lcPGS)QoB;r1EUD4} literal 0 HcmV?d00001 diff --git a/CD_IN/CD_W07.DAT b/CD_IN/CD_W07.DAT new file mode 100644 index 0000000000000000000000000000000000000000..a3b211e3328be1882d3b3a2a869727a623d4b7fb GIT binary patch literal 1406 zcmd;8;8I{$&{c4DiT4i;0Wx?MxEM$VUirmM3NDFdnJEhHrI|T7O?e=5fCfvEViY3- zBS?9XZ)S2)esO+UiGpiIY7RrOLQrZ>YGQG!f-{2xLBKGo25%URh7aE0Q5X%M(eS|) q0!W2fg;h*OepX^}GDEqgscvCvZZ47}b|wo$UU5lcPGS)QoB;sq6R3^= literal 0 HcmV?d00001 diff --git a/CD_IN/CD_W08.DAT b/CD_IN/CD_W08.DAT new file mode 100644 index 0000000000000000000000000000000000000000..94e074edf54b7a36f437dff0871dde6930baa1a1 GIT binary patch literal 3924 zcmeH}JqyAx5Qd`&g5V!;dN(IU1qayVO(fqk& z<}0jP^+wWkEbS1cPoJt`VN1lvM#c1qk6~d;+2#}5DpuY3c+#HxS9J>&at|XJy1sNn y^c=?x0$iK*7PG;B?PdE_yt1&}5g!{B(<45Hg)L>9&%5eE{?t=5ev%q2e|2}+FVKPj literal 0 HcmV?d00001 diff --git a/CD_IN/CD_W09.DAT b/CD_IN/CD_W09.DAT new file mode 100644 index 0000000000000000000000000000000000000000..7489804e73ad3a718b22d8be02eff5d2db3ec0cb GIT binary patch literal 6442 zcmeI0&uhXk6vrbB27>>`!OU?198aRRMIvk(JzE`)X-0e8mE$nkM}Oa#hZ8|f$)qv`c9lERZX z7^b6EGb(75$<*4mvF3eAFonxZ}1E#W{elj^#&}Av}MHH|whC5_-@%Vfo33M9BeqHU| zFQqrWmxNe>Ok%E|Y|28yv7g=TdthchAj%Y$QoIX2P)`!(Wz+NsPsDPXZe-u|U-xlw mYy=!<8=ZY?-X24H%gs5LD1-`9=Xvy1EyZhfVB7fRU)>ii>KWz$ literal 0 HcmV?d00001 diff --git a/CD_IN/CD_W10.DAT b/CD_IN/CD_W10.DAT new file mode 100644 index 0000000000000000000000000000000000000000..07ed898720096df5acb5e74984749ae311f24621 GIT binary patch literal 1406 zcmd;8;8I{$&{c4DiT4i;0Wx?MxEM$VUirmM3NDFdnJEhHrI|T7O?e=5fCfvEViY3- zBS`rohRo!m{Nnty5{0nL;?l$%1!rw-h49QgOH&2~f`DOE4c;&s4IjM0qc9piqv3-q h1dt0etC)hK{Pd#4+?d?50v@6vpxCN+@(KxSD-&kpvgIZ9#D3#+OY&Ld0?*Z9-!E0s0aBL`KME=Dgf^ zT82Ql|88>5lg`BaW_oC=c#+TZtNb=!UH|y}^~p+r+hts?0)8t58ZP4 zbpLOk-NtX8v(;HTd%gSoKdD=6R@>FD-}zg&eV8xv)#YXW-rc`{m-2r<5}$L>2%m#I z86SLx1nOb-;by&A-EQW0H+PSV^}2p)uwM1gEcOMX&ZFi_&{HWHKE=YT@bOei7W3(6 zRZ5JyVz;kigl3ru*vF8F03X3&8hi|i2x2~rI)Nse7@=I_b?oD*lnkF@;Z^u}DkY2g zFzSk!sbYj?nF-j(kca>u!C@MF42cM0K8!knCYu zikPWlgl3ru*vF8F03X3&8hi|i2x2~rI)Nse7@=I_b?oD*lnkF@;Z^u}DkY2gv>tVn z#J{U6XRxngM`4zkfPD;!2=EacrWvrs~&b>@cUabGd(p%Z+xi0tu^9=eP9FzU2h z)yD{{1p_7f48ZJTeDE0(Xm>XlbwkFxydCp_7ui3>YaKSi2cIE<*xhJ7>ZbevYY!xL z6n33X*hh=V9v|tUyK(!p9(DY#PT#LxKkh5$fT#!`1)^Gf6o_hLK8!lWR<|+2dWB!J zkMGi_`1BI~BR;-MpT>L`b-kDK7$bBRs)&6Qh-&dsAgaYjfv7g-!>ChibsHnBSNJvi z_%3~lPcPv=;^VvYY0QUF*LyjSF+yjdir7bis1_duqFQ_uh-za#tw-HtI!pX7#4kDu zwa95>N9rt85&I|*)#9T-RC}5}tw-G~G3wOC;BR0Jhzd^gOGmv4r{#S)C{=V^A4Xk8 zugl{eg?@G0^XIW9b%IZ=Ve4`GG#_=-#1F9gl8yU{X${-sV@>J=pIXD#F`w3>F7dm% zmmY;(r<2%`>Q%O9A8S%4_|zJL=}?zwBj3%4Wr-ERBI?n2tmyxq83Y|GfkL;x9@=-`Z*=^QejEY(rwvYD$Y+8|SP zi-ojYy>0{b7`(k+f<0flG!#C`gM7%C@wb}@pq@>1@PA>ZQQ6fuK7qyzz59ujY(ghi+ F`vKTeN|OKp literal 0 HcmV?d00001 diff --git a/CD_IN/CD_W15.DAT b/CD_IN/CD_W15.DAT new file mode 100644 index 0000000000000000000000000000000000000000..61404170385a57df383ab97535a90f943c8f2059 GIT binary patch literal 1406 zcmd;8;8I{$&{c4DiT4i;0Wx?MxEM$VUirmM3NDFdnJEhHrI|T7O?e=5fCfvEViY3- zBS`rthGbpe#JtQz1tSZv%k*9HlX6nQCMggE3=9O7D2%GXA4a3$Ga5d)LSSU44R9eu GJpur>U75xJ literal 0 HcmV?d00001 diff --git a/CD_IN/LIST_COL.H b/CD_IN/LIST_COL.H new file mode 100644 index 0000000..44ca393 --- /dev/null +++ b/CD_IN/LIST_COL.H @@ -0,0 +1,5 @@ +// Aqui se debe poner cual sera el color negro, +// para la utilizacin por Make_Boton... + +#define NEGRO 240 + diff --git a/CD_IN/LITT.CHR b/CD_IN/LITT.CHR new file mode 100644 index 0000000000000000000000000000000000000000..08c30672ea5a18f010183807f55c644c272ab1d4 GIT binary patch literal 5131 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 literal 0 HcmV?d00001 diff --git a/CD_IN/MAKE_BOT.OBJ b/CD_IN/MAKE_BOT.OBJ new file mode 100644 index 0000000000000000000000000000000000000000..258dd43396a444acc70dcbe29fe9e068691e82e5 GIT binary patch literal 25993 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 +#include +#include +#include +#include +#include // Para getch(); +#include // Para outtextxy(...); y cleardevice(...); + +#include "d:\program\src_dos\libs\make_bot\make_bot.h" // Fuciones de MAKE_BOTON +#include "cd_icons.h" +#include "cd_error.h" +// #include "cd_raton.h" + +extern int far _Cdecl Svga256_fdriver[]; +int huge DetectVGA256() +{ + return 2; +} + +extern void Inicializa_Dibujo(void); +extern void Inicializa_Iconos(void); +extern void Coloca_Iconos_Dos_Windows(void); +extern char far *Icono; // 18 +void InicializaSVGA(void); +extern char dac[256*3]; +extern "C" void APAGA_PANTALLA(char *); +extern "C" void ENCIENDE_PANTALLA(char *); + +extern void Menu_de_Edicion(void); +extern void Coloca_Iconos(int Start_Icon); + +// extern unsigned char *P_Raton1, *P_Raton2, *P_Raton3, *P_Raton4; +// void *Pantalla; + +int main(void/*int argc, char *argv[]*/){ + + +InicializaSVGA(); + +/**/ memset( dac, 0, 256*3 ); /**/ +unsigned Segt = FP_SEG(dac), Off = FP_OFF(dac); +/**/ asm mov ax, 0x1012 ; /**/ +/**/ asm mov bx, 0 ; /**/ +/**/ asm mov cx, 256 ; /**/ +/**/ asm mov es, Segt ; /**/ +/**/ asm mov dx, Off ; /**/ +/**/ asm int 0x10 ; /**/ + +if( //carga_botones("cd_in.img") // Carga botones del fichero "botones.p1" + Fichero_cd_in2(0) + != 1 ) { + Fichero_cd_in2(112); + +// Imprime_Estaticos( 112, "cd_in.img"); + Espera_Tecla_o_Raton(); + closegraph(); + cprintf("\n\rError en la CARGA DE BOTONES"); + exit(112); +} + + Fichero_cd_in2(1); +// Imprime_Estaticos( 1, "cd_in.img"); // Imprime botones estaticos 'Seccion 1' + + Imprime_Secuencia(1); // Imprime secuencia 1. + + Fichero_cd_in2(2); + +// Imprime_Estaticos( 2, "cd_in.img"); // Imprime botones estaticos 'Seccion 2' + // para los textos + +/**/ PunteroRaton = 100; /**/ +/**/ inicializa_raton_grafico( 0, 0, 618, 460); /**/ +/**/ if ( PunteroRaton != 100 ) { /**/ +/**/ closegraph(); /**/ +/**/ cprintf("Memoria_Insuficiente para el RATON\n\r");/**/ +/**/ exit(1); /**/ +/**/ } /**/ + + Inicializa_Iconos(); + Coloca_Iconos_Dos_Windows(); + Coloca_Iconos(1); + +ENCIENDE_PANTALLA(dac); + + +/* +if ( (Pantalla = malloc( JD_imagesize(0, 0, 21, 21) )) == NULL ) { + Imprime_Estaticos( SIN_CVN, "cd_in.img"); // Imprime botones estaticos 'Seccion 2' + Espera_Tecla_o_Raton(); + closegraph(); + cprintf("\n\rError en la asignacin de memoria para la mascara del raton"); + exit(2); +} +*/ + + + True_Push = ON; // Activa el TRUE PUSH ( PRESION REAL ) + + Menu_de_Edicion(); +/* + free(P_Raton1); + free(P_Raton2); + free(P_Raton3); + free(P_Raton4); +*/ + APAGA_PANTALLA(dac); + closegraph(); +/* + farfree(Icono); + free(Pantalla); +*/ + Libera_Raton_Animado(); + + cprintf("Gracias por utilizar mi Software\n\r"); + cprintf(" Jos David Guilln\n\r"); + cprintf("\n\r"); + + return 0; +} + + +void InicializaSVGA(void) { + + int Gd = DETECT, Gm; + int Drv, errorcode; + + installuserdriver("Svga256",DetectVGA256); +/* If driver is linked with file, remove comments */ + registerfarbgidriver(Svga256_fdriver); + + errorcode = registerfarbgifont(small_font_far); + +/* report any registration errors */ +if (errorcode < 0) +{ + printf("Graphics error: %s\n", grapherrormsg(errorcode)); + printf("Press any key to halt:"); + getch(); + exit(1); /* terminate with an error code */ +} + + + initgraph(&Gd,&Gm,""); + + /* read result of initialization */ + errorcode = graphresult(); + +if (errorcode != grOk) /* an error occurred */ +{ + printf("Graphics error: %s\n", grapherrormsg(errorcode)); + printf("Presione una tecla para finalizar:"); + getch(); + exit(1); /* return with error code */ +} + + + +} diff --git a/CD_IN/P_RATON1.CPP b/CD_IN/P_RATON1.CPP new file mode 100644 index 0000000..f67ebe8 --- /dev/null +++ b/CD_IN/P_RATON1.CPP @@ -0,0 +1,294 @@ +int Carga_Puntero_Animado(void) { + +int n = ( 20 * 20 ); + +if( ((P_Raton1 = (unsigned char *)malloc( n ))==NULL) || + ((P_Raton2 = (unsigned char *)malloc( n ))==NULL) || + ((P_Raton3 = (unsigned char *)malloc( n ))==NULL) || + ((P_Raton4 = (unsigned char *)malloc( n ))==NULL) ) { + return 1; + } + +*P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; +*P_Raton1++ = NEGRO ; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; +*P_Raton1++ = BLANCO ; *P_Raton1++ = NEGRO ; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; +*P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = NEGRO ; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; +*P_Raton1++ = BLANCO ; *P_Raton1++ = NEGRO ; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; +*P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = NEGRO ; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = BLANCO ; *P_Raton1++ = NEGRO ; +*P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; +*P_Raton1++ = BLANCO ; *P_Raton1++ = NEGRO ; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = BLANCO ; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; +*P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = NEGRO ; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = BLANCO ; *P_Raton1++ = NEGRO ; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = BLANCO ; *P_Raton1++ = NEGRO ; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = AZUL ; +*P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = UNKNOW ; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; +*P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = UNKNOW ; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; +*P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = UNKNOW ; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = UNKNOW ; *P_Raton1++ = UNKNOW ; +*P_Raton1++ = UNKNOW ; *P_Raton1++ = UNKNOW ; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = UNKNOW ; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = UNKNOW ; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = UNKNOW ; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; +*P_Raton1++ = UNKNOW ; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = UNKNOW ; *P_Raton1++ = UNKNOW ; +*P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = UNKNOW ; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = UNKNOW ; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = UNKNOW ; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; +*P_Raton1++ = UNKNOW ; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = UNKNOW ; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = UNKNOW ; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = UNKNOW ; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = UNKNOW ; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; +*P_Raton1++ = UNKNOW ; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = AZUL ; +*P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = UNKNOW ; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; +*P_Raton1++ = UNKNOW ; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = UNKNOW ; *P_Raton1++ = AZUL ; +*P_Raton1++ = AZUL ; *P_Raton1++ = UNKNOW ; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; +*P_Raton1++ = AZUL ; *P_Raton1++ = UNKNOW ; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; +*P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = UNKNOW ; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = UNKNOW ; *P_Raton1++ = AZUL ; +*P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = UNKNOW ; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = AZUL ; *P_Raton1++ = UNKNOW ; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = UNKNOW ; *P_Raton1++ = UNKNOW ; *P_Raton1++ = UNKNOW ; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = UNKNOW ; *P_Raton1++ = UNKNOW ; *P_Raton1++ = GRIS_CLARO; +*P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; *P_Raton1++ = GRIS_CLARO; + +*P_Raton2++ = BLANCO ; *P_Raton2++ = BLANCO ; *P_Raton2++ = BLANCO ; *P_Raton2++ = BLANCO ; *P_Raton2++ = BLANCO ; *P_Raton2++ = NEGRO ; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = BLANCO ; *P_Raton2++ = BLANCO ; *P_Raton2++ = BLANCO ; *P_Raton2++ = BLANCO ; +*P_Raton2++ = NEGRO ; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = BLANCO ; *P_Raton2++ = BLANCO ; +*P_Raton2++ = BLANCO ; *P_Raton2++ = BLANCO ; *P_Raton2++ = BLANCO ; *P_Raton2++ = NEGRO ; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = BLANCO ; *P_Raton2++ = BLANCO ; *P_Raton2++ = BLANCO ; *P_Raton2++ = BLANCO ; *P_Raton2++ = BLANCO ; *P_Raton2++ = BLANCO ; +*P_Raton2++ = NEGRO ; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = BLANCO ; *P_Raton2++ = NEGRO ; *P_Raton2++ = BLANCO ; *P_Raton2++ = BLANCO ; +*P_Raton2++ = BLANCO ; *P_Raton2++ = BLANCO ; *P_Raton2++ = BLANCO ; *P_Raton2++ = NEGRO ; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = BLANCO ; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = BLANCO ; *P_Raton2++ = BLANCO ; *P_Raton2++ = BLANCO ; *P_Raton2++ = NEGRO ; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = BLANCO ; *P_Raton2++ = NEGRO ; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; +*P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; +*P_Raton2++ = AZUL ; *P_Raton2++ = UNKNOW ; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = AZUL ; +*P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; +*P_Raton2++ = UNKNOW ; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = UNKNOW ; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = UNKNOW ; *P_Raton2++ = UNKNOW ; *P_Raton2++ = UNKNOW ; *P_Raton2++ = UNKNOW ; +*P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = UNKNOW ; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = UNKNOW ; *P_Raton2++ = AZUL ; +*P_Raton2++ = AZUL ; *P_Raton2++ = UNKNOW ; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = UNKNOW ; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; +*P_Raton2++ = UNKNOW ; *P_Raton2++ = UNKNOW ; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = AZUL ; +*P_Raton2++ = AZUL ; *P_Raton2++ = UNKNOW ; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; +*P_Raton2++ = UNKNOW ; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = UNKNOW ; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = UNKNOW ; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = UNKNOW ; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = UNKNOW ; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; +*P_Raton2++ = UNKNOW ; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = UNKNOW ; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; +*P_Raton2++ = UNKNOW ; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = UNKNOW ; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = UNKNOW ; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = UNKNOW ; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = UNKNOW ; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; +*P_Raton2++ = UNKNOW ; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = AZUL ; *P_Raton2++ = UNKNOW ; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = UNKNOW ; +*P_Raton2++ = UNKNOW ; *P_Raton2++ = UNKNOW ; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; +*P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = UNKNOW ; +*P_Raton2++ = UNKNOW ; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; *P_Raton2++ = GRIS_CLARO; + +*P_Raton3++ = BLANCO ; *P_Raton3++ = BLANCO ; *P_Raton3++ = BLANCO ; *P_Raton3++ = BLANCO ; *P_Raton3++ = NEGRO ; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = BLANCO ; *P_Raton3++ = BLANCO ; *P_Raton3++ = BLANCO ; *P_Raton3++ = NEGRO ; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = BLANCO ; *P_Raton3++ = BLANCO ; +*P_Raton3++ = BLANCO ; *P_Raton3++ = BLANCO ; *P_Raton3++ = NEGRO ; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = BLANCO ; *P_Raton3++ = NEGRO ; *P_Raton3++ = BLANCO ; *P_Raton3++ = BLANCO ; *P_Raton3++ = BLANCO ; *P_Raton3++ = NEGRO ; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = BLANCO ; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = BLANCO ; +*P_Raton3++ = BLANCO ; *P_Raton3++ = NEGRO ; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; +*P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = AZUL ; +*P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = UNKNOW ; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; +*P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = UNKNOW ; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = UNKNOW ; +*P_Raton3++ = UNKNOW ; *P_Raton3++ = UNKNOW ; *P_Raton3++ = UNKNOW ; *P_Raton3++ = UNKNOW ; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; +*P_Raton3++ = UNKNOW ; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = UNKNOW ; +*P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = UNKNOW ; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = AZUL ; +*P_Raton3++ = AZUL ; *P_Raton3++ = UNKNOW ; *P_Raton3++ = UNKNOW ; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = UNKNOW ; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = UNKNOW ; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = UNKNOW ; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = AZUL ; +*P_Raton3++ = AZUL ; *P_Raton3++ = UNKNOW ; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; +*P_Raton3++ = UNKNOW ; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = UNKNOW ; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = UNKNOW ; *P_Raton3++ = AZUL ; +*P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = UNKNOW ; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = AZUL ; +*P_Raton3++ = AZUL ; *P_Raton3++ = UNKNOW ; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; +*P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = UNKNOW ; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = UNKNOW ; +*P_Raton3++ = UNKNOW ; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = UNKNOW ; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; *P_Raton3++ = AZUL ; +*P_Raton3++ = UNKNOW ; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = UNKNOW ; *P_Raton3++ = UNKNOW ; *P_Raton3++ = UNKNOW ; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; +*P_Raton3++ = UNKNOW ; *P_Raton3++ = UNKNOW ; *P_Raton3++ = GRIS_CLARO; *P_Raton3++ = GRIS_CLARO; + +*P_Raton4++ = BLANCO ; *P_Raton4++ = BLANCO ; *P_Raton4++ = BLANCO ; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = BLANCO ; *P_Raton4++ = BLANCO ; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = BLANCO ; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = BLANCO ; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = BLANCO ; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; *P_Raton4++ = UNKNOW ; *P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; +*P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; *P_Raton4++ = UNKNOW ; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; +*P_Raton4++ = UNKNOW ; *P_Raton4++ = UNKNOW ; *P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; *P_Raton4++ = UNKNOW ; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; +*P_Raton4++ = UNKNOW ; *P_Raton4++ = AZUL ; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; +*P_Raton4++ = UNKNOW ; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; *P_Raton4++ = UNKNOW ; *P_Raton4++ = UNKNOW ; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; *P_Raton4++ = UNKNOW ; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; *P_Raton4++ = UNKNOW ; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; *P_Raton4++ = UNKNOW ; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; +*P_Raton4++ = UNKNOW ; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = UNKNOW ; *P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; +*P_Raton4++ = UNKNOW ; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; *P_Raton4++ = UNKNOW ; *P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; +*P_Raton4++ = AZUL ; *P_Raton4++ = UNKNOW ; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; +*P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; *P_Raton4++ = UNKNOW ; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = AZUL ; *P_Raton4++ = AZUL ; +*P_Raton4++ = AZUL ; *P_Raton4++ = UNKNOW ; *P_Raton4++ = UNKNOW ; *P_Raton4++ = UNKNOW ; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; *P_Raton4++ = GRIS_CLARO; +*P_Raton4++ = GRIS_CLARO; *P_Raton4++ = UNKNOW ; *P_Raton4++ = UNKNOW ; *P_Raton4++ = GRIS_CLARO; + +return 0; +} + +void Libera_Raton_Animado(void){ + + free(P_Raton1); + free(P_Raton2); + free(P_Raton3); + free(P_Raton4); + +} diff --git a/CD_IN/P_RATON2.CPP b/CD_IN/P_RATON2.CPP new file mode 100644 index 0000000..cb75ee6 --- /dev/null +++ b/CD_IN/P_RATON2.CPP @@ -0,0 +1,67 @@ +*P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = NEGRO ; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; +*P_Ratonx++ = NEGRO ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; +*P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = NEGRO ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; +*P_Ratonx++ = NEGRO ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = NEGRO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; +*P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = NEGRO ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = NEGRO ; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = NEGRO ; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = UNKNOW ; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = UNKNOW ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = UNKNOW ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = UNKNOW ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = UNKNOW ; +*P_Ratonx++ = UNKNOW ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = UNKNOW ; +*P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; \ No newline at end of file diff --git a/CD_IN/P_RATON3.CPP b/CD_IN/P_RATON3.CPP new file mode 100644 index 0000000..5f88a28 --- /dev/null +++ b/CD_IN/P_RATON3.CPP @@ -0,0 +1,67 @@ +*P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = NEGRO ; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = NEGRO ; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; +*P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = NEGRO ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = BLANCO ; *P_Ratonx++ = NEGRO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = NEGRO ; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = BLANCO ; +*P_Ratonx++ = BLANCO ; *P_Ratonx++ = NEGRO ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; +*P_Ratonx++ = UNKNOW ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; +*P_Ratonx++ = UNKNOW ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = UNKNOW ; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = UNKNOW ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; \ No newline at end of file diff --git a/CD_IN/P_RATON4.CPP b/CD_IN/P_RATON4.CPP new file mode 100644 index 0000000..70c3ee9 --- /dev/null +++ b/CD_IN/P_RATON4.CPP @@ -0,0 +1,67 @@ +*P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = BLANCO ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = BLANCO ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = UNKNOW ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = UNKNOW ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = AZUL ; *P_Ratonx++ = AZUL ; +*P_Ratonx++ = AZUL ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = GRIS_CLARO; +*P_Ratonx++ = GRIS_CLARO; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = UNKNOW ; *P_Ratonx++ = GRIS_CLARO; \ No newline at end of file diff --git a/CD_IN/R.BAT b/CD_IN/R.BAT new file mode 100644 index 0000000..8c4f7a0 --- /dev/null +++ b/CD_IN/R.BAT @@ -0,0 +1 @@ +edit cd_in.img diff --git a/CD_IN/SORT_CD.CPP b/CD_IN/SORT_CD.CPP new file mode 100644 index 0000000..f54f679 --- /dev/null +++ b/CD_IN/SORT_CD.CPP @@ -0,0 +1,1000 @@ +#include "..\cd_file.h" + +#define DOS 1 +#define WINDOWS 2 + + +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// +/*****/ void Abre_Ficha_CD_in(void); /*****/ +/*****/ void GetLineCD_in(void); /*****/ +/*****/ FILE *CD_in; /*****/ +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// +CD_FILE CD_in1; +struct Cabecera CD_cabecera; + + + int Items_for = DOS; + int Item_select = 1; + int CurrTopLineCD_in = 1; int CurrRowCD_in = 1; + int CurrColCD_in = 1; + +void main(int argc, char *argv[]){ + int ok = 0, key; + + int Curr_Item = 1; + + printf("\nJD Soft...\n"); + printf("\nAbriendo fichero de datos..."); + Inicializa_Apertura(argv[1]); + printf(" OK!\n"); + printf("Ordenando... "); + Sort(); + printf(" OK!\n"); + + + +} + +fclose(CD_in); + return; +} + + +// +// +// +// +// +// +// +// + +void Abre_Ficha_CD_in(void){ + +char ArchivoDatos[]="JD_Soft.FV"; +char Memoria; +void *Imagen; + +int cm; +cm = JD_imagesize(200, 212, 440, 267); +if ( (Imagen = malloc( cm /*imagesize(200, 212, 440, 267)*/ ) ) == NULL ) Memoria = 0; +else { + Memoria = 1; + getimage( 200, 212, 440, 267, Imagen ); + Imprime_Estaticos( 113, "cd_in.img"); + settextstyle( SMALL_FONT, HORIZ_DIR, 4); +} + +if (Items_for == DOS) + sprintf(ArchivoDatos, "CD_D%02d.dat", Item_select ); +else + sprintf(ArchivoDatos, "CD_W%02d.dat", Item_select ); + +//// +// CD_in Apertura de Indice, y Datos, o creacin... // +//// + + int LSJ = sizeof(struct Cabecera); + int LSC = sizeof(CD_FILE); + + if ( (CD_in = fopen( ArchivoDatos, "r+b"))==NULL) { + + FILE *fa; + + if ( (fa = fopen( ArchivoDatos, "wb" ) )!=NULL ) { + + Poner_a_cero_estructura_actual_CD_in(); + CD_cabecera.Records = 0; + rewind(fa); + + fwrite(&CD_cabecera, LSJ, 1, fa); fseek(fa, (long)LSJ, SEEK_SET); + fwrite(&CD_in1, LSC, 1, fa); + + if (fclose(fa) == EOF ) exit(1); + } + + if ( (CD_in = fopen( ArchivoDatos, "r+b"))==NULL) { + if ( Memoria ) free(Imagen); + restorecrtmode(); + printf("NO SE PUDO ABRIR EL FICHERO INDICE EN LA 2 PASADA"); + exit(1); + } + } + + rewind(CD_in); + if ( fread(&CD_cabecera, LSJ, 1, CD_in) != 1 ) { + if ( Memoria ) free(Imagen); + restorecrtmode(); + printf("NO SE PUDO LEER EN EL FICHERO: INDICE"); + exit(1); + } + fseek(CD_in, (long)LSJ, SEEK_SET); + if ( fread(&CD_in1, LSC, 1, CD_in) != 1 ) { + if ( Memoria ) free(Imagen); + restorecrtmode(); + printf("NO SE PUDO LEER EN EL FICHERO: DATOS"); + exit(1); + } + + if( Memoria ) { + putimage( 200, 212, Imagen, COPY_PUT); + free(Imagen); + } + +} + +void Poner_a_cero_estructura_actual_CD_in(void){ + + char CR = 13, LF = 10, BEEP = 7, ANY = 26; + sprintf( CD_cabecera.Nombre_del_Programa, "%c %c %c - CD_OUT - %c %c", CR, LF, BEEP, CR, LF ); + sprintf( CD_cabecera.Comentario_Inicial, "Jos David Guilln %c %c %c %c", CR, LF, BEEP, ANY ); + CD_cabecera.VerHi = 1; CD_cabecera.VerLow = 0; + CD_cabecera.Register = 1; + + CD_in1.Typo.DOS_WINDOWS = ( Items_for == DOS ? 0 : 1); + CD_in1.Typo.Tipo_de_Programa = Item_select; + CD_in1.Typo.T_Dibujo = 0; + CD_in1.Typo.Install = 0; + CD_in1.Typo.Ejecutable = 0; + + strcpy( CD_in1.Nombre, "\0" ); + for(CR=0; CR<32; CR++) +// strcpy( CD_in1.Comentario[CR], " "); + strcpy( CD_in1.Comentario[CR], " "); + + strcpy( CD_in1.N_Img, "\0"); + strcpy( CD_in1.Dir_P, "\0"); + + CD_in1.Alt_Install.Usar_VGA_COPY = 0; + CD_in1.Alt_Install.Usar_ARJ = 0; + CD_in1.Alt_Install.Usar_ZIP = 0; + CD_in1.Alt_Install.Usar_LHA = 0; + CD_in1.Alt_Install.Usar_XCopy = 0; + CD_in1.Alt_Install.Usar_Install_P = 0; +// CD_in1.Alt_Install.Usar_NO_Install = 0; + + strcpy( CD_in1.N_Install, "\0"); + strcpy( CD_in1.N_Exe, "\0"); + +} + +// +// +// +// +// +// +// +// + + + + +void PutLineCD_in(void){ + + int LSJ = sizeof(struct Cabecera); + int LSC = sizeof(CD_FILE); + + int CurrRecord = CurrTopLineCD_in + CurrRowCD_in - 1; + +fseek(CD_in, (long)LSJ + ( LSC * CurrRecord ) - LSC, SEEK_SET); // Se coloca +fwrite(&CD_in1, LSC, 1, CD_in); // Y escribe + +} + +void GetLineCD_in(void){ + + int LSJ = sizeof(struct Cabecera); + int LSC = sizeof(CD_FILE); + + int CurrRecord = CurrTopLineCD_in + CurrRowCD_in - 1; + +fseek(CD_in, (long)LSJ + ( LSC * CurrRecord ) - LSC, SEEK_SET); // Se coloca +fread(&CD_in1, LSC, 1, CD_in); // Y lee + +} + +void DeleteRecordCD_in(void) { + + long CurrRecord; + int LSJ = sizeof(struct Cabecera); + int LSC = sizeof(CD_FILE); + +CurrRecord = CurrTopLineCD_in + CurrRowCD_in - 1; + + if ( (CD_cabecera.Records == 0) ) { BEEP(); + Poner_a_cero_estructura_actual_CD_in(); + fseek(CD_in, (long)LSJ + ( LSC * ( 0 ) ), SEEK_SET); + fwrite(&CD_in1, LSC, 1, CD_in); + PrintWholeScreenCD_in(); + GetLineCD_in(); + EditCursorCD_in(0); + + } else { + + CD_cabecera.Records -= 1; + + unsigned int p = CurrRecord - 1; + + while( p <= CD_cabecera.Records ) { + + fseek(CD_in, (long)LSJ + ( LSC * ( p + 1 ) ), SEEK_SET); // Se coloca + fread(&CD_in1, LSC, 1, CD_in); // Y lee + + fseek(CD_in, (long)LSJ + ( LSC * p ), SEEK_SET); // Se coloca + fwrite(&CD_in1, LSC, 1, CD_in); // Y escribe + + p++; + }; + + rewind(CD_in); + fwrite(&CD_cabecera, LSJ, 1, CD_in); // Acualiza n de registros + + if ((CurrRecord - 1) == CD_cabecera.Records + 1) CurrRowCD_in--; +/* */ +/* */ PrintWholeScreenCD_in(); +/* */ GetLineCD_in(); + EditCursorCD_in(0); + + PrintLineCD_in2(); + } +} + + + +void AddRecordCD_in(void){ + + long CurrRecord= CurrTopLineCD_in + CurrRowCD_in - 1; + + int LSJ = sizeof(struct Cabecera); + int LSC = sizeof(CD_FILE); + +if( CurrRecord < 100000 ) { + + long avance = CD_cabecera.Records; + + while( avance >= (CurrRecord-1) ) { + + fseek(CD_in, (long)LSJ + ( LSC * avance ), SEEK_SET); + fread(&CD_in1, LSC, 1, CD_in); + + fseek(CD_in, (long)LSJ + ( LSC * (avance + 1) ), SEEK_SET); + fwrite(&CD_in1, LSC, 1, CD_in); + + avance--; + }; + +// CD_in1_inx.Fin = CD_in1_inx.Fin + 1; + CD_cabecera.Records++; + + rewind(CD_in); + fwrite(&CD_cabecera, LSJ, 1, CD_in); // Acualiza n de registros + + Poner_a_cero_estructura_actual_CD_in(); + + fseek(CD_in, (long)LSJ + ( LSC * ( CurrTopLineCD_in + CurrRowCD_in - 1) ), SEEK_SET); + fwrite(&CD_in1, LSC, 1, CD_in); + + CurrRowCD_in++; + if (CurrRowCD_in>19) { CurrTopLineCD_in++; CurrRowCD_in--; } + PrintWholeScreenCD_in(); + GetLineCD_in(); + EditCursorCD_in(0); + PrintLineCD_in2(); + + } + +} + +// +// +// +// +// +// +// +// + +void Mueve_Abajo_CD_in(void){ + + int CurrRecord = CurrTopLineCD_in + CurrRowCD_in - 1; + + if (CurrRowCD_in == 19) { + if ( (CurrRecord - 1) >= CD_cabecera.Records) { BEEP(); EditCursorCD_in(0); } + else { CurrTopLineCD_in++; + PrintWholeScreenCD_in(); + GetLineCD_in(); + PrintLineCD_in2(); + } + } else { + if( (CurrRecord - 1) >= CD_cabecera.Records) { BEEP(); EditCursorCD_in(0); } + else { CurrRowCD_in++; + GetLineCD_in(); + PrintLineCD_in2(); + } + } + +} + +void Mueve_Arriba_CD_in(void){ + int CurrRecord = CurrTopLineCD_in + CurrRowCD_in - 1; + + if (CurrRowCD_in==1) { + if ((CurrRecord - 1) <= 0) { BEEP(); EditCursorCD_in(0); } + else { + CurrTopLineCD_in--; + PrintWholeScreenCD_in(); + GetLineCD_in(); + PrintLineCD_in2(); + } + + } else { + if( (CurrRecord - 1) <= 0) { BEEP(); // Do nothing, get over... + + } else { CurrRowCD_in--; + GetLineCD_in(); + PrintLineCD_in2(); + } + } + +} + +void EditCursorCD_in(int ShowHide) { + +char Buffer[80]; +int Ch; + + if (!ShowHide) { + setcolor(255); + setfillstyle(SOLID_FILL, 255); + Borra_Campo_Visual( CurrColCD_in ); + setcolor(240); + } else { + setcolor(240); + setfillstyle(SOLID_FILL, 240); + Borra_Campo_Visual( CurrColCD_in ); + Texto_Normal + } + + switch(CurrColCD_in){ + case 1: + // Nombre del Programa 26 d. + outtextxy( 8, 98 + (CurrRowCD_in-1) * 12, CD_in1.Nombre ); + break; + case 2: + // Nombre del Instalador + outtextxy( 175, 98 + (CurrRowCD_in-1) * 12, CD_in1.N_Install ); + break; + case 3: + // Nombre del Ejecutable + outtextxy( 233, 98 + (CurrRowCD_in-1) * 12, CD_in1.N_Exe); + break; + case 4: + // Es Instalable ? Cual es el Tipo ? + if ( CD_in1.Alt_Install.Usar_VGA_COPY ) strcpy( Buffer, "VCpy" ); else + if ( CD_in1.Alt_Install.Usar_ARJ ) strcpy( Buffer, "Arj" ); else + if ( CD_in1.Alt_Install.Usar_ZIP ) strcpy( Buffer, "Zip" ); else + if ( CD_in1.Alt_Install.Usar_XCopy ) strcpy( Buffer, "Xcpy" ); else + if ( CD_in1.Alt_Install.Usar_Install_P) strcpy( Buffer, "Inst" ); else + if ( CD_in1.Alt_Install.Usar_LHA ) strcpy( Buffer, "NO I" ); else + strcpy( Buffer, "NO I" ); + outtextxy( 291, 98 + (CurrRowCD_in-1) * 12, Buffer ); + break; + + case 5: + // Es ejecutable ? + strcpy( Buffer, (CD_in1.Typo.Ejecutable ? "SI" : "NO") ); + outtextxy( 321, 98 + (CurrRowCD_in-1) * 12, Buffer ); + break; + + case 6: + // Tiene Dibujo ? + strcpy( Buffer, (CD_in1.Typo.T_Dibujo ? "SI" : "NO") ); + outtextxy( 353, 98 + (CurrRowCD_in-1) * 12, Buffer ); + break; + case 7: + // Directorio + outtextxy( 123, 338, CD_in1.Dir_P ); + break; + case 8: + // Nombre Imagen + outtextxy( 123, 358, CD_in1.N_Img ); + break; + } + +} + + + +void PrintLineCD_in(void){ + + char Buffer[80]; + + setcolor(240); + setfillstyle(SOLID_FILL, 240); + Borra_Campo_Visual(-1); + + Texto_Normal + // Nombre del Programa 26 d. + outtextxy( 8, 98 + (CurrRowCD_in-1) * 12, CD_in1.Nombre ); + // Nombre del Instalador + outtextxy( 175, 98 + (CurrRowCD_in-1) * 12, CD_in1.N_Install ); + // Nombre del Ejecutable + outtextxy( 233, 98 + (CurrRowCD_in-1) * 12, CD_in1.N_Exe); + // Es Instalable ? Cual es el Tipo ? + if ( CD_in1.Alt_Install.Usar_VGA_COPY ) strcpy( Buffer, "VCpy" ); else + if ( CD_in1.Alt_Install.Usar_ARJ ) strcpy( Buffer, "Arj" ); else + if ( CD_in1.Alt_Install.Usar_ZIP ) strcpy( Buffer, "Zip" ); else + if ( CD_in1.Alt_Install.Usar_XCopy ) strcpy( Buffer, "Xcpy" ); else + if ( CD_in1.Alt_Install.Usar_Install_P) strcpy( Buffer, "Inst" ); else + if ( CD_in1.Alt_Install.Usar_LHA ) strcpy( Buffer, "NO I" ); else + strcpy( Buffer, "NO I" ); + outtextxy( 291, 98 + (CurrRowCD_in-1) * 12, Buffer ); + // Es ejecutable ? + strcpy( Buffer, (CD_in1.Typo.Ejecutable ? "SI" : "NO") ); + outtextxy( 321, 98 + (CurrRowCD_in-1) * 12, Buffer ); + // Tiene Dibujo ? + strcpy( Buffer, (CD_in1.Typo.T_Dibujo ? "SI" : "NO") ); + outtextxy( 353, 98 + (CurrRowCD_in-1) * 12, Buffer ); + // Directorio + outtextxy( 123, 338, CD_in1.Dir_P ); + // Nombre Imagen + outtextxy( 123, 358, CD_in1.N_Img ); + +} + + +void PrintLineCD_in2(void){ + + setcolor(240); + setfillstyle(SOLID_FILL, 240); + Borra_Campo_Visual(7); + Borra_Campo_Visual(8); + + Texto_Normal + // Directorio + outtextxy( 123, 338, CD_in1.Dir_P ); + // Nombre Imagen + outtextxy( 123, 358, CD_in1.N_Img ); + +} + +void PrintWholeScreenCD_in(void){ + +int tmp = CurrRowCD_in; + + setcolor(240); + setfillstyle(SOLID_FILL, 240); +Borra_Campo_Visual(-2); + + for(CurrRowCD_in = 1; CurrRowCD_in < (19+1); CurrRowCD_in++) + + if ( (CurrTopLineCD_in + CurrRowCD_in - 1) <= (CD_cabecera.Records + 1) ) { + GetLineCD_in(); + PrintLineCD_in(); + } + +PrintLineCD_in2(); +CurrRowCD_in = tmp; + +} + +void Edit_Item_CD_in(void){ + + char buffer[80]; + + switch(CurrColCD_in){ + case 1: + // Nombre del Programa 26 d. + // Puntero a cadena, T/N, Dtos, Color, Fondo, Up, Left, Right, Down, Linea + InputCadenaG_T4( CD_in1.Nombre, 0, 26, 255, 250, 8, 98/*, 175, 327*/, CurrRowCD_in-1); + break; + case 2: + // Nombre del Instalador + InputCadenaG_T4( CD_in1.N_Install, 0, 8, 255, 250, 175, 98/*, 227, 327*/, CurrRowCD_in-1); + break; + case 3: + // Nombre del Ejecutable + InputCadenaG_T4( CD_in1.N_Exe, 0, 8, 255, 250, 233, 98/*, 285, 327*/, CurrRowCD_in-1); + break; + case 4: + // Es Instalable ? Cual es el Tipo ? + if ( CD_in1.Alt_Install.Usar_VGA_COPY ) strcpy( buffer, "1" ); else + if ( CD_in1.Alt_Install.Usar_ARJ ) strcpy( buffer, "2" ); else + if ( CD_in1.Alt_Install.Usar_ZIP ) strcpy( buffer, "3" ); else + if ( CD_in1.Alt_Install.Usar_XCopy ) strcpy( buffer, "4" ); else + if ( CD_in1.Alt_Install.Usar_Install_P) strcpy( buffer, "5" ); else + if ( CD_in1.Alt_Install.Usar_LHA ) strcpy( buffer, "6" ); + + InputCadenaG_T4( buffer, 1, 1, 255, 250, 291, 98/*, 315, 327*/, CurrRowCD_in-1); + + CD_in1.Alt_Install.Usar_VGA_COPY = 0; + CD_in1.Alt_Install.Usar_ARJ = 0; + CD_in1.Alt_Install.Usar_ZIP = 0; + CD_in1.Alt_Install.Usar_XCopy = 0; + CD_in1.Alt_Install.Usar_Install_P = 0; + CD_in1.Alt_Install.Usar_LHA = 0; + + switch( atoi(buffer) ) { + + case 1: CD_in1.Alt_Install.Usar_VGA_COPY = 1; + break; + case 2: CD_in1.Alt_Install.Usar_ARJ = 1; + break; + case 3: CD_in1.Alt_Install.Usar_ZIP = 1; + break; + case 4: CD_in1.Alt_Install.Usar_XCopy = 1; + break; + case 5: CD_in1.Alt_Install.Usar_Install_P = 1; + break; + case 6: CD_in1.Alt_Install.Usar_LHA = 1; + break; + default: + break; + } + break; + case 5: + // Es ejecutable ? + strcpy( buffer, (CD_in1.Typo.Ejecutable ? "1" : "0") ); + InputCadenaG_T4( buffer, 1, 1, 255, 250, 321, 98/*, 347, 327*/, CurrRowCD_in-1); + CD_in1.Typo.Ejecutable = atoi(buffer); + break; + case 6: + // Tiene Dibujo ? + strcpy( buffer, (CD_in1.Typo.T_Dibujo ? "1" : "0") ); + InputCadenaG_T4( buffer, 1, 1, 255, 250, 353, 98/*, 377, 327*/, CurrRowCD_in-1); + CD_in1.Typo.T_Dibujo = atoi(buffer); + break; + case 7: + // Directorio + InputCadenaG_T4( CD_in1.Dir_P, 0, 40, 255, 250, 123, 338/*, 377, 352*/, 0); + break; + case 8: + // Nombre Imagen + InputCadenaG_T4( CD_in1.N_Img, 0, 8, 255, 250, 123, 358/*, 175, 372*/, 0); + break; + } + PutLineCD_in(); + GetLineCD_in(); + PrintLineCD_in(); + PrintLineCD_in2(); + +} + + + +void Borra_Campo_Visual(int Columna){ + + +switch( Columna ) { + case -2: + // ** Nombre + bar( 8, 98, 169, 327 ); + // ** Nombre Install + bar( 175, 98, 227, 327 ); + // ** Nombre Exe + bar( 233, 98, 285, 327 ); + // ** Instalable + bar( 291, 98, 315, 327 ); + // ** Ejecutable + bar( 321, 98, 347, 327 ); + // ** Imagen + bar( 353, 98, 377, 327 ); + // *** Directorio + bar( 123, 338, 377, 352 ); + // *** Nombre Imagen + bar( 123, 358, 175, 372 ); + // *** Directorio + bar( 123, 338, 377, 352 ); + // *** Nombre Imagen + bar( 123, 358, 175, 372 ); + break; + case -1: + // *** Los Borra -> TODOS + // C:\>del. + // Todos los archivos en el directorio + // seran eliminados. Si / No ? S + // C:\>_ + // ** Nombre + bar( 8, 98 + (CurrRowCD_in-1) * 12, 169, 98 + ( CurrRowCD_in - 1 ) * 12 + 10); + // ** Nombre Install + bar( 175, 98 + (CurrRowCD_in-1) * 12, 227, 98 + ( CurrRowCD_in - 1 ) * 12 + 10); + // ** Nombre Exe + bar( 233, 98 + (CurrRowCD_in-1) * 12, 285, 98 + ( CurrRowCD_in - 1 ) * 12 + 10); + // ** Instalable + bar( 291, 98 + (CurrRowCD_in-1) * 12, 315, 98 + ( CurrRowCD_in - 1 ) * 12 + 10); + // ** Ejecutable + bar( 321, 98 + (CurrRowCD_in-1) * 12, 347, 98 + ( CurrRowCD_in - 1 ) * 12 + 10); + // ** Imagen + bar( 353, 98 + (CurrRowCD_in-1) * 12, 377, 98 + ( CurrRowCD_in - 1 ) * 12 + 10 ); + // *** Directorio + bar( 123, 338, 377, 352 ); + // *** Nombre Imagen + bar( 123, 358, 175, 372 ); + break; + case 1: + // ** Nombre + bar( 8, 98 + (CurrRowCD_in-1) * 12, 169, 98 + ( CurrRowCD_in - 1 ) * 12 + 10); + break; + case 2: + // ** Nombre Install + bar( 175, 98 + (CurrRowCD_in-1) * 12, 227, 98 + ( CurrRowCD_in - 1 ) * 12 + 10); + break; + case 3: + // ** Nombre Exe + bar( 233, 98 + (CurrRowCD_in-1) * 12, 285, 98 + ( CurrRowCD_in - 1 ) * 12 + 10); + break; + case 4: + // ** Instalable + bar( 291, 98 + (CurrRowCD_in-1) * 12, 315, 98 + ( CurrRowCD_in - 1 ) * 12 + 10); + break; + case 5: + // ** Ejecutable + bar( 321, 98 + (CurrRowCD_in-1) * 12, 347, 98 + ( CurrRowCD_in - 1 ) * 12 + 10); + break; + case 6: + // ** Imagen + bar( 353, 98 + (CurrRowCD_in-1) * 12, 377, 98 + ( CurrRowCD_in - 1 ) * 12 + 10 ); + break; + case 7: + // *** Directorio + bar( 123, 338, 377, 352 ); + break; + case 8: + // *** Nombre Imagen + bar( 123, 358, 175, 372 ); + break; + default: + break; +} + +} + + +int InputCadenaG_T4(char *s, int numalp, int lmax, int cc, int cf, int X0, int Y0/*, int X1, int Y1*/, int RoW) +{ + + int ls; // longitud cadena + char *s1; // puntero a cadena inicial + int c, ok; + + s1 = s; // inicio cadena + + setcolor(cf); // pone color a 0 para borrar + setfillstyle(SOLID_FILL, cf); + Borra_Campo_Visual(CurrColCD_in); + setcolor(cc); // devuelve el color a su estado + + outtextxy( X0, Y0+RoW*12, s ); + + ls = strlen ( s ); // Longitud de actual + + if ( ls < lmax ) { + setcolor(250); + outtextxy( X0+textwidth( s1 ), Y0+RoW*12, ""); + } + + s += ls; // se coloca en el final + + do{ + c = getch(); // obtiene tecla + + ok = ( c == 13 || c == 0); // 13 = INTRO || Especiales + + if ( c == 8 && ls > 0 && !ok ) { // 8 = Back Space + ls--; + s--; + + *s = '\0'; + + setcolor(cf); + setfillstyle(SOLID_FILL, cf); + Borra_Campo_Visual(CurrColCD_in); +//bar(X0, Y0+RoW*12+/*2*/4, X1-2, Y0+4+RoW*12 + 10); + + setcolor(cc); + outtextxy( X0, Y0+RoW*12, s1 ); + setcolor(4); + outtextxy( X0+textwidth( s1 ), Y0+RoW*12, ""); + setcolor(cc); + + } else { + if ( !numalp && c >= 32 && c <= 254 /* isprint(c) */ && ls < lmax) { + + *s++ = c; + ls++; + + *s = '\0'; + setcolor(cf); + setfillstyle(SOLID_FILL, cf); + Borra_Campo_Visual(CurrColCD_in); +//bar(X0, Y0+RoW*12+/*2*/4, X1-2, Y0+4+RoW*12 + 10); + setcolor(cc); + outtextxy( X0, Y0+RoW*12, s1 ); + + if ( ls < lmax ) { + setcolor(4); + outtextxy( X0+textwidth( s1 ), Y0+RoW*12, ""); + setcolor(cc); + } + + + } else { + if ( numalp && isdigit(c) && ls < lmax) { + *s++ = c; + ls++; + + *s = '\0'; // Cero final + setcolor(cf); + setfillstyle(SOLID_FILL, cf); + Borra_Campo_Visual(CurrColCD_in); +//bar(X0, Y0+RoW*12+4, X1-2, Y0+4+RoW*12 + 10); + setcolor(cc); + + outtextxy( X0, Y0+RoW*12, s1 ); + + if ( ls < lmax ) { + setcolor(4); + outtextxy( X0+textwidth( s1 ), Y0+RoW*12, ""); + setcolor(cc); + } + + + } + /**/ + else if( c == 27 ) {*s='\0'; ok = 1; } + /**/ + else BEEP(); + } + } + + }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; +} + +void BEEP(void){ + + sound(440); + delay(50); + nosound(); + +} + +void Inicializa_Apertura(void) { + + CurrTopLineCD_in = 1; + CurrRowCD_in = 1; + CurrColCD_in = 1; + Abre_Ficha_CD_in(); + PrintWholeScreenCD_in(); + GetLineCD_in(); + EditCursorCD_in(0); + +} + +void Muestra_Informacion(void){ + + char Buffer[80]; + + setcolor(240); + setfillstyle(SOLID_FILL, 240); + + bar( 13, 388, 182, 434 ); + + setcolor(255); + sprintf( Buffer, "Modulo:" ); + switch ( Item_select ) { + case 1: strcat( Buffer, " Juegos" ); break; + case 2: strcat( Buffer, " P.Texto" ); break; + case 3: strcat( Buffer, " Msica" ); break; + case 4: strcat( Buffer, " Dibujo" ); break; + case 5: strcat( Buffer, " Utild." ); break; + case 6: strcat( Buffer, " Base D" ); break; + case 7: strcat( Buffer, " Hoja C" ); break; + case 8: strcat( Buffer, " Red" ); break; + case 9: strcat( Buffer, " Lenguaj" ); break; + case 10:strcat( Buffer, " Scanner" ); break; + case 11:strcat( Buffer, " News" ); break; + case 12:strcat( Buffer, " Compr" ); break; + case 13:strcat( Buffer, " Videos" ); break; + case 14:strcat( Buffer, " Varios" ); break; + case 15:strcat( Buffer, " CD's" ); break; + default: strcat( Buffer, "ERROR" ); break; + } + + strcat( Buffer, ( (Items_for==DOS) ? ", DOS" : ", WINDOWS") ); + outtextxy( 15, 390, Buffer); + + sprintf( Buffer, "Linea %02d. Reg %d / %d", CurrRowCD_in, (CurrRowCD_in+CurrTopLineCD_in-1), (CD_cabecera.Records + 1) ); + outtextxy( 15, 400, Buffer); + + + +} + + + +/////// EDITAR COMENTARIO.... + +int Editar_Comentario(void) +{ + + int ls; // longitud cadena + char *s1, *s, *s_tmp, *s_tmp1; // puntero a cadena inicial + int key, ok, Linea = 0, Columna = 0, X, Y, lmax; + char Buffer[80]; + + X = 395; Y = 105; lmax = 35; + ok = 0; + + s_tmp1 = s_tmp = s = s1 = CD_in1.Comentario[0]; // inicio cadena + + s += lmax ; *s = '\0'; + s = s_tmp; + +do { + + setcolor(250); // pone color a 0 para borrar + setfillstyle(SOLID_FILL, 250); // selecciona los atributos de + bar( X, Y+Linea*11, X + 230, Y+Linea*11 + 11); // relleno, y Borra el campo + setcolor(255); // devuelve el color a su estado + + outtextxy( X, Y+Linea*11, s1 ); // e imprime la cadena. +// ls = strlen ( s ); // Longitud de la cadena actual + + + if ( Columna < lmax ) { // Muestra cursor si es posible + setcolor(251); + strncpy( Buffer, s1, Columna ); + Buffer[Columna] = '\0'; + outtextxy( X + textwidth( Buffer ), Y+Linea*11+2, ""); + } + + switch ( ( key = getch() ) ) { // obtiene tecla + // Intro o Return + case 13: + + if( Linea < 31 ) { + setcolor(240); // pone color a 0 para borrar + setfillstyle(SOLID_FILL, 240); // selecciona los atributos de + bar( X, Y+Linea*11, X + 230, Y+Linea*11 + 11); // relleno, y Borra el campo + setcolor(255); // devuelve el color a su estado + outtextxy( X, Y+Linea*11, s1 ); // e imprime la cadena. + + Linea++; + s_tmp1 = s_tmp = s = s1 = CD_in1.Comentario[Linea]; // inicio cadena + s += lmax; *s = '\0'; + Columna = 0; + s = s_tmp1 = s_tmp = s1; + } + break; + + case 0: + + switch ( key = getch() ) { + + // F. Arriba + case 72: + if( Linea > 0 ) { + setcolor(240); // pone color a 0 para borrar + setfillstyle(SOLID_FILL, 240); // selecciona los atributos de + bar( X, Y+Linea*11, X + 230, Y+Linea*11 + 11); // relleno, y Borra el campo + setcolor(255); // devuelve el color a su estado + outtextxy( X, Y+Linea*11, s1 ); // e imprime la cadena. + + Linea--; + s_tmp1 = s_tmp = s = s1 = CD_in1.Comentario[Linea]; // inicio cadena + s += lmax; *s = '\0'; + if ( Columna < strlen( s1 ) ) s_tmp += Columna; else { Columna = 0; + s_tmp = s1; } + s = s_tmp1 = s_tmp; + + } + + break; + // F. Abajo + case 80: + + if( Linea < 31 ) { + setcolor(240); // pone color a 0 para borrar + setfillstyle(SOLID_FILL, 240); // selecciona los atributos de + bar( X, Y+Linea*11, X + 230, Y+Linea*11 + 11); // relleno, y Borra el campo + setcolor(255); // devuelve el color a su estado + outtextxy( X, Y+Linea*11, s1 ); // e imprime la cadena. + + Linea++; + s_tmp1 = s_tmp = s = s1 = CD_in1.Comentario[Linea]; // inicio cadena + s += lmax; *s = '\0'; + if ( Columna < strlen( s1 ) ) s_tmp += Columna; else { Columna = 0; + s_tmp = s1; } + s = s_tmp1 = s_tmp; + } + break; + // F. Derecha + case 77: + case 9: + if ( Columna < strlen(s1) ) { Columna++; s++; } + break; + // F. Izquierda + case 75: + case 15: + if ( Columna > 0) { Columna--; s--; } + break; + default: + BEEP(); + + } + + break; + // Back Space + case 8: + if ( Columna > 0 ) { + Columna--; + s--; + s_tmp1 = s_tmp = s; + while ( *s_tmp1 != NULL ) { + s_tmp1++; + *s_tmp = *s_tmp1; + s_tmp++; + } + } + break; + case 27: + ok = 1; + break; + default: + if ( key >= 32 && key <= 254 && Columna < lmax) { + *s++ = key; + Columna++; + } + else BEEP(); + break; + } +}while(!ok); + +while(kbhit()) getch(); // Vacia Buffer impidiendo falsas + // pulsaciones... + + setcolor(240); // pone color a 0 para borrar + setfillstyle(SOLID_FILL, 240); // selecciona los atributos de + bar( X, Y+Linea*11, X + 230, Y+Linea*11 + 11); // relleno, y Borra el campo + setcolor(255); // devuelve el color a su estado + + outtextxy( X, Y+Linea*11, s1 ); // e imprime la cadena. + PutLineCD_in(); + GetLineCD_in(); + + +return /* de momento nada */ 0; + +} + +void Muestra_Comentario(void){ + + int X, Y; + + X = 395; Y = 105; + + setcolor(240); // pone color a 0 para borrar + setfillstyle(SOLID_FILL, 240); // selecciona los atributos de + for(int Linea=0; Linea<32; Linea++ ){ + bar( X, Y+Linea*11, X + 230, Y+Linea*11 + 11); // relleno, y Borra el campo + setcolor(255); // devuelve el color a su estado + outtextxy( X, Y+Linea*11, CD_in1.Comentario[Linea] ); // e imprime la cadena. + } +} \ No newline at end of file diff --git a/CD_IN/SUPERVGA.OBJ b/CD_IN/SUPERVGA.OBJ new file mode 100644 index 0000000000000000000000000000000000000000..629a04c6c692ce9d4d0e6471f6baa54da4ddcd82 GIT binary patch literal 1801 zcmbtVYitx%6#l;5**>796w0G5&?3l>1}YDg5P|NnJ1h%jx7`<5D1$(?RS|5vpn+mZ zRfd+w@>+Qc5+5~c1cOKlrpQAn5q}sYh93r^L4|76kQmdn_1+n}wdg;8%*;98ckY?< zow@f+eI_yr3l|5&C0ZcjQ47`J{P9LUfDxf+^|Dp@YE4bW%4N@1ROjbMDynO$Ry~(L zrEt=IV;G!2pUJW3-M_fgunVR*ZUZW%`Nr;e8XS5^TNqMYezz9in~XVjo6XJvCgD~? zsv>XaBmpQ6X2esFA+@+zZ6?Bo1J0Yd zm>L@@Vls5KMD?hNfKp;tB4D5hNY#T{NRMbi6~y`kHCRw-x@(T=^Jw}k)i=*cZ0}(W z1G>wG$RGh?}sA^1r8%sn4&g}MTTkTNSo9#!2vSGUjp$=JOHw`6x;_9i^Os0B0h^B7~_T!dX~I7s}{HIW_3?U@7NdIlWlH zxpD5f8@K=)xeyI}9Gh5%&0K^=F2+`t zV>_2%7j^96QpEWL_Hh{wa5)Zf1rDSxE?L6!)b27r+f*mtjAey#5p$L0$;`#dJD!$|U$$jYH zesuC6x_Jn&y$;$A!)Ci{41x1j|5@SLv$cR86bDpp4&ah8NZ=`vd!RfW4jwQv1(@vf zo7-Dr1-xuwL9e-3ViS2j5hoK$Y&uUGgT>n3!y)#r*kVp&s6hLi3rRQ`l$-O`fS}hC z)~plfbNgkcG9EFq1(l%%#XwQ@*&_V&pEoW9A&g=6gxJss3lKi27Uw5l6xuAwc z7UU-pE|%aPj<#NS-%yYmO1Z$|EDd6^h`}O; zi(Ge{e_8taijY(bGy72YG)StIsa9i!gdPQ#In64|>+4l;mDel<5=$qE0Xa?sO%Z{bKxEX% zIF6P}_G9?9<+{DSIVIX5ZnYgPZT5?6lt!iCVx1C;3AWMAf7rH!-SD}+>$B*!u8Z}Z yMe9%IE$K;H^#9YgMX%L&qBbcO>$-C1BbmD4U^*`J3-Q7*aXk=XTch|{)&33Qm)#Hm literal 0 HcmV?d00001 diff --git a/CD_INST.CPP b/CD_INST.CPP new file mode 100644 index 0000000..1706317 --- /dev/null +++ b/CD_INST.CPP @@ -0,0 +1,559 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "..\libs\make_bot\make_bot.h" +//#include "cd_icons.h" +#include "cd_error.h" +#include "cd_file.h" +#include "CD_SND.H" + +extern int /*far _cdecl*/ Fichero_cd_img(char Dinamicos_Estaticos); + +#define DOS 1 +#define WINDOWS 2 + + +int make_dir(char *Target); + +extern void Sonido(char Sonido); +extern void BEEP(void); +void Init_Install(int CurrIcon); +extern char *current_directory(char *path); +extern void Inicializa_Dibujo(int L_Imagen, char *N_Imagen2); +extern void Inicializa_Iconos(void); +extern void Coloca_Iconos_Dos_Windows(void); +extern char far *Icono; // 18 +// extern unsigned char *P_Raton1, *P_Raton2, *P_Raton3, *P_Raton4; +// extern void *Pantalla; +extern void InicializaSVGA(void); +extern char dac[256*3]; +extern "C" void APAGA_PANTALLA(char *); +extern "C" void ENCIENDE_PANTALLA(char *); + +extern void Inicializa_Apertura(void); +// extern void Menu_de_Edicion(void); +extern void Coloca_Iconos(int Start_Icon); + +int file_exists(char *filename); +int Muestra_Mensaje(int Mensaje, char *file); + +typedef struct { + + unsigned int Exit_after_EXE : 1; + unsigned int With_Out_Sound : 1; + unsigned int Auto_Install : 1; + unsigned int Check_Free_Size : 1; + unsigned int Format_Always : 1; + unsigned int Without_Backgr : 1; + unsigned int Futura_Ampliac : 4; + +} Cd_CFG; + +extern Cd_CFG CD_CFG1; + +extern FILE *CD_in; +extern CD_FILE CD_in2; + +int InputCadenaG_T4(char *s, int numalp, int lmax, int cc, int cf, int X0, int Y0, int X1, int Y1, int RoW); + +void Init_Install(int CurrIcon){ + + int ok = 0, inst = 0, key; + char curdir[80], *Ptr, Origen[80]; + char Buffer[200], D_Target[80]; + D_Target[0] = '\0'; +// ERROR_SALVA = 0; + + void *C_Texto, *C_Aceptar, *C_Cancelar; + + /// Comprobamos que estamos preparados para proceder con + /// la instalacin pertinente... + strcpy( Buffer, CD_in2.Dir_P ); // Existe el directorio + Buffer[0] = getdisk() + 'A'; // origen... + if ( !file_exists(Buffer) ) { Muestra_Mensaje(113, "cd_out.img"); +// Sonido("CD_OUT71.WAV"); + Sonido( Error_113 ); + return; } + + +C_Texto = malloc( JD_imagesize(200, 212, 440, 267) ); +C_Aceptar = malloc( JD_imagesize(200, 270, 280, 295) ); +C_Cancelar = malloc( JD_imagesize(360, 270, 440, 295) ); + + +if( C_Texto == NULL || C_Aceptar == NULL || C_Cancelar == NULL) { + closegraph(); + cprintf("\n\rSALIENDO"); + cprintf("\n\rImposible encontrar %ldKbytes en el Heap", + ( JD_imagesize(118, 160, 521, 335) + + JD_imagesize(118, 160, 521, 335) + + JD_imagesize(118, 160, 521, 335) + ) + ); + exit(SIN_MEMORIA); +} + +getimage(200, 212, 440, 267, C_Texto); +getimage(200, 270, 280, 295, C_Aceptar); +getimage(360, 270, 440, 295, C_Cancelar); + + +// Imprime_Estaticos(20, "cd_out.img"); // Imprime botones estaticos 'Seccion 20' + Fichero_cd_img(20); +Imprime_Secuencia(4); // Imprime secuencia 4. +// Imprime_Estaticos(21, "cd_out.img"); // Imprime textos estaticos 'Seccion 5' + Fichero_cd_img(21); + +settextstyle( SMALL_FONT, HORIZ_DIR, 4); +if ( CD_in2.Alt_Install.Usar_Install_P == 1 ) { + setcolor(241); + outtextxy(215, 243, " - USAR INSTALADOR PROPIO -"); +} + +while(!ok){ // Bucle infinito + + switch( Comprueba_Secuencia( 4 ) ) { // Iniciamos comprobacion de 2 sec + + case 0: // No se pulso ningun BOTON + // Pero el raton fue presionado en + // algun sitio... +// Sonido("CD_OUT02.WAV"); + Sonido( Key_Press ); + break; + case -2: // Hay una tecla normal en BUFFER + switch( key = getch() ) { // La utilizamos + // Intro ( ACEPTAR ) +// case 13: +// exe = 1; +// ok = 1; +// break; + // ESC ( CANCELAR ) + case 14: +// Sonido("CD_OUT0F.WAV"); + Sonido( Cancel ); + inst = 0; + ok = 1; + break; + default: + if( ( isprint(key) || isspace(key) ) && CD_in2.Alt_Install.Usar_Install_P == 0 ) { + if(key!=13) ungetch(key); + if ( CD_in2.Alt_Install.Usar_VGA_COPY==0 ) + InputCadenaG_T4(D_Target, 0, 35, 241, 240, 215, 243, 427, 254, 0); + else + InputCadenaG_T4(D_Target, 0, 1, 241, 240, 215, 243, 427, 254, 0); + } + break; + } + break; + case -1: // Hay una tecla especial en BUFFER + getch(); // La eliminamos + break; + // Boton Aceptar + case 1: +// Sonido("CD_OUT0E.WAV"); + Sonido( Ok ); + inst = 1; + ok = 1; + break; + // Boton Cancelar + case 2: +// Sonido("CD_OUT0F.WAV"); + Sonido( Cancel ); + inst = 0; + ok = 1; + break; + default: +// Sonido("CD_OUT01.WAV"); + Sonido( Mouse_Press ); + while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER + break; + } + +} + +putimage(200, 212, C_Texto, COPY_PUT); +putimage(200, 270, C_Aceptar, COPY_PUT); +putimage(360, 270, C_Cancelar, COPY_PUT); + +if ( CD_in2.Alt_Install.Usar_Install_P == 0 && !file_exists(D_Target) ) + if ( make_dir(D_Target)!= 1 ) return; + + + +if ( inst == 1 ) { + + /// Liberamos la memoria asignada para al DRIVER grfico... + current_directory(curdir); + APAGA_PANTALLA(dac); + closegraph(); + Libera_Memoria(); +// Libera_Raton_Animado(); + /* + free(P_Raton1); + free(P_Raton2); + free(P_Raton3); + free(P_Raton4); + free(Pantalla); + */ + farfree(Icono); + fclose(CD_in); + + /* + + C O M I E N Z A L A I N S T A L A C I O N D E L P R O G R A M A + + */ + + cprintf("Ŀ\n\r"); + cprintf(" JD & CD_OUT \n\r"); + cprintf("\n\r"); + cprintf("INSTALANDO PROGRAMA: [%s]\n\r", CD_in2.Nombre); + + strcpy( Buffer, CD_in2.Dir_P ); // Existe el directorio + Buffer[0] = getdisk() + 'A'; // origen... + chdir(Buffer); // Refresamos a nuestro directorio + strcpy( Origen, Buffer ); + strcat( Origen, "\\*.*"); + + if ( CD_in2.Alt_Install.Usar_XCopy == 1 ) { + + if ( ( Ptr = searchpath("xcopy.exe") ) != NULL ) { + strcpy( Buffer, Ptr ); + } else { + strcpy( Buffer, "E:\\cd_out\\compress\\xcopy " ); + Buffer[0] = getdisk() + 'A'; // origen... + } + strcat(D_Target, "\\*.*" ); + if ( spawnl(P_WAIT, Buffer, "VOID", Origen, D_Target, "/s", "/e", "/y", NULL) == -1 ) { + printf("Imposible instalar %s, XCOPY no acepta parametrizaje", Buffer); + getch(); + } + } else + if ( CD_in2.Alt_Install.Usar_Install_P == 1 ) { + strcpy( Origen, Buffer ); + strcat( Origen, "\\"); + strcat( Origen, CD_in2.N_Install); + if ( spawnl(P_WAIT, /*CD_in2.N_Install*/Origen, NULL) == -1 ) { + printf("Imposible ejecutar %s, el archivo no esta disponible", Buffer); + getch(); + } + } else + if ( CD_in2.Alt_Install.Usar_ARJ == 1 ) { + strcpy( Origen, Buffer ); + strcat( Origen, "\\*.arj"); + + if ( ( Ptr = searchpath("ARJ.EXE") ) != NULL ) { + strcpy( Buffer, Ptr ); + } else { + strcpy( Buffer, "E:\\cd_out\\compress\\ARJ" ); + Buffer[0] = getdisk() + 'A'; // origen... + } + + if ( spawnl(P_WAIT, Buffer, "VOID", "x", "-va", /*"*.arj"*/Origen, D_Target, NULL) == -1 ) { + printf("Imposible instalar %s, ARJ no ejecutable.", CD_in2.Nombre); + getch(); + } + } else + if ( CD_in2.Alt_Install.Usar_ZIP == 1 ) { + strcpy( Origen, Buffer ); + strcat( Origen, "\\*.zip"); + + if ( ( Ptr = searchpath("PKUNZIP.EXE") ) != NULL ) { + strcpy( Buffer, Ptr ); + } else { + strcpy( Buffer, "E:\\cd_out\\compress\\PKUNZIP" ); + Buffer[0] = getdisk() + 'A'; // origen... + } + + if ( spawnl(P_WAIT, Buffer, "VOID", "-$", "-d", /*"*.zip"*/Origen, D_Target, NULL) == -1 ) { + printf("Imposible instalar %s, ZIP no ejecutable.", CD_in2.Nombre); + getch(); + } + } + + +// unsigned int Usar_VGA_COPY : 1; + + + + clrscr(); + cprintf("Ŀ\n\r"); + cprintf(" JD & CD_OUT \n\r"); + cprintf("\n\r"); + cprintf("Regresando a CD_OUT...\n\r"); + + //// Recargamos el Programa... + chdir(curdir); // Refresamos a nuestro directorio + // de origen + InicializaSVGA(); // Reinicializamos la SVGA + APAGA_PANTALLA(dac); // Apagamos la Pantalla + Inicializa_Dibujo( (-1), "NADA"); // Inicializamos un nuevo dibujo + +// if( carga_botones("cd_out.img") // Recarga botones del fichero "CD_out.img" + if ( Fichero_cd_img(0) + + != OK ) { +// Imprime_Estaticos( 112, "cd_out.img"); + Fichero_cd_img(112); + Espera_Tecla_o_Raton(); + closegraph(); + cprintf("\n\rError en la CARGA DE BOTONES"); + exit(112); + } + + +// Imprime_Estaticos( 1, "cd_out.img"); // Imprime botones estaticos 'Seccion 1' + Fichero_cd_img(1); + Imprime_Secuencia(1); // Imprime secuencia 1. + +// Imprime_Estaticos( 2, "cd_out.img"); // Imprime botones estaticos 'Seccion 2' + // para los textos + Fichero_cd_img(2); +/**/ PunteroRaton = 100; /**/ +/**/ inicializa_raton_grafico( 0, 0, 618, 460); /**/ +/**/ if ( PunteroRaton != 100 ) { /**/ +/**/ closegraph(); /**/ +/**/ cprintf("Memoria_Insuficiente para el RATON\n\r");/**/ +/**/ exit(1); /**/ +/**/ } /**/ + + Inicializa_Iconos(); + Coloca_Iconos_Dos_Windows(); + Coloca_Iconos(CurrIcon); + + ENCIENDE_PANTALLA(dac); + /* + if ( (Pantalla = malloc( JD_imagesize(0, 0, 21, 21) )) == NULL ) { + Imprime_Estaticos( SIN_CVN, "cd_out.img"); + Espera_Tecla_o_Raton(); + closegraph(); + cprintf("\n\rError en la asignacin de memoria para la mascara del raton"); + exit(2); + } + */ + Imprime_Bordes(1, 1, 251); + settextstyle( SMALL_FONT, HORIZ_DIR, 4); + Inicializa_Apertura(); + + True_Push = ON; // Activa el TRUE PUSH ( PRESION REAL ) + + } + + + +} + + + +int InputCadenaG_T4(char *s, int numalp, int lmax, int cc, int cf, int X0, int Y0, int X1, int Y1, int RoW) +{ + + int ls; // longitud cadena + char *s1; // puntero a cadena inicial + int c, ok; + + s1 = s; // inicio cadena + + setcolor(cf); // pone color a 0 para borrar + setfillstyle(SOLID_FILL, cf); + bar( X0, Y0, X1, Y1 ); + setcolor(cc); // devuelve el color a su estado + + outtextxy( X0, Y0+RoW*12, s ); + + ls = strlen ( s ); // Longitud de actual + + if ( ls < lmax ) { + setcolor(250); + outtextxy( X0+textwidth( s1 ), Y0+RoW*12, ""); + } + + s += ls; // se coloca en el final + + do{ + c = getch(); // obtiene tecla + + ok = ( c == 13 || c == 0); // 13 = INTRO || Especiales + + if ( c == 8 && ls > 0 && !ok ) { // 8 = Back Space + ls--; + s--; + + *s = '\0'; + + setcolor(cf); + setfillstyle(SOLID_FILL, cf); + bar( X0, Y0, X1, Y1 ); + + setcolor(cc); + outtextxy( X0, Y0+RoW*12, s1 ); + setcolor(4); + outtextxy( X0+textwidth( s1 ), Y0+RoW*12, ""); + setcolor(cc); + + } else { + if ( !numalp && c >= 32 && c <= 254 && ls < lmax) { + + *s++ = c; + ls++; + + *s = '\0'; + setcolor(cf); + setfillstyle(SOLID_FILL, cf); + bar( X0, Y0, X1, Y1 ); + + setcolor(cc); + outtextxy( X0, Y0+RoW*12, s1 ); + + if ( ls < lmax ) { + setcolor(4); + outtextxy( X0+textwidth( s1 ), Y0+RoW*12, ""); + setcolor(cc); + } + + + } else { + if ( numalp && isdigit(c) && ls < lmax) { + *s++ = c; + ls++; + + *s = '\0'; // Cero final + setcolor(cf); + setfillstyle(SOLID_FILL, cf); + bar( X0, Y0, X1, Y1 ); + + setcolor(cc); + + outtextxy( X0, Y0+RoW*12, s1 ); + + if ( ls < lmax ) { + setcolor(4); + outtextxy( X0+textwidth( s1 ), Y0+RoW*12, ""); + setcolor(cc); + } + + + } +// + else if( c == 27 ) {*s='\0'; ok = 1; } +// + else BEEP(); + } + } + + }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... + + setcolor(cf); + setfillstyle(SOLID_FILL, cf); + bar( X0, Y0, X1, Y1 ); + + setcolor(cc); + outtextxy( X0, Y0+RoW*12, s1 ); + + return ls; +} + +int file_exists(char *filename) +{ + return (access(filename, 0) == 0); +} + + + + + +int Muestra_Mensaje(int Mensaje, char *file) { + void *Imagen; + + + if ( (Imagen = malloc( JD_imagesize(200, 212, 440, 267) ) ) == NULL ) { + Espera_Tecla_o_Raton(); + Anclar_Raton(); + return -1; + } else { + getimage( 200, 212, 440, 267, Imagen ); +// Imprime_Estaticos( Mensaje, file); + Fichero_cd_img(Mensaje); + Espera_Tecla_o_Raton(); + Anclar_Raton(); + putimage( 200, 212, Imagen, COPY_PUT); + free(Imagen); + return 1; + } +} + + +int make_dir(char *Target){ + + char CurrDriver, Buffer[80], Crear_Dir[14], ok = 0, Contador=0, Sub_Cnt; + CurrDriver = getdisk(); // Obtenemos el directorio origen + + + strcpy( Buffer, Target ); // Realizamos una copia del Destino + strupr( Buffer ); // Lo transformamos a mayusculas + if ( Buffer[strlen(Buffer)] == '\\' ) // Si acaba en '\' ERROR + return 0; + + // para que al restarle 65 = 'A' + setdisk( ( Buffer[0] - 'A' ) ); // nos de el nmero lgico de unidad +if ( getdisk() != ( Buffer[0] - 'A' )) + return 0; // Si no podemos cambiar. Return 0; + +if ( chdir("\\") ) // Nos vamos al raz + return 0; // Si no podemos, ERROR !!! + + + Contador = 3; +do { + +Sub_Cnt = 0; +while( Buffer[Contador] != '\\' && Buffer[Contador] != '\0' ) { + Crear_Dir[Sub_Cnt] = Buffer[Contador]; + Contador++; + Sub_Cnt ++; +} +// Sub_Cnt++; + Contador++; + if ( Buffer[Contador-1] == NULL ) ok = 1; + Crear_Dir[Sub_Cnt] = '\0'; + + if ( !file_exists(Crear_Dir) ) { + if ( mkdir( Crear_Dir ) != 0 ) ok = 2; else + chdir( Crear_Dir ); + } else + chdir( Crear_Dir ); + +}while(!ok); + +if ( ok == 2 ) return 0; + +if ( chdir("\\") ) return 0; + + setdisk(CurrDriver); +if ( getdisk() != CurrDriver) // Volvemos hasta nuestra unidad + return 0; + + + return 1; +} diff --git a/CD_OUT.CPP b/CD_OUT.CPP new file mode 100644 index 0000000..9411e59 --- /dev/null +++ b/CD_OUT.CPP @@ -0,0 +1,412 @@ +///////////////////////////// FICHEROS A INCLUIR ///////////////////////////// +#include +#include +#include +#include +#include +#include +#include + +#include "CD_SND.H" + +//extern unsigned _stklen = 16000U; + +#include "XmsSupp.h" + +#include "cd_icons.h" +#include "cd_error.h" +#include "c:\program\src_dos\libs\make_bot\make_bot.h" +#include "c:\program\src_dos\libs\wavplav\wavplay.h" + + extern int /*far _cdecl*/ Fichero_cd_img(char Dinamicos_Estaticos); + +extern int far _Cdecl Svga256_fdriver[]; + +int huge DetectVGA256(){ return 2; } + +int Load_Snd(void); + +extern void Menu_de_Edicion(void); +extern void Inicializa_Iconos(void); +extern Abre_Ficha_CD_CFG(int R_W); +extern void Coloca_Iconos(int Start_Icon); +extern void Coloca_Iconos_Dos_Windows(void); +extern void Inicializa_Dibujo(int L_Imagen, char *N_Imagen2); + +extern char far *Icono; + +void InicializaSVGA(void); +extern char dac[256*3]; +extern "C" void APAGA_PANTALLA(char *); +extern "C" void ENCIENDE_PANTALLA(char *); +extern char far *dir_vga; +extern "C" void CHANGE_BANK(int); + +char _XMS = 1; + + +// int Raton_o_Tecla(void); +void Sonido( char Sonido ); + +typedef struct { + + unsigned int Exit_after_EXE : 1; + unsigned int With_Out_Sound : 1; + unsigned int Auto_Install : 1; + unsigned int Check_Free_Size : 1; + unsigned int Format_Always : 1; + unsigned int Without_Backgr : 1; + unsigned int Futura_Ampliac : 4; + +} Cd_CFG; + +extern Cd_CFG CD_CFG1; +char _VerImagen = 1; + +XmsSupp Xms_Image_Bank1, + Xms_Image_Bank2, + Xms_Image_Bank3, + Xms_Image_Bank4, + Xms_Image_Bank5; + +typedef struct + { + char Nombre_del_Programa[70]; + char Comentario_Inicial[70]; + + char VerHi, VerLow; + char Register; + + long Records; +} CABECERA; + +typedef struct + { + char Wave_Name[13]; // Nombre del Wave + char ID_code; // Codigo ID_ del Wave + unsigned long Pos; // Posicin de comienzo dentro del archivo destino + unsigned long Len; // Longitud + } CD_SND; + + CD_SND CD_Snd[19]; + +int main(int argc, char *argv[]){ + + +// /**/ if( Fichero_cd_img(0) /**/ +// /**/ == SIN_MEMORIA ) { // "botones.p1" /**/ +// /**/ closegraph(); /**/ +// /**/ cprintf("\n\rError en la CARGA DE BOTONES"); /**/ +// /**/ exit(112); /**/ +// /**/ } /**/ +// despliega_datos(); +// getch(); +// return 21; + +int L_Imagen = -1; +char *N_Imagen2; + +// +// Carga de los argumentos +//// +/**/ /**/ +/**/ for(int i=1; i<=argc; i++) /**/ +/**/ { /**/ +/**/ if( strcmp( argv[i], "-0") == 0 ) L_Imagen=0; else /**/ +/**/ if( strcmp( argv[i], "-1") == 0 ) L_Imagen=1; else /**/ +/**/ if( strcmp( argv[i], "-2") == 0 ) L_Imagen=2; else /**/ +/**/ if( strcmp( argv[i], "-3") == 0 ) L_Imagen=3; else /**/ +/**/ if( strcmp( argv[i], "-4") == 0 ) L_Imagen=4; else /**/ +/**/ if( strcmp( argv[i], "-5") == 0 ) L_Imagen=5; else /**/ +/**/ if( strcmp( argv[i], "-6") == 0 ) L_Imagen=6; else /**/ +/**/ if( strcmp( argv[i], "-7") == 0 ) L_Imagen=7; else /**/ +/**/ if( strcmp( argv[i], "-8") == 0 ) L_Imagen=8; else /**/ +/**/ if( strcmp( argv[i], "-9") == 0 ) L_Imagen=9; else /**/ +/**/ if( strncmpi( argv[i], "-N:", 3) == 0 ) { L_Imagen=-2; /**/ +/**/ N_Imagen2 = argv[i]; /**/ +/**/ N_Imagen2 += 3; /**/ +/**/ } else /**/ +/**/ if( strcmp( argv[i], "-NO_XMS") == 0 ) _VerImagen = 0; /**/ +/**/ if( strcmp( argv[i], "-NO_SND") == 0 ) CD_CFG1.With_Out_Sound=1;/**/ +/**/ } /**/ +/**/ /**/ +//// + +// +// Carga la Configuracin +//// +/**/ /**/ +/**/ clrscr(); /**/ +/**/ cprintf("JD & CD_OUT\r\n\r\n"); /**/ +/**/ cprintf("Cargando fichero de Configuracin. "); /**/ +/**/ Abre_Ficha_CD_CFG(0); /**/ +/**/ cprintf(" --> Ok!\n\r"); /**/ +/**/ /**/ +//// + +// +// Inicializacin Sonidos +//// +/**/ if ( !CD_CFG1.With_Out_Sound ) /**/ +/**/ { /**/ +/**/cprintf("Inicializando sonidos. "); /**/ +/**/ switch ( InitSB() ) { /**/ +/**/ case 0: /**/ +/**/ cprintf(" --> Speaker Ok!\n\r"); /**/ +/**/ break; /**/ +/**/ case 1: /**/ +/**/ cprintf(" --> Sound Blaster Ok!\n\r"); /**/ +/**/ break; /**/ +/**/ case 2: /**/ +/**/ cprintf(" --> Dac Casero Ok!\n\r"); /**/ +/**/ break; /**/ +/**/ } /**/ +/**/ } else cprintf(" --> Sin Sonidos Ok!\n\r"); /**/ +/**/ /**/ +/**/cprintf("Cargando estructura de sonidos. "); /**/ +/**/if( !Load_Snd() ) /**/ +/**/{ /**/ +/**/ CD_CFG1.With_Out_Sound = 0; /**/ +/**/ cprintf(" --> ERROR EN LA CARGA DE SONIDOS!\n\r"); /**/ +/**/} else { /**/ +/**/ cprintf(" --> Ok!\n\r"); /**/ +/**/} /**/ +/**/ /**/ +/**/ /**/ +/**/ /**/ +//// + +// +// Inicializacin de la XMS +//// +/**/ /**/ +/**/ cprintf("Inicializando XMS... \n\r"); /**/ +/**/ /**/ +/**/ // Errores en Inicializacion XMS. /**/ +/**/ /**/ +/**/ Xms_Image_Bank1.lError=0; /**/ +/**/ Xms_Image_Bank2.lError=0; /**/ +/**/ Xms_Image_Bank3.lError=0; /**/ +/**/ Xms_Image_Bank4.lError=0; /**/ +/**/ Xms_Image_Bank5.lError=0; /**/ +/**/ /**/ +/**/ InitXms(&Xms_Image_Bank1); /**/ +/**/ InitXms(&Xms_Image_Bank2); /**/ +/**/ InitXms(&Xms_Image_Bank3); /**/ +/**/ InitXms(&Xms_Image_Bank4); /**/ +/**/ InitXms(&Xms_Image_Bank5); /**/ +/**/ /**/ +/**/ GetInfo(&Xms_Image_Bank1); // Informe de estado. /**/ +/**/ if(Xms_Image_Bank1.lError || Xms_Image_Bank2.lError || /**/ +/**/ Xms_Image_Bank3.lError || Xms_Image_Bank4.lError || /**/ +/**/ Xms_Image_Bank5.lError )/**/ +/**/ /**/ +/**/ { /**/ +/**/ printf("Bank1 %s\n",Xms_Image_Bank1.cError); /**/ +/**/ printf("Bank2 %s\n",Xms_Image_Bank2.cError); /**/ +/**/ printf("Bank3 %s\n",Xms_Image_Bank3.cError); /**/ +/**/ printf("Bank4 %s\n",Xms_Image_Bank4.cError); /**/ +/**/ printf("Bank5 %s\n",Xms_Image_Bank5.cError); /**/ +/**/ _XMS = 0; /**/ +/**/ } /**/ +/**/ // Reservamos 64K * 5 bancos. Si hay Error lo Visualizamos. /**/ +/**/ AllocXms( 64, &Xms_Image_Bank1); /**/ +/**/ AllocXms( 64, &Xms_Image_Bank2); /**/ +/**/ AllocXms( 64, &Xms_Image_Bank3); /**/ +/**/ AllocXms( 64, &Xms_Image_Bank4); /**/ +/**/ AllocXms( 64, &Xms_Image_Bank5); /**/ +/**/ if(Xms_Image_Bank1.lError || Xms_Image_Bank2.lError || /**/ +/**/ Xms_Image_Bank3.lError || Xms_Image_Bank4.lError || /**/ +/**/ Xms_Image_Bank5.lError )/**/ +/**/ /**/ +/**/ { /**/ +/**/ printf("Bank1 %s\n",Xms_Image_Bank1.cError); /**/ +/**/ printf("Bank2 %s\n",Xms_Image_Bank2.cError); /**/ +/**/ printf("Bank3 %s\n",Xms_Image_Bank3.cError); /**/ +/**/ printf("Bank4 %s\n",Xms_Image_Bank4.cError); /**/ +/**/ printf("Bank5 %s\n",Xms_Image_Bank5.cError); /**/ +/**/ _XMS = 0; /**/ +/**/ /**/ +/**/ } /**/ +//// + +// +// Inicializacin Pantalla +//// +/**/ /**/ +/**/ InicializaSVGA(); /**/ +///**/ APAGA_PANTALLA(dac); /**/ +/**/ memset( dac, 0, 256*3 ); /**/ +unsigned Segt = FP_SEG(dac), Off = FP_OFF(dac); +/**/ asm mov ax, 0x1012 ; /**/ +/**/ asm mov bx, 0 ; /**/ +/**/ asm mov cx, 256 ; /**/ +/**/ asm mov es, Segt ; /**/ +/**/ asm mov dx, Off ; /**/ +/**/ asm int 0x10 ; /**/ +/**/ /**/ +/**/ if( CD_CFG1.Without_Backgr != 1 ) /**/ +/**/ Inicializa_Dibujo( L_Imagen, N_Imagen2 ); /**/ +/**/ /**/ +/**///if( carga_botones("cd_out.img") // Carga botones del fichero/**/ +/**/ if( Fichero_cd_img(0) /**/ +/**/ != 1 ) { // "botones.p1" /**/ +/**/ closegraph(); /**/ +/**/ cprintf("\n\rError en la CARGA DE BOTONES"); /**/ +/**/ exit(112); /**/ +/**/ } /**/ +/**/ /**/ +/**///Imprime_Estaticos( 1, "cd_out.img"); // Imprime botones estaticos/**/ +/**/ Fichero_cd_img(1); /**/ +/**/ // 'Seccion 1' /**/ +/**/ Imprime_Secuencia(1); // Imprime secuencia 1. /**/ +/**/ /**/ +/**///Imprime_Estaticos( 2, "cd_out.img"); // Imprime botones estaticos/**/ +/**/ Fichero_cd_img(2); /**/ +/**/ // 'Seccion 2' para los textos*/ +/**/ PunteroRaton = 100; /**/ +/**/ inicializa_raton_grafico( 0, 0, 618, 460); /**/ +/**/ if ( PunteroRaton != 100 ) { /**/ +/**/ closegraph(); /**/ +/**/ cprintf("Memoria_Insuficiente para el RATON\n\r");/**/ +/**/ exit(1); /**/ +/**/ } /**/ +/**/ /**/ +/**/ Inicializa_Iconos(); /**/ +/**/ Coloca_Iconos_Dos_Windows(); /**/ +/**/ Coloca_Iconos(1); /**/ +/**/ /**/ +/**/ ENCIENDE_PANTALLA(dac); /**/ +/**/ /**/ +/**/ True_Push = ON; // Activa el TRUE PUSH ( PRESION REAL )/**/ +/**/ /**/ +//// + + +// Sonido("CD_OUT00.WAV"); + Sonido( Start_Program ); + + Menu_de_Edicion(); + +// +// Liberacion miscelanea +//߱// +/**/ Libera_Raton_Animado(); /**/ +/**/ /**/ +/**/ APAGA_PANTALLA(dac); /**/ +/**/ closegraph(); /**/ +/**/ farfree(Icono); /**/ +/**/ /**/ +/**/// Sonido("CD_OUTFF.WAV"); /**/ +/**/ Sonido( End_Program ); /**/ +/**/ DeInitSB(); /**/ +//ܱ// +// +// Liberacion de la XMS +//߱// +/**/ // Liberamos XMS si hay ERROR lo Visualizamos. /**/ +/**/ FreeXms(&Xms_Image_Bank1); /**/ +/**/ FreeXms(&Xms_Image_Bank2); /**/ +/**/ FreeXms(&Xms_Image_Bank3); /**/ +/**/ FreeXms(&Xms_Image_Bank4); /**/ +/**/ FreeXms(&Xms_Image_Bank5); /**/ +/**/ if(Xms_Image_Bank1.lError || Xms_Image_Bank2.lError || + Xms_Image_Bank3.lError || Xms_Image_Bank4.lError || + Xms_Image_Bank5.lError )/**/ +/**/ /**/ +/**/ { /**/ +/**/ printf("Bank1 %s\n",Xms_Image_Bank1.cError); /**/ +/**/ printf("Bank2 %s\n",Xms_Image_Bank2.cError); /**/ +/**/ printf("Bank3 %s\n",Xms_Image_Bank3.cError); /**/ +/**/ printf("Bank4 %s\n",Xms_Image_Bank4.cError); /**/ +/**/ printf("Bank5 %s\n",Xms_Image_Bank5.cError); /**/ +/**/ _XMS = 0; /**/ +/**/ } /**/ +/**/ /**/ +//ܱ// + + cprintf("Programa registrado a: [ SEGUEL ], n reg. 034-002\n\r"); + cprintf("\n\r"); + cprintf("Gracias por utilizar mi Software\n\r"); + cprintf(" Jos David Guilln\n\r"); + cprintf(" (versin gratuita en: http:\\\\www.arrakis.es\\~infomundo\\JD\n\r"); + cprintf("\n\r"); + cprintf(" El autor de este programa no se hace responsable de la utilizacin\n\r"); + cprintf(" del mismo, para la catalogacin de CD's con contenido pirata. !!!\n\r"); + cprintf("\n\r"); + + return 0; +} + + +void InicializaSVGA(void) { + + int Gd = DETECT, Gm; + int Drv, errorcode; + + installuserdriver("Svga256",DetectVGA256); +/* If driver is linked with file, remove comments */ + registerfarbgidriver(Svga256_fdriver); + + errorcode = registerfarbgifont(small_font_far); + +/* report any registration errors */ +if (errorcode < 0) +{ + printf("Graphics error: %s\n", grapherrormsg(errorcode)); + printf("Press any key to halt:"); + getch(); + exit(1); /* terminate with an error code */ +} + + + initgraph(&Gd,&Gm,""); + + /* read result of initialization */ + errorcode = graphresult(); + +if (errorcode != grOk) /* an error occurred */ +{ + printf("Graphics error: %s\n", grapherrormsg(errorcode)); + printf("Presione una tecla para finalizar:"); + getch(); + exit(1); /* return with error code */ +} + + + +} + + +void Sonido(char Sonido){ + + +if ( !CD_CFG1.With_Out_Sound && Sonido != -1 && Sonido < 19 ) +{ + while( kbhit() ) getch(); + + if ( PlayWav((char far *)"CD_OUT.SND", CD_Snd[Sonido].Pos, CD_Snd[Sonido].Len ) == -1 ) + PlayLongWav((char far *)"CD_OUT.SND", CD_Snd[Sonido].Pos, CD_Snd[Sonido].Len ); + + while( kbhit() ) getch(); +} +} + + +int Load_Snd(void) +{ + CABECERA Cabecera; + FILE *DESTINO; + + if ( ( DESTINO = fopen( "CD_OUT.SND", "rb") ) == NULL ) + { + return 0; + } + + fread( &Cabecera, sizeof( Cabecera ), 1, DESTINO ); + + fread( CD_Snd, sizeof( CD_SND ), 19, DESTINO ); + + fclose(DESTINO); + return 1; +} diff --git a/CD_OUT.DSK b/CD_OUT.DSK new file mode 100644 index 0000000000000000000000000000000000000000..b0e6925efe8873ff3edc8de371ff118464c83d8e GIT binary patch literal 3496 zcmeHJOHUI~6#niMYblJPAvThj3~G#Nv}p|?#H7*bv?Z0cGj>|QWK0EZ2%;355)otE zuyRFW;?^JG#=S1}N4WA2XjC?O?wuJZbfyp3xL|H>rag1+d3@(}%j=EBx}qsseYIKJ zXe!y|CpBdZOgD&Ls8; z@34$Gtys*`(p9}uwhHP@rkc{rF+Ft$tjhxERIV@`(+mSLBE){m_XuEU^NC5#VIK5l zXSIqbu1qal3O zvbN6>6p|33?Y#tZCY^Kb2>I}}h|Xzx(G-?=i)094g-qt#j+tPVut`>|d03JsTArBA zijgVJPOCB1EOa!3>jfq!;`0+z@qW1Dy>ho?%@7n)N9pUc>=bh&>Bq&RxEDzmZ-%=h zm2dB5%ihKN0$!7lr)?1W;Qic_nITK`?Ei&#O_ZgCAjLH*(q#jAoFwWLQ3f%BbGU@d zxQ=wSywF&xHK8|_mujnMEHvw@FxIKnH0mYs$EGEd3HyhVOezVyz$hdPAWZTod&IHv zWE`8gP1F!>5Iu-tTyykCMP8+ES}9eVsTfwak|~xmrqhMSt*GcfQBmwa*hr8X+j$ZJ zWAyEn2N&J9gwF}_g(ocRFWY1M9m1`zi~LN>7tXOpossIsS8r?E@J<>|b(3vDSoI3q z%+~E{pv3B=f%>dd;3JePC)yH@AxyM0WcrHZ_MTwd1%RM4O8Rt3Em$eNlvj&s?Er|D zsNkM!^6^nr^;OV9lV@CdaB5%6>sEpf519ddv;;qA_C?4nY1OoD+5^pd*Mif&ypY50fRX?f5xHfDrgg5AY8{ CQJJ>@ literal 0 HcmV?d00001 diff --git a/CD_OUT.IMG b/CD_OUT.IMG new file mode 100644 index 0000000..548deda --- /dev/null +++ b/CD_OUT.IMG @@ -0,0 +1,375 @@ +#3 + +***** Botones para elegir el tipo de ITEM a mirar... + +!1, 24 +***** Botones para seleccionar DOS / WINDOWS +$ 508, 8, 562, 62, 253, 255, 254, 3, 1, 00, 32 +$ 573, 8, 627, 62, 253, 255, 254, 3, 1, 00, 17 + +**** Boton donde se muestran los iconos disponibles +$ 573, 73, 627, 127, 253, 255, 254, 3, 1, 00, 120 + +**** Retroceder, Avanzar, en los anteriores iconos +$ 508, 73, 562, 99, 253, 255, 254, 2, 1, 00, 75 +$ 508, 103, 562, 127, 253, 255, 254, 2, 1, 00, 77 + + +***** Cuadro para la visualizacin de programas... +1 +* LEFT UP RIGHT DOWN +& 6, 225, 205, 470, 0, 56, 63, -1, 2 +& 9, 228, 202, 467, 0, 63, 56, -1, 2 + +***** Casillas individuales +**** Retrocedo Izq. 4 1 +$ 13, 235, 198, 255, 253, 255, 254, 2, 1, 00, 104 +$ 13, 258, 198, 278, 253, 255, 254, 2, 1, 00, 105 +$ 13, 281, 198, 301, 253, 255, 254, 2, 1, 00, 106 +$ 13, 304, 198, 324, 253, 255, 254, 2, 1, 00, 107 +$ 13, 327, 198, 347, 253, 255, 254, 2, 1, 00, 108 +$ 13, 350, 198, 370, 253, 255, 254, 2, 1, 00, 109 +$ 13, 373, 198, 393, 253, 255, 254, 2, 1, 00, 110 +$ 13, 396, 198, 416, 253, 255, 254, 2, 1, 00, 111 +$ 13, 419, 198, 439, 253, 255, 254, 2, 1, 00, 112 +$ 13, 442, 198, 462, 253, 255, 254, 2, 1, 00, 113 + + + +* BLANCO 255 +* Gris_C 253 +* Gris_F 254 +* NEGRO 240 + + +1 +***** Cuadro para el comentario... +& 390, 135, 630, 415, 0, 56, 63, -1, 2 +& 393, 138, 627, 412, 240, 63, 56, 1, 2 + +$ 390, 420, 505, 446, 253, 255, 254, 2, 2, 00, 23 +$ 510, 420, 630, 446, 253, 255, 254, 2, 2, 00, 46 + +$ 390, 449, 505, 475, 253, 255, 254, 2, 2, 00, 18 +$ 510, 449, 630, 475, 253, 255, 254, 2, 2, 00, 31 + + +************** BOTONES UP / DOWN -> Para programas +$ 210, 370, 235, 420, 253, 255, 254, 2, 1, 00, 72 +$ 210, 425, 235, 470, 253, 255, 254, 2, 1, 00, 80 + +************** BOTONES UP / DOWN -> Para comentario +$ 360, 310, 385, 360, 253, 255, 254, 2, 1, 00, 73 +$ 360, 365, 385, 415, 253, 255, 254, 2, 1, 00, 81 + + +$ 360, 210, 385, 305, 253, 255, 254, 2, 1, 00, 47 + +2 +| 390, 426, 2, 6, 0, 255, _, +| 389, 425, 2, 6, 0, 0, _, +| 391, 424, 2, 6, 0, 255, Instalar, +| 390, 423, 2, 6, 0, 0, Instalar, + +| 516, 426, 2, 6, 0, 255, _, +| 515, 425, 2, 6, 0, 0, _, +| 516, 424, 2, 6, 0, 255, Configurar, +| 515, 423, 2, 6, 0, 0, Configurar, + +| 391, 453, 2, 6, 0, 255, _, +| 390, 452, 2, 6, 0, 0, _, +| 391, 451, 2, 6, 0, 255, Ejecutar, +| 390, 450, 2, 6, 0, 0, Ejecutar, + +| 511, 453, 2, 6, 0, 255, _, +| 511, 452, 2, 6, 0, 0, _, +| 511, 451, 2, 6, 0, 255, Salir, +| 510, 450, 2, 6, 0, 0, Salir, + +| 364, 289, 2, 6, 1, 255, _, +| 363, 288, 2, 6, 1, 0, _, +| 364, 219, 2, 5, 1, 255, Ver Imagen, +| 363, 218, 2, 5, 1, 0, Ver Imagen, + +* Estaticos 4 + +***************************************************************************** +* * +* Botones Para el Men de Configuracin. * +* * +***************************************************************************** +4 +| 413, 149, 2, 5, 0, 251, _, +| 412, 148, 2, 5, 0, 254, _, +| 414, 148, 2, 5, 0, 255, Salir despues de EJECUTAR., +| 413, 147, 2, 5, 0, 254, Salir despues de EJECUTAR., + +| 413, 170, 2, 5, 0, 251, _, +| 412, 169, 2, 5, 0, 254, _, +| 414, 169, 2, 5, 0, 255, Desactivar Sonidos., +| 413, 168, 2, 5, 0, 254, Desactivar Sonidos., + +| 413, 191, 2, 5, 0, 251, _, +| 412, 190, 2, 5, 0, 254, _, +| 414, 190, 2, 5, 0, 255, Instalacion Automtica, +| 413, 189, 2, 5, 0, 254, Instalacion Automtica, + +| 413, 212, 2, 5, 0, 251, _, +| 412, 211, 2, 5, 0, 254, _, +| 414, 211, 2, 5, 0, 255, Comprobar espacio libre, +| 413, 210, 2, 5, 0, 254, Comprobar espacio libre, + +| 413, 230, 2, 5, 0, 251, _, +| 412, 229, 2, 5, 0, 254, _, +| 414, 229, 2, 5, 0, 255, Formatear al Instalar, +| 413, 228, 2, 5, 0, 254, Formatear al Instalar, + +| 414, 242, 2, 4, 0, 255, ( solo en unidades A: y B: ), +| 413, 241, 2, 4, 0, 254, ( solo en unidades A: y B: ), + +| 413, 254, 2, 5, 0, 251, _, +| 412, 253, 2, 5, 0, 254, _, +| 414, 253, 2, 5, 0, 255, Sin imagen de Fondo, +| 413, 252, 2, 5, 0, 254, Sin imagen de Fondo, + +5 +* Textos +| 547, 392, 2, 5, 0, 251, _, +| 547, 391, 2, 5, 0, 0, _, +| 547, 391, 2, 5, 0, 255, Cancelar, +| 546, 390, 2, 5, 0, 0, Cancelar, + +| 471, 392, 2, 5, 0, 251, _, +| 470, 391, 2, 5, 0, 0, _, +| 471, 391, 2, 5, 0, 255, Salvar, +| 470, 390, 2, 5, 0, 0, Salvar, + +| 396, 392, 2, 5, 0, 251, _, +| 395, 391, 2, 5, 0, 0, _, +| 396, 391, 2, 5, 0, 255, Anterior, +| 395, 390, 2, 5, 0, 0, Anterior, + + +| 394, 278, 2, 5, 0, 251, _, +| 393, 277, 2, 5, 0, 0, _, +| 396, 277, 2, 5, 0, 255, Imprimir icono actual sin, +| 395, 276, 2, 5, 0, 0, Imprimir icono actual sin, + +| 396, 291, 2, 5, 0, 255, incluir los comentarios., +| 395, 290, 2, 5, 0, 0, incluir los comentarios., + +*| 394, 315, 2, 5, 0, 251, _, +*| 393, 314, 2, 5, 0, 0, _, +*| 396, 314, 2, 5, 0, 255, Imprimir icono actual con, +*| 395, 313, 2, 5, 0, 0, Imprimir icono actual con, + +*| 396, 328, 2, 5, 0, 255, los comentarios y atributos., +*| 395, 327, 2, 5, 0, 0, los comentarios y atributos., + + +* 2 Secuencia de Dinamicos +!2, 10 +* B. Cancelar +$ 547, 390, 623, 410, 253, 255, 254, 2, 2, 00, 46 +* B. Salvar +$ 471, 390, 545, 410, 253, 255, 254, 2, 2, 00, 31 +* B. Retroceder +$ 396, 390, 469, 410, 253, 255, 254, 2, 2, 00, 30 + + +***** Check 1 -- Salir Despues de Ejecutar +$ 396, 149, 411, 165, 253, 255, 254, 1, 2, 00, 32 + +***** Check 2 -- Desactivar Sonidos +$ 396, 170, 411, 186, 253, 255, 254, 1, 2, 00, 18 + +**** Check 3 -- Auto-Install +$ 396, 191, 411, 207, 253, 255, 254, 1, 2, 00, 23 + +***** Check 4 -- Comprobar espacio disponible... +$ 396, 212, 411, 228, 253, 255, 254, 1, 2, 00, 24 + +***** Check 5 -- Format Siempre ( solo A: y B: ) +$ 396, 233, 411, 249, 253, 255, 254, 1, 2, 00, 33 + +***** Check 6 -- Sin imagen de fondo +$ 396, 254, 411, 270, 253, 255, 254, 1, 2, 00, 49 + +***** Imprimir item actual sin comentario [ MIRAR LETRA ] +$ 396, 275, 623, 310, 253, 255, 254, 3, 2, 00, 50 +***** Imprimir item actual con comentario [ MIRAR LETRA ] +*$ 396, 312, 623, 346, 253, 255, 254, 3, 2, 00, 46 +*& 396, 348, 623, 385, 253, 255, 254, 3, 2, 00, 46 + +***************************************************************************** +* * +* Botones Para el Men de Ejecutar. * +* * +***************************************************************************** + + +10 +& 118, 160, 521, 335, 253, 255, 254, 2, 2 + +!3,2 +$ 123, 165, 516, 185, 240, 255, 254, 2, 1, 00, 18 +$ 500, 190, 516, 330, 253, 255, 254, 2, 1, 00, 46 + +11 + +| 504, 190, 2, 4, 1, 255, _ , +| 503, 191, 2, 4, 1, 240, _ , +| 501, 190, 2, 4, 1, 255, <- CANCELAR -> , +| 502, 191, 2, 4, 1, 240, <- CANCELAR -> , + + +| 123, 165, 2, 6, 0, 252, Ejecutar desde el CDROM, + +| 123, 190, 2, 4, 0, 240, NOTA IMPORTANTE:, + +| 123, 200, 2, 4, 0, 240, Hay cuatro circunstancias por las que los programas incluidos, +| 123, 210, 2, 4, 0, 240, en este CDROM podran NO FUNCIONAR si se ejcutan directamente, +| 123, 220, 2, 4, 0, 240, usando la opcin EJECUTAR:, +| 121, 220, 2, 4, 0, 251, EJECUTAR, +| 123, 230, 2, 4, 0, 240, Programas con requerimientos de memoria superior al espacio, +| 123, 240, 2, 4, 0, 240, libre dejado por los drivers de acceso al CDROM., +| 123, 250, 2, 4, 0, 240, Programas que nesecitan escribir algn tipo de configuracin, +| 123, 260, 2, 4, 0, 240, u otros datos en el propio disco., +| 123, 270, 2, 4, 0, 240, Programas con animaciones o accesos muy rpidos a disco duro, +| 123, 280, 2, 4, 0, 240, Programas cuyos nombres incluyan carcteres no aceptados por, +| 123, 290, 2, 4, 0, 240, el estandar ISO., +| 123, 300, 2, 4, 0, 240, Si por cualquiera de las causas anteriores no funcionase el, +| 123, 310, 2, 4, 0, 240, programa elegido: recomendamos proceda a su INSTALACION a HD., +| 120, 310, 2, 4, 0, 251, INSTALACION, +| 123, 320, 2, 4, 0, 240, usando la opcin correspondiente., + + +************************************************************************ +* * +* Pantalla para la instalacin y elegir el tipo de instalacin... * +************************************************************************ +20 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, Iniciar instalacin en:, +& 210, 240, 430, 257, 240, 255, 254, 2, 1 +** 35 digitos... +*| 210, 245, 2, 4, 0, 241, 123456789-123456789-123456789-123456789-, +*| 210, 243, 2, 4, 0, 241, MMMMMMMMM-MMMMMMMMM-MMMMMMMMM-MMMMM, + +* Boton Aceptar +& 200, 270, 280, 295, 251, 255, 254, 2, 1 +* Boton Cancelar +& 360, 270, 440, 295, 251, 255, 254, 2, 1 + +21 +| 200, 274, 2, 5, 0, 255, Aceptar, +| 201, 275, 2, 5, 0, 240, Aceptar, + + +| 340, 274, 2, 5, 0, 255, Cancelar, +| 341, 275, 2, 5, 0, 240, Cancelar, + + +!4,2 +* Boton Aceptar +$ 204, 274, 276, 291, 253, 254, 255, 2, 1, 00, 30 +* Boton Cancelar +$ 364, 274, 436, 291, 253, 254, 255, 2, 1, 00, 46 + +************************************************************************ +* * +* MENSAJES DE ERROR <------>---------<----------->--------<------>- * +* -------<-------->_------<-------->-->----------<--------->_----<- * +* 5"$%!"$%" %"$ &/(I/)(=P)^PO__:;JLKO) (/)%&/($&/($&()(/=)&( * +************************************************************************ +100 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, Error en asignacin, +| 210, 242, 2, 5, 0, 240, de memoria CONVENCIONAL, +101 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, Error en asignacin, +| 210, 242, 2, 5, 0, 240, de memoria XMS, +102 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, Error cargando ICONOS, +| 210, 242, 2, 5, 0, 240, y punteros de RATON..., +103 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, Error cargando PCX, +| 210, 242, 2, 5, 0, 240, de Fondo., +104 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, Error cargando ficheros, +| 210, 242, 2, 5, 0, 240, de sonido WAV, +105 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, Error intentando ejecutar, +| 210, 242, 2, 5, 0, 240, el programa deseado..., +106 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, Error intentando ejecutar, +| 210, 242, 2, 5, 0, 240, el programa deseado..., +107 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, ERROR D E TIPO, +| 210, 242, 2, 5, 0, 240, D E S C O N O C I D O, + +108 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, ERROR ABRIENDO, +| 210, 242, 2, 5, 0, 240, FICHERO, +109 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, ERROR de ESCRITURA, +| 210, 242, 2, 5, 0, 240, DISCO PROTEGIDO., +110 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, ERROR de LECTURA, +| 210, 242, 2, 5, 0, 240, POSIBLE DAO FSICO, +111 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, ERROR INTENTANDO, +| 210, 242, 2, 5, 0, 240, CERRAR FICHERO, +112 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, ERROR INTENTANDO, +| 210, 242, 2, 5, 0, 240, CARGAR BOTONES, +113 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, EL FICHERO O DIRECTORIO A, +| 210, 242, 2, 5, 0, 240, INSTALAR NO SE HA ENCONTRADO, +114 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, EL FICHERO O DIRECTORIO A, +| 210, 242, 2, 5, 0, 240, EJECUTAR NO SE HA ENCONTRADO, +115 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, LA IMPRESORA NO ESTA LISTA, +| 210, 242, 2, 5, 0, 240, < << OPERACION CANCELA >> >, +116 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, IMPRIMIENDO..., +| 210, 242, 2, 5, 0, 240, -JD-, + + + + diff --git a/CD_OUT.JD b/CD_OUT.JD new file mode 100644 index 0000000..548deda --- /dev/null +++ b/CD_OUT.JD @@ -0,0 +1,375 @@ +#3 + +***** Botones para elegir el tipo de ITEM a mirar... + +!1, 24 +***** Botones para seleccionar DOS / WINDOWS +$ 508, 8, 562, 62, 253, 255, 254, 3, 1, 00, 32 +$ 573, 8, 627, 62, 253, 255, 254, 3, 1, 00, 17 + +**** Boton donde se muestran los iconos disponibles +$ 573, 73, 627, 127, 253, 255, 254, 3, 1, 00, 120 + +**** Retroceder, Avanzar, en los anteriores iconos +$ 508, 73, 562, 99, 253, 255, 254, 2, 1, 00, 75 +$ 508, 103, 562, 127, 253, 255, 254, 2, 1, 00, 77 + + +***** Cuadro para la visualizacin de programas... +1 +* LEFT UP RIGHT DOWN +& 6, 225, 205, 470, 0, 56, 63, -1, 2 +& 9, 228, 202, 467, 0, 63, 56, -1, 2 + +***** Casillas individuales +**** Retrocedo Izq. 4 1 +$ 13, 235, 198, 255, 253, 255, 254, 2, 1, 00, 104 +$ 13, 258, 198, 278, 253, 255, 254, 2, 1, 00, 105 +$ 13, 281, 198, 301, 253, 255, 254, 2, 1, 00, 106 +$ 13, 304, 198, 324, 253, 255, 254, 2, 1, 00, 107 +$ 13, 327, 198, 347, 253, 255, 254, 2, 1, 00, 108 +$ 13, 350, 198, 370, 253, 255, 254, 2, 1, 00, 109 +$ 13, 373, 198, 393, 253, 255, 254, 2, 1, 00, 110 +$ 13, 396, 198, 416, 253, 255, 254, 2, 1, 00, 111 +$ 13, 419, 198, 439, 253, 255, 254, 2, 1, 00, 112 +$ 13, 442, 198, 462, 253, 255, 254, 2, 1, 00, 113 + + + +* BLANCO 255 +* Gris_C 253 +* Gris_F 254 +* NEGRO 240 + + +1 +***** Cuadro para el comentario... +& 390, 135, 630, 415, 0, 56, 63, -1, 2 +& 393, 138, 627, 412, 240, 63, 56, 1, 2 + +$ 390, 420, 505, 446, 253, 255, 254, 2, 2, 00, 23 +$ 510, 420, 630, 446, 253, 255, 254, 2, 2, 00, 46 + +$ 390, 449, 505, 475, 253, 255, 254, 2, 2, 00, 18 +$ 510, 449, 630, 475, 253, 255, 254, 2, 2, 00, 31 + + +************** BOTONES UP / DOWN -> Para programas +$ 210, 370, 235, 420, 253, 255, 254, 2, 1, 00, 72 +$ 210, 425, 235, 470, 253, 255, 254, 2, 1, 00, 80 + +************** BOTONES UP / DOWN -> Para comentario +$ 360, 310, 385, 360, 253, 255, 254, 2, 1, 00, 73 +$ 360, 365, 385, 415, 253, 255, 254, 2, 1, 00, 81 + + +$ 360, 210, 385, 305, 253, 255, 254, 2, 1, 00, 47 + +2 +| 390, 426, 2, 6, 0, 255, _, +| 389, 425, 2, 6, 0, 0, _, +| 391, 424, 2, 6, 0, 255, Instalar, +| 390, 423, 2, 6, 0, 0, Instalar, + +| 516, 426, 2, 6, 0, 255, _, +| 515, 425, 2, 6, 0, 0, _, +| 516, 424, 2, 6, 0, 255, Configurar, +| 515, 423, 2, 6, 0, 0, Configurar, + +| 391, 453, 2, 6, 0, 255, _, +| 390, 452, 2, 6, 0, 0, _, +| 391, 451, 2, 6, 0, 255, Ejecutar, +| 390, 450, 2, 6, 0, 0, Ejecutar, + +| 511, 453, 2, 6, 0, 255, _, +| 511, 452, 2, 6, 0, 0, _, +| 511, 451, 2, 6, 0, 255, Salir, +| 510, 450, 2, 6, 0, 0, Salir, + +| 364, 289, 2, 6, 1, 255, _, +| 363, 288, 2, 6, 1, 0, _, +| 364, 219, 2, 5, 1, 255, Ver Imagen, +| 363, 218, 2, 5, 1, 0, Ver Imagen, + +* Estaticos 4 + +***************************************************************************** +* * +* Botones Para el Men de Configuracin. * +* * +***************************************************************************** +4 +| 413, 149, 2, 5, 0, 251, _, +| 412, 148, 2, 5, 0, 254, _, +| 414, 148, 2, 5, 0, 255, Salir despues de EJECUTAR., +| 413, 147, 2, 5, 0, 254, Salir despues de EJECUTAR., + +| 413, 170, 2, 5, 0, 251, _, +| 412, 169, 2, 5, 0, 254, _, +| 414, 169, 2, 5, 0, 255, Desactivar Sonidos., +| 413, 168, 2, 5, 0, 254, Desactivar Sonidos., + +| 413, 191, 2, 5, 0, 251, _, +| 412, 190, 2, 5, 0, 254, _, +| 414, 190, 2, 5, 0, 255, Instalacion Automtica, +| 413, 189, 2, 5, 0, 254, Instalacion Automtica, + +| 413, 212, 2, 5, 0, 251, _, +| 412, 211, 2, 5, 0, 254, _, +| 414, 211, 2, 5, 0, 255, Comprobar espacio libre, +| 413, 210, 2, 5, 0, 254, Comprobar espacio libre, + +| 413, 230, 2, 5, 0, 251, _, +| 412, 229, 2, 5, 0, 254, _, +| 414, 229, 2, 5, 0, 255, Formatear al Instalar, +| 413, 228, 2, 5, 0, 254, Formatear al Instalar, + +| 414, 242, 2, 4, 0, 255, ( solo en unidades A: y B: ), +| 413, 241, 2, 4, 0, 254, ( solo en unidades A: y B: ), + +| 413, 254, 2, 5, 0, 251, _, +| 412, 253, 2, 5, 0, 254, _, +| 414, 253, 2, 5, 0, 255, Sin imagen de Fondo, +| 413, 252, 2, 5, 0, 254, Sin imagen de Fondo, + +5 +* Textos +| 547, 392, 2, 5, 0, 251, _, +| 547, 391, 2, 5, 0, 0, _, +| 547, 391, 2, 5, 0, 255, Cancelar, +| 546, 390, 2, 5, 0, 0, Cancelar, + +| 471, 392, 2, 5, 0, 251, _, +| 470, 391, 2, 5, 0, 0, _, +| 471, 391, 2, 5, 0, 255, Salvar, +| 470, 390, 2, 5, 0, 0, Salvar, + +| 396, 392, 2, 5, 0, 251, _, +| 395, 391, 2, 5, 0, 0, _, +| 396, 391, 2, 5, 0, 255, Anterior, +| 395, 390, 2, 5, 0, 0, Anterior, + + +| 394, 278, 2, 5, 0, 251, _, +| 393, 277, 2, 5, 0, 0, _, +| 396, 277, 2, 5, 0, 255, Imprimir icono actual sin, +| 395, 276, 2, 5, 0, 0, Imprimir icono actual sin, + +| 396, 291, 2, 5, 0, 255, incluir los comentarios., +| 395, 290, 2, 5, 0, 0, incluir los comentarios., + +*| 394, 315, 2, 5, 0, 251, _, +*| 393, 314, 2, 5, 0, 0, _, +*| 396, 314, 2, 5, 0, 255, Imprimir icono actual con, +*| 395, 313, 2, 5, 0, 0, Imprimir icono actual con, + +*| 396, 328, 2, 5, 0, 255, los comentarios y atributos., +*| 395, 327, 2, 5, 0, 0, los comentarios y atributos., + + +* 2 Secuencia de Dinamicos +!2, 10 +* B. Cancelar +$ 547, 390, 623, 410, 253, 255, 254, 2, 2, 00, 46 +* B. Salvar +$ 471, 390, 545, 410, 253, 255, 254, 2, 2, 00, 31 +* B. Retroceder +$ 396, 390, 469, 410, 253, 255, 254, 2, 2, 00, 30 + + +***** Check 1 -- Salir Despues de Ejecutar +$ 396, 149, 411, 165, 253, 255, 254, 1, 2, 00, 32 + +***** Check 2 -- Desactivar Sonidos +$ 396, 170, 411, 186, 253, 255, 254, 1, 2, 00, 18 + +**** Check 3 -- Auto-Install +$ 396, 191, 411, 207, 253, 255, 254, 1, 2, 00, 23 + +***** Check 4 -- Comprobar espacio disponible... +$ 396, 212, 411, 228, 253, 255, 254, 1, 2, 00, 24 + +***** Check 5 -- Format Siempre ( solo A: y B: ) +$ 396, 233, 411, 249, 253, 255, 254, 1, 2, 00, 33 + +***** Check 6 -- Sin imagen de fondo +$ 396, 254, 411, 270, 253, 255, 254, 1, 2, 00, 49 + +***** Imprimir item actual sin comentario [ MIRAR LETRA ] +$ 396, 275, 623, 310, 253, 255, 254, 3, 2, 00, 50 +***** Imprimir item actual con comentario [ MIRAR LETRA ] +*$ 396, 312, 623, 346, 253, 255, 254, 3, 2, 00, 46 +*& 396, 348, 623, 385, 253, 255, 254, 3, 2, 00, 46 + +***************************************************************************** +* * +* Botones Para el Men de Ejecutar. * +* * +***************************************************************************** + + +10 +& 118, 160, 521, 335, 253, 255, 254, 2, 2 + +!3,2 +$ 123, 165, 516, 185, 240, 255, 254, 2, 1, 00, 18 +$ 500, 190, 516, 330, 253, 255, 254, 2, 1, 00, 46 + +11 + +| 504, 190, 2, 4, 1, 255, _ , +| 503, 191, 2, 4, 1, 240, _ , +| 501, 190, 2, 4, 1, 255, <- CANCELAR -> , +| 502, 191, 2, 4, 1, 240, <- CANCELAR -> , + + +| 123, 165, 2, 6, 0, 252, Ejecutar desde el CDROM, + +| 123, 190, 2, 4, 0, 240, NOTA IMPORTANTE:, + +| 123, 200, 2, 4, 0, 240, Hay cuatro circunstancias por las que los programas incluidos, +| 123, 210, 2, 4, 0, 240, en este CDROM podran NO FUNCIONAR si se ejcutan directamente, +| 123, 220, 2, 4, 0, 240, usando la opcin EJECUTAR:, +| 121, 220, 2, 4, 0, 251, EJECUTAR, +| 123, 230, 2, 4, 0, 240, Programas con requerimientos de memoria superior al espacio, +| 123, 240, 2, 4, 0, 240, libre dejado por los drivers de acceso al CDROM., +| 123, 250, 2, 4, 0, 240, Programas que nesecitan escribir algn tipo de configuracin, +| 123, 260, 2, 4, 0, 240, u otros datos en el propio disco., +| 123, 270, 2, 4, 0, 240, Programas con animaciones o accesos muy rpidos a disco duro, +| 123, 280, 2, 4, 0, 240, Programas cuyos nombres incluyan carcteres no aceptados por, +| 123, 290, 2, 4, 0, 240, el estandar ISO., +| 123, 300, 2, 4, 0, 240, Si por cualquiera de las causas anteriores no funcionase el, +| 123, 310, 2, 4, 0, 240, programa elegido: recomendamos proceda a su INSTALACION a HD., +| 120, 310, 2, 4, 0, 251, INSTALACION, +| 123, 320, 2, 4, 0, 240, usando la opcin correspondiente., + + +************************************************************************ +* * +* Pantalla para la instalacin y elegir el tipo de instalacin... * +************************************************************************ +20 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, Iniciar instalacin en:, +& 210, 240, 430, 257, 240, 255, 254, 2, 1 +** 35 digitos... +*| 210, 245, 2, 4, 0, 241, 123456789-123456789-123456789-123456789-, +*| 210, 243, 2, 4, 0, 241, MMMMMMMMM-MMMMMMMMM-MMMMMMMMM-MMMMM, + +* Boton Aceptar +& 200, 270, 280, 295, 251, 255, 254, 2, 1 +* Boton Cancelar +& 360, 270, 440, 295, 251, 255, 254, 2, 1 + +21 +| 200, 274, 2, 5, 0, 255, Aceptar, +| 201, 275, 2, 5, 0, 240, Aceptar, + + +| 340, 274, 2, 5, 0, 255, Cancelar, +| 341, 275, 2, 5, 0, 240, Cancelar, + + +!4,2 +* Boton Aceptar +$ 204, 274, 276, 291, 253, 254, 255, 2, 1, 00, 30 +* Boton Cancelar +$ 364, 274, 436, 291, 253, 254, 255, 2, 1, 00, 46 + +************************************************************************ +* * +* MENSAJES DE ERROR <------>---------<----------->--------<------>- * +* -------<-------->_------<-------->-->----------<--------->_----<- * +* 5"$%!"$%" %"$ &/(I/)(=P)^PO__:;JLKO) (/)%&/($&/($&()(/=)&( * +************************************************************************ +100 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, Error en asignacin, +| 210, 242, 2, 5, 0, 240, de memoria CONVENCIONAL, +101 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, Error en asignacin, +| 210, 242, 2, 5, 0, 240, de memoria XMS, +102 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, Error cargando ICONOS, +| 210, 242, 2, 5, 0, 240, y punteros de RATON..., +103 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, Error cargando PCX, +| 210, 242, 2, 5, 0, 240, de Fondo., +104 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, Error cargando ficheros, +| 210, 242, 2, 5, 0, 240, de sonido WAV, +105 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, Error intentando ejecutar, +| 210, 242, 2, 5, 0, 240, el programa deseado..., +106 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, Error intentando ejecutar, +| 210, 242, 2, 5, 0, 240, el programa deseado..., +107 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, ERROR D E TIPO, +| 210, 242, 2, 5, 0, 240, D E S C O N O C I D O, + +108 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, ERROR ABRIENDO, +| 210, 242, 2, 5, 0, 240, FICHERO, +109 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, ERROR de ESCRITURA, +| 210, 242, 2, 5, 0, 240, DISCO PROTEGIDO., +110 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, ERROR de LECTURA, +| 210, 242, 2, 5, 0, 240, POSIBLE DAO FSICO, +111 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, ERROR INTENTANDO, +| 210, 242, 2, 5, 0, 240, CERRAR FICHERO, +112 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, ERROR INTENTANDO, +| 210, 242, 2, 5, 0, 240, CARGAR BOTONES, +113 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, EL FICHERO O DIRECTORIO A, +| 210, 242, 2, 5, 0, 240, INSTALAR NO SE HA ENCONTRADO, +114 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, EL FICHERO O DIRECTORIO A, +| 210, 242, 2, 5, 0, 240, EJECUTAR NO SE HA ENCONTRADO, +115 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, LA IMPRESORA NO ESTA LISTA, +| 210, 242, 2, 5, 0, 240, < << OPERACION CANCELA >> >, +116 +& 200, 212, 440, 267, 251, 255, 254, 2, 1 +& 205, 217, 435, 262, 253, 254, 255, 2, 1 +| 210, 222, 2, 5, 0, 240, IMPRIMIENDO..., +| 210, 242, 2, 5, 0, 240, -JD-, + + + + diff --git a/CD_OUT.PRJ b/CD_OUT.PRJ new file mode 100644 index 0000000000000000000000000000000000000000..ac9e18c0782df2c6d087dd07d4cfd1e1294da560 GIT binary patch literal 10395 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 literal 0 HcmV?d00001 diff --git a/CD_OUT2.IMG b/CD_OUT2.IMG new file mode 100644 index 0000000000000000000000000000000000000000..05c09e6272ae30782f8fdde309b400e31f2c30bd GIT binary patch literal 23530 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 literal 0 HcmV?d00001 diff --git a/CD_PCX.CPP b/CD_PCX.CPP new file mode 100644 index 0000000..e8df0c3 --- /dev/null +++ b/CD_PCX.CPP @@ -0,0 +1,151 @@ +///////////////////////////// FICHEROS A INCLUIR ///////////////////////////// +//#include +//#include +#include +#include +#include +//#include // Para getch(); +#include // Para outtextxy(...); y cleardevice(...); +#include "cd_error.h" +// #include "..\..\jd_lib\f_lib\make_bot.h" // Fuciones de MAKE_BOTON +////////////////////////////////// VARIABLES ///////////////////////////////// + +char far *dir_vga; +int ancho; +int alto; +char bits_pixel; + +char dac[256*3]; +extern char newdac[256*3]; + +//////////////////////// DECLARACIONES DE FUNCIONES ////////////////////////// + +void dibujo_640_x_480_256_c(FILE *handle); +void asigna_modo_video(char); + +extern "C" +{ + int SET_VESA(int); + void CHANGE_BANK(int); + void ENCIENDE_PANTALLA(char *); + void APAGA_PANTALLA(char *); +} + +///////////////////////////////// PROGRAMA /////////////////////////////////// + +void Inicializa_Dibujo(int L_Imagen, char *N_Imagen2) +{ + FILE *handle; + + int esq_x1, esq_y1, esq_x2, esq_y2; + char string[80] = "cd_out0"; + + randomize(); + + if(L_Imagen==-1){ + string[7] = (unsigned char)(random(9)+ '0'); + string[8] = '.'; + string[9] = 'P'; + string[10] = 'C'; + string[11] = 'X'; + string[12] = '\0'; + + } + else if(L_Imagen==-2) strcpy( string, N_Imagen2 ); + else + { + string[7] = (unsigned char)(L_Imagen + '0'); + string[8] = '.'; + string[9] = 'P'; + string[10] = 'C'; + string[11] = 'X'; + string[12] = '\0'; + } + + + if((handle=fopen(/*"CD_OUT1.IMG"*/string, "rb"))==NULL) + { +/* + Imprime_Estaticos( E_O, "cd_out.img"); // Imprime botones estaticos 'Seccion 2' + Espera_Tecla_o_Raton(); +*/ + restorecrtmode(); + printf("No se encontr el archivo especificado: Imagen Background"); + exit(1); + } + + if(10!=getc(handle)) + { +/* + Imprime_Estaticos( E_PCX, "cd_out.img"); // Imprime botones estaticos 'Seccion 2' + Espera_Tecla_o_Raton(); +*/ + restorecrtmode(); + printf("El archivo especificado no es un fichero PCX"); + exit(1); + } + + getw(handle); bits_pixel=getc(handle); + + esq_x1=getw(handle); esq_y1=getw(handle); + esq_x2=getw(handle); esq_y2=getw(handle); + + ancho=esq_x2-esq_x1+1; + alto =esq_y2-esq_y1+1; + + if(ancho!=640 || alto!=480 || bits_pixel!=8) + { +/* + Imprime_Estaticos( E_PCX, "cd_out.img"); // Imprime botones estaticos 'Seccion 2' + Espera_Tecla_o_Raton(); +*/ + restorecrtmode(); + printf("El fichero especificado no es un dibujo de 640 x 480 en 256 colores"); + exit(1); + } + +// APAGA_PANTALLA(dac); + dibujo_640_x_480_256_c(handle); +// ENCIENDE_PANTALLA(dac); + +} + +void dibujo_640_x_480_256_c(FILE *handle) +{ + unsigned char byte, contador; + int bank, n; + + fseek(handle, 128, 0); + + bank=0; (long)dir_vga=0xA0000000L; + CHANGE_BANK(bank); + + for(alto=480; alto>0; alto--) + { + for(ancho=640; ancho>0; ) + { + byte=getc(handle); + if(byte<=0xC0) + { + *dir_vga++=byte; ancho--; + if((long)dir_vga==0xA0000000L) { bank++; CHANGE_BANK(bank); } + } + else + { + contador=byte&0x3F; byte=getc(handle); + for(; contador>0; contador--) + { + *dir_vga++=byte; ancho--; + if((long)dir_vga==0xA0000000L) { bank++; CHANGE_BANK(bank); } + } + } + } + } + getc(handle); + +// for(n=0; n<256*3; n++) dac[n]=getc(handle) >> 2; + for(n=0; n<(256-16)*3; n++) dac[n]=getc(handle) >> 2; + for(n=(256-16)*3; n<(256*3); n++) newdac[n]=getc(handle) >> 2; + + fclose(handle); +} diff --git a/CD_RATON.CPP b/CD_RATON.CPP new file mode 100644 index 0000000..747b052 --- /dev/null +++ b/CD_RATON.CPP @@ -0,0 +1,215 @@ +/////////////////////////////////////////////////////////////////////////// +///// Nombre: Craton.cpp /// +///// Modulo: Perteneciente a JD_FONTS.CPP /// +//// Descripcin: Utilidades para el manejo del raton /// +//// /// +//// Autor: ( Ver Pc-Mania n 20 ) /// +//// Autor puntero del raton: Jos David Guilln Dominguez /// +//// Fecha: ( Desconocida ) /// +//// /// +//// Compilador Borland C++ 3.0 ( Creacin original en Turbo C 2.0 ) /// +/////////////////////////////////////////////////////////////////////////// + +#include +#include + +void desactiva_raton(void); +void activa_raton(void); +void inicializa_raton_grafico(int x1, int y1, int x2, int y2, int px, int py); +void Anclar_Raton(void); +int Espera_Tecla_o_Raton(void); + + +int raton=0; +int x_raton; +int y_raton; +int boton_izq; +int boton_der; +extern int PunteroRaton; +int dir_raton [32+32] = { + +// 0x3FFF, /* 1 1 1 1 1 1 1 1 1 1 1 1 1 1*/ +// 0x1FFF, /* 1 1 1 1 1 1 1 1 1 1 1 1 1*/ +// 0x0FFF, /* 1 1 1 1 1 1 1 1 1 1 1 1*/ +// 0x07FF, /* 1 1 1 1 1 1 1 1 1 1 1*/ +// 0x03FF, /* 1 1 1 1 1 1 1 1 1 1*/ +// 0x07FF, /* 1 1 1 1 1 1 1 1 1 1 1*/ +// 0xC3FF, /*1 1 1 1 1 1 1 1 1 1 1 1*/ + + 0x007F, /* 1 1 1 1 1 1 1*/ + 0x00FF, /* 1 1 1 1 1 1 1 1*/ + 0x01FF, /* 1 1 1 1 1 1 1 1 1*/ + 0x01FF, /* 1 1 1 1 1 1 1 1 1*/ + 0x00FF, /* 1 1 1 1 1 1 1 1*/ + 0x007F, /* 1 1 1 1 1 1 1*/ + 0x18FF, /* 1 1 1 1 1 1 1 1 1 1*/ + +// 0xFC7F, /*1 1 1 1 1 1 1 1 1 1 1 1 1*/ +// 0xF83F, /*1 1 1 1 1 1 1 1 1 1 1*/ +// 0xF01F, /*1 1 1 1 1 1 1 1 1*/ +// 0xE00F, /*1 1 1 1 1 1 1*/ +// 0xE00F, /*1 1 1 1 1 1 1*/ +// 0xF83F, /*1 1 1 1 1 1 1 1 1 1 1*/ +// 0xF83F, /*1 1 1 1 1 1 1 1 1 1 1*/ + + 0x800F, /*1 1 1 1 1*/ + 0x8083, /*1 1 1*/ + 0x8001, /*1 1*/ + 0xF810, /*1 1 1 1 1 1 1*/ + 0x8810, /*1 1 1 1*/ + 0x8811, /*1 1 1 1*/ + 0x8003, /*1 1 1*/ + 0x8007, /*1 1 1 1*/ + 0x800F, /*1 1 1 1 1*/ + +// 0x0000, /*0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*/ +// 0x4000, /*0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*/ +// 0x6000, /*0 0 0 0 0 0 0 0 0 0 0 0 0 0*/ +// 0x7000, /*0 0 0 0 0 0 0 0 0 0 0 0 0*/ +// 0x7800, /*0 0 0 0 0 0 0 0 0 0 0 0*/ +// 0x3000, /*0 0 0 0 0 0 0 0 0 0 0 0 0 0*/ +// 0x1800, /*0 0 0 0 0 0 0 0 0 0 0 0 0 0*/ + + 0x0000, /*0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*/ + 0x7E00, /*0 0 0 0 0 0 0 0 0 0*/ + 0x7C00, /*0 0 0 0 0 0 0 0 0 0 0*/ + 0x7C00, /*0 0 0 0 0 0 0 0 0 0 0*/ + 0x7E00, /*0 0 0 0 0 0 0 0 0 0*/ + 0x6700, /*0 0 0 0 0 0 0 0 0 0 0*/ + 0x0200, /*0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*/ + + +// 0x0100, /*0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*/ +// 0x0380, /*0 0 0 0 0 0 0 0 0 0 0 0 0*/ +// 0x07C0, /*0 0 0 0 0 0 0 0 0 0 0*/ +// 0x0FE0, /*0 0 0 0 0 0 0 0 0*/ +// 0x0380, /*0 0 0 0 0 0 0 0 0 0 0 0 0*/ +// 0x0380, /*0 0 0 0 0 0 0 0 0 0 0 0 0*/ +// 0x0000, /*0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*/ + + 0x0000, /*0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*/ + 0x3E70, /*0 0 0 0 0 0 0 0*/ + 0x0248, /*0 0 0 0 0 0 0 0 0 0 0 0 0*/ + 0x0244, /*0 0 0 0 0 0 0 0 0 0 0 0 0*/ + 0x0242, /*0 0 0 0 0 0 0 0 0 0 0 0 0*/ + 0x2244, /*0 0 0 0 0 0 0 0 0 0 0 0*/ + 0x2248, /*0 0 0 0 0 0 0 0 0 0 0 0*/ + 0x3E70, /*0 0 0 0 0 0 0 0*/ + 0x0000 /*0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*/ + }; + + +void inicializa_raton_grafico(int x1, int y1, int x2, int y2, int px, int py) +{ + struct SREGS seg; + 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 */ + + if(!PunteroRaton) { + dir = (long)dir_raton; + ent.x.ax = 9; + ent.x.bx = 0; + ent.x.cx = 0; + ent.x.dx = (int) dir; + seg.es = (int) (dir >> 16); + int86x(0x33, &ent, &sal, &seg); /* asigna un cursor diferente */ + } + + ent.x.ax = 4; + ent.x.cx = px; + x_raton=ent.x.cx >> 1; + ent.x.dx = py; + y_raton=ent.x.dx; + int86(0x33, &ent, &sal); /* fija la posicin del ratn */ + + ent.x.ax = 1; + int86(0x33, &ent, &sal); /* muestra el puntero del ratn */ + } +} + +void activa_raton(void) +{ + union REGS ent, sal; + + ent.x.ax = 1; + int86(0x33, &ent, &sal); +} + +void desactiva_raton(void) +{ + union REGS ent, sal; + + ent.x.ax = 2; + int86(0x33, &ent, &sal); +} + + + +void Anclar_Raton(void){ + union REGS ent, sal; + do { + ent.x.ax = 3; + int86(0x33, &ent, &sal); + boton_izq = sal.x.bx & 1; + boton_der = (sal.x.bx >> 1) & 1; + } while(boton_izq==1 || boton_der==1); +} + +int Espera_Tecla_o_Raton(void){ + union REGS ent, sal; + + ent.x.ax = 3; + + do{ + int86(0x33, &ent, &sal); // lee posicin y estados del botn + boton_izq = sal.x.bx & 1; + boton_der = (sal.x.bx >> 1) & 1; + x_raton = sal.x.cx; + y_raton = sal.x.dx; + + }while( boton_izq == 0 && boton_der == 0 && kbhit()==0 ); + + + + ///////////////////////////////////////// + // RETURN Derecho Izquierdo // + // // + // 0 0 0 // + // 1 1 0 // + // 2 0 1 // + // 3 1 1 // + // // + ///////////////////////////////////////// + int Que; + + if ( boton_der==0 && boton_izq==0 ) Que = 0; + if ( boton_der==1 && boton_izq==0 ) Que = 1; + if ( boton_der==0 && boton_izq==1 ) Que = 2; + if ( boton_der==1 && boton_izq==1 ) Que = 3; + + return Que; +} diff --git a/CD_RATON.H b/CD_RATON.H new file mode 100644 index 0000000..ac19ee5 --- /dev/null +++ b/CD_RATON.H @@ -0,0 +1,8 @@ +extern void desactiva_raton(void); +extern void activa_raton(void); +extern void inicializa_raton_grafico(int x1, int y1, int x2, int y2, int px, int py); +extern void Anclar_Raton(void); +extern int Espera_Tecla_o_Raton(void); + + +extern int raton, x_raton, y_raton, boton_izq, boton_der, PunteroRaton; diff --git a/CD_SND.H b/CD_SND.H new file mode 100644 index 0000000..0848538 --- /dev/null +++ b/CD_SND.H @@ -0,0 +1,27 @@ +// CD_OUTxx . WAV +// ID_Code xx + +#define Start_Program 0 // 0 00 Inicio del Programa +#define Mouse_Press 1 // 1 01 Raton pulsado en algun sitio +#define Key_Press 2 // 2 02 Tecla pulsada para nada +#define Mouse_Key_Tick 3 // 3 03 Tick Generico +#define Play_DOS 4 // 4 04 Boton DOS +#define Play_WINDOWS 5 // 5 05 Boton Windows +#define Select_Icono 6 // 6 06 Select Icono +#define Install 7 // 7 07 Instalar +#define Setup 8 // 8 08 Configurar +#define Run 9 // 9 09 Ejecutar +#define Show_Image 10 // 10 0A Ver Dibujo +#define Yes 11 // 11 0B Si +#define No 12 // 12 0C No +#define Printing 13 // 13 0D Imprimiendo +#define Ok 14 // 14 0E Aceptar +#define Cancel 15 // 15 0F Cancelar +#define Save_until_exit 16 // 16 10 Salvar al Salir +#define Unknow_error 17 // 17 11 ERROR DESCONOCIDO +#define End_Program 18 // 18 FF Fin del Programa + +#define Error_108 -1 // 19 ver 108 de Make_Boton (Error Abriendo Fichero) +#define Error_113 -1 // 20 ver 113 de Make_Boton (No fichero a instalarar) +#define Error_114 -1 // 21 ver 114 de Make_Boton (Ejecutar imposible) +#define Error_116 -1 // 22 ver 116 de Make_Boton (Imprimiendo) diff --git a/CD_SND/CD_SND.CPP b/CD_SND/CD_SND.CPP new file mode 100644 index 0000000..9b963de --- /dev/null +++ b/CD_SND/CD_SND.CPP @@ -0,0 +1,328 @@ +///////////////////////////////////////////////////////////////////////////// +// +// CD_SND +// +// Utilidad para CD_Out +// +// Se encarga de reunir todos los Waves en un solo archivo para que +// CD_Out pueda utilizarlos. +// +// Parametros de entrada: +// +// CD_SND [Command] [Output File] [ ID_Code ] +// +// -u:NAME.EXT Uncompress Wave with name: NAME.EXT +// -ua Uncompress ALL WAVES +// +// -c:NAME.EXT Compress Wave with name: NAME.EXT ( Name will be a name valid +// for CD_Out: +// CD_OUTXX.WAV ) +// -ca Compress ALL WAVES +// -e:NAME.EXT Extract Wave File with NAME.EXT +// +// Si el fichero no es reconocido por CD_Out necesitara un ID_Code +// distinto para su utilizacin ( en un futuro ), para futuras vesiones +// de CD_Out +///////////////////////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include + +#define Extraer_Uno 1 +#define Extraer_Todos 2 +#define Insertar_Uno 3 +#define Insertar_Todos 4 +#define Borra_Uno 5 + +long Longitud( const char *File ); +void Procesa( int Accion, const char *Fich_Origen, char *Fich_Destino ); +void Ayuda(void) ; +void Indica_progreso(int RESET); + + +typedef struct + { + char Nombre_del_Programa[70]; + char Comentario_Inicial[70]; + + char VerHi, VerLow; + char Register; + + long Records; +} CABECERA; + +typedef struct + { + char Wave_Name[13]; // Nombre del Wave + char ID_code; // Codigo ID_ del Wave + unsigned long Pos; // Posicin de comienzo dentro del archivo destino + unsigned long Len; // Longitud + } CD_SND; + + + + long la; + char *Fich_Origen; + char *Fich_Destino; + char Accion = 0; + char ID_Code = -1; + + const char File[][13] = { + "CD_OUT00.WAV", + "CD_OUT01.WAV", + "CD_OUT02.WAV", + "CD_OUT03.WAV", + "CD_OUT04.WAV", + "CD_OUT05.WAV", + "CD_OUT06.WAV", + "CD_OUT07.WAV", + "CD_OUT08.WAV", + "CD_OUT09.WAV", + "CD_OUT0A.WAV", + "CD_OUT0B.WAV", + "CD_OUT0C.WAV", + "CD_OUT0D.WAV", + "CD_OUT0E.WAV", + "CD_OUT0F.WAV", + "CD_OUT10.WAV", + "CD_OUT11.WAV", + "CD_OUTFF.WAV" + }; + + +void main( int argc, char *argv[] ) +{ + int i; + clrscr(); + gotoxy(1,1); textcolor(WHITE); textbackground(BLUE); + cprintf("Copyright (c) J.D. System 1995. Jos David Guilln Dominguez... CD_Snd v1.0"); + + // Analizamos parametros + if ( argc != 3 ) + { + textbackground(BLACK); + gotoxy(1,3); + cprintf("Sintaxis: CD_Snd [Comando] [Archivo_Destino] [ID_Code] "); + Ayuda(); + return; + } else { + + gotoxy(1,2); + cprintf(" Procesando Argumentos "); + Indica_progreso(1); + la = argc; + + if ( !strncmpi(argv[1], "-U:", 3) ) + { + Fich_Origen = argv[1]; + Fich_Origen += 3; + Accion = Extraer_Uno; + Indica_progreso(0); + } else + if ( !strcmpi(argv[1], "-UA") ) + { + Accion = Extraer_Todos; + Indica_progreso(0); + } else + if ( !strncmpi(argv[1], "-C:", 3) ) + { + Fich_Origen = argv[1]; + Fich_Origen += 3; + Accion = Insertar_Uno; + Indica_progreso(0); + } else + if ( !strcmpi(argv[1], "-CA") ) + { + Accion = Insertar_Todos; + Indica_progreso(0); + } else + if ( !strncmpi(argv[1], "-E:", 3) ) + { + Fich_Origen = argv[1]; + Fich_Origen += 3; + Accion = Borra_Uno; + Indica_progreso(0); + } else Ayuda(); + + Fich_Destino = argv[2]; + Indica_progreso(0); + + ID_Code = atoi( argv[3] ); + Indica_progreso(0); + } + + Procesa( Accion, File[i], Fich_Destino ); +/* + swicth ( Accion ) + { + case Insertar_Todos: + case Extraer_Todos: + for ( i=0; i< 19; i++ ) + { + ID_Code = i; + Procesa( Accion, &File[i], Fich_Destino ); + } + break; + default: + Procesa( Accion, Fich_Origen, Fich_Destino ); + break; + } +*/ +} + + +void Indica_progreso(int RESET){ + + static int posx=31; // Posicin de giro // + static int giro=0; // Carater para rotar // + static long contador = 0; + + if ( RESET ) { contador = 0; gotoxy(1,2); cprintf(" 0%"); return; } + contador++; + gotoxy(1,2); cprintf("%3d%%", ( (contador*100)/la ) ); + gotoxy(posx-1,2); posx++; + switch(giro){ + case 0: cprintf(" /"); break; + case 1: cprintf(" "); break; + case 2: cprintf(" \\"); break; + case 3: cprintf(" "); break; + } + if(posx==79) posx=30; + giro++; if(giro==4) giro=0; + +} + + +/*CD_OUTxx . WAV + + 00 Inicio del Programa + FF Fin del Programa + 01 Raton pulsado en algun sitio + 02 Tecla pulsada para nada + 03 Tick Generico + 04 Boton DOS + 05 Boton Windows + 06 Select Icono + 07 Instalar + 08 Configurar + 09 Ejecutar + 0A Ver Dibujo + + 0B Si + 0C No + 0D Imprimiendo + 0E Aceptar + 0F Cancelar + 10 Salvar al Salir + + 11 ERROR DESCONOCIDO + +*/ + +void Ayuda(void) +{ + gotoxy(1,5); + cprintf("[Comando]\r\n"); + cprintf(" * -u: Nombre.EXT Saca una copia del fichero compactado\r\n"); + cprintf(" * -ua Saca una copia de todos los ficheros\r\n") ; + cprintf(" * -c: Nombre.EXT Introduce el Archivo Nombre.Ext en Destino\r\n"); + cprintf(" -ca Introduce todos los Archivos en Destino\r\n") ; + cprintf(" * -e: Nombre.EXT Borra el Archivo Nombre.Ext de Destino\r\n\r\n"); + cprintf(" * Comandos desctivados el la versin SHAREWARE\r\n\r\n") ; + + +} + + +void Procesa( int Accion, const char *Fich_Origen, char *Fich_Destino ) + { + FILE *ORIGEN; + FILE *DESTINO; + CABECERA Cabecera; + CD_SND CD_Snd[19]; + long Pos; int i; + + /* + if ( ( ORIGEN = fopen( Fich_Origen, "rb") ) == NULL ) + { + cprintf("\r\nERROR ABRIENDO ORIGEN: %s\r\n", Fich_Origen); + exit(1); + } + */ + if ( ( DESTINO = fopen( Fich_Destino, "wb") ) == NULL ) + { + cprintf("\r\nERROR ABRIENDO DESTINO: %s\r\n", Fich_Destino); + exit(1); + } + + sprintf( Cabecera.Nombre_del_Programa, "CD_Snd\nCompactador de Ficheros para CD_Out\n" ); + sprintf( Cabecera.Comentario_Inicial, "\n\nCD_Out es un programa de Jos David\nCD_Snd idem%d%d", 7, 26); + Cabecera.VerHi = 1; + Cabecera.VerLow = 0; + Cabecera.Register = 0; + Cabecera.Records =19; + + + fwrite( &Cabecera, sizeof( Cabecera ), 1, DESTINO ); + Pos = sizeof( Cabecera ) + sizeof( CD_SND) * 19; + Indica_progreso(1); la = 19; + + gotoxy(1,2); + cprintf(" Creando Esturcturas "); + + for ( i=0; i< 19; i++ ) + { + strcpy(CD_Snd[i].Wave_Name, File[i]); // Nombre del Wave + CD_Snd[i].ID_code = i; // Codigo ID_ del Wave + CD_Snd[i].Len = Longitud(File[i]); + CD_Snd[i].Pos = Pos; + Pos += CD_Snd[i].Len; + Indica_progreso(0); + } + + fwrite( CD_Snd, sizeof( CD_SND ), 19, DESTINO ); + + for ( i=0; i< 19; i++ ) + { +// gotoxy(1,4); +// cprintf(" Pulse una Tecla para siguiente Archivo -- Version SHAREWARE -- "); +// getch(); +// gotoxy(1,4); +// cprintf(" "); + + gotoxy(1,2); + cprintf(" Uniendo %13s ", File[i]); + Indica_progreso(1); la = CD_Snd[i].Len; + gotoxy(1,3); + cprintf(" Longitud a procesar %ld ", CD_Snd[i].Len); + + if ( ( ORIGEN = fopen( File[i], "rb") ) != NULL ) + { + Pos = CD_Snd[i].Len; + + while ( Pos > 0 ) { fputc(fgetc(ORIGEN), DESTINO); Indica_progreso(0); Pos--; } + + fclose(ORIGEN); + } + } + + fclose(DESTINO); + + } + + long Longitud(const char *File ) + { + FILE *file; + long devolver; + + if ( (file = fopen( File, "rb")) == NULL ) + { + return 0; + } + devolver = filelength(fileno(file)); + fclose(file); + return devolver; + } \ No newline at end of file diff --git a/CD_SND/CD_SND.EXE b/CD_SND/CD_SND.EXE new file mode 100644 index 0000000000000000000000000000000000000000..01b360d23f52cc99a99b78327c4a9ffe0847769f GIT binary patch literal 22445 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 L&YCeLbvpZBuj^uc literal 0 HcmV?d00001 diff --git a/CD_SND/CD_TEST.CPP b/CD_SND/CD_TEST.CPP new file mode 100644 index 0000000..86807d2 --- /dev/null +++ b/CD_SND/CD_TEST.CPP @@ -0,0 +1,82 @@ +#include +#include +#include "..\CD_SND.H" +#include "c:\things\borlandc\jd_lib\wav_lib\wavplay.h" + + +int Load_Snd(void); +void Sonido( char Sonido ); + +typedef struct + { + char Nombre_del_Programa[70]; + char Comentario_Inicial[70]; + + char VerHi, VerLow; + char Register; + + long Records; +} CABECERA; + +typedef struct + { + char Wave_Name[13]; // Nombre del Wave + char ID_code; // Codigo ID_ del Wave + unsigned long Pos; // Posicin de comienzo dentro del archivo destino + unsigned long Len; // Longitud + } CD_SND; + + CD_SND CD_Snd[19]; + + + +int Load_Snd(void) +{ + CABECERA Cabecera; + FILE *DESTINO; + + if ( ( DESTINO = fopen( "CD_OUT.SND", "rb") ) == NULL ) + { + return 0; + } + + fread( &Cabecera, sizeof( Cabecera ), 1, DESTINO ); + + fread( CD_Snd, sizeof( CD_SND ), 19, DESTINO ); + + fclose(DESTINO); + return 1; +} + +void main(void) +{ +/**/cprintf("Inicializando sonidos. "); /**/ +/**/ switch ( InitSB() ) { /**/ +/**/ case 0: /**/ +/**/ cprintf(" --> Speaker Ok!\n\r"); /**/ +/**/ break; /**/ +/**/ case 1: /**/ +/**/ cprintf(" --> Sound Blaster Ok!\n\r"); /**/ +/**/ break; /**/ +/**/ case 2: /**/ +/**/ cprintf(" --> Dac Casero Ok!\n\r"); /**/ +/**/ break; /**/ +/**/ } /**/ + + Load_Snd(); + + cprintf("\n\rFichero Posicin Longitud ID_Code\n\r"); + for( int Sonido=0; Sonido < 19; Sonido++ ) + { + while( kbhit() ) getch(); + + cprintf("%s %8ld %8ld %d\n\r", CD_Snd[Sonido].Wave_Name, CD_Snd[Sonido].Pos, + CD_Snd[Sonido].Len, (int)CD_Snd[Sonido].ID_code); + + if ( PlayWav((char far *)"CD_OUT.SND", CD_Snd[Sonido].Pos, CD_Snd[Sonido].Len ) == -1 ) + PlayLongWav((char far *)"CD_OUT.SND", CD_Snd[Sonido].Pos, CD_Snd[Sonido].Len ); + + while( kbhit() ) getch(); + } +} + diff --git a/CD_SND/CD_TEST.EXE b/CD_SND/CD_TEST.EXE new file mode 100644 index 0000000000000000000000000000000000000000..e3751ba8ca57a2d36667b0c4add5d5df59ec69d8 GIT binary patch literal 25007 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 literal 0 HcmV?d00001 diff --git a/CD_SND/WAV/CD_OUT00.WAV b/CD_SND/WAV/CD_OUT00.WAV new file mode 100644 index 0000000000000000000000000000000000000000..57db00c0eb82bef8713d066516d95b0813255a4b GIT binary patch literal 33600 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 M9!_G_$XROtAGQ!hk^lez literal 0 HcmV?d00001 diff --git a/CD_SND/WAV/CD_OUT01.WAV b/CD_SND/WAV/CD_OUT01.WAV new file mode 100644 index 0000000000000000000000000000000000000000..4616f9e1db97f76c8e79f164d5fe30d69eb2cf34 GIT binary patch literal 1512 zcmW+#TWAz#7+oKVg+ftiUy4PsC_ac{Q7Vzv#7p9(F~($*-DGpw?9OHP)~c~BT2qTHMG^F+V5w9J?Mp#u!H#|(-`nB;&Uem#&Yf&- z{`DP=rn{-@xW$HT+oaKGHmHq%sChdZH1BH6M$C9q#q{esJ3DpV`rdPTGCyi{6Kt|P zS*f0{j!%!3=O6xYzXl-P$)?7p#xD-;+p5uQI%E~5>knVN{^zIq;>w*{H)fp;dp_^5 z5(0<&a8Y4#o4#Sw#vRROZt?EZ=f8ZrI-MY(mYrL7HfRxCELNB5YY$)k_xrsnJ94&R z@9y3E4jkCG{k_fmwZ8P?+WNyskDok#`tskG4{D;Tw|W1rt(#TyTUvv;qDTwrsl^+2 zpTB0)mC1#r)tmR8{PpVZ$14Q@HGRBMvw3e9UB7?lav@}B+;iYi%Wz`- z#qEo^Q2UYAep`quuKf7(t@EkyK-0mNUYw=i&R)pJR@T0&&!wY5H*D_d8G!6!GRD)S z*W9HuItVU3b>oNc>(wmfF?TjLo#^TtcH>NI-81mOxhEThmW?NYinsfGl&5xH#RX* znXA<Dk{s+GJpJXfohJEM~|IqsRyX^$mMQxkP?)dT#Nn zZ?4W|nXqHnWHk2c+YTS^ws?V%$d|{;+a~#55npKMO{!`SpE9yLODiy5o3>T$O4a`4!b)*P`nhA zOv5q_J7@j{9P z07PgZSx8Hg%#l79iXgTT(}2YpqLoZ0lTIb$GLPF~)Eh|_GcrvCFt^9!b~v1<*<$mO zoRTe1%`aV=FDH2rbR$r|uC1l54+#J^k7b6h)B*Va$%&Y!0h_0P&G*ELj+z znV-tbG>+LFF1H8sxR5^mpsG5n6lbo~m#d{X6}0u7YBRuIl8&YF`DBa%c+iizy*|w4 zaQVW35#>ZGotwE(NwYYHLWa(EJ>&>c94E!&N?I+6bi%01PXJcQXXAV%02{47I-$ha z2oZ2u42I!1QjE>cRSGg`H$jNgk4O0O^4wTbm22p1bH{KnLPtgkGRnqe)zj(fc#0)d z5>9mJ?5QrJEl4Ycsm0~mL`I?s%nq9e^_>Qb3y*SgDpwqvy>y|H;cyRXYCo+tI)IWA zqoaWU4rrEQcwUkvE=uzhiL2fZS?qq2m6S{&$wfl`KnT#BEWPmvgx%H=EFv%@;di-w z1YiUumCYo@QK#LlS`~9yOjcLmjZUR%ZKj+SqhYsMXMh|5K=E=iDe)8_!Xdve5cGR7 zZ;${KCrENUQJO5oY4uSQ8t5~j7#?L9K@?+gwFH1UT;9+qpkq>uqXCXN)G!G=O92uO zxKY#-Bq>43WK%K=R9ap?u40u^RuQ6v-w6#`Jp_mXKmtIqtRN|=j3TI)hExhpXb5)r Zh$t_o3Z+~k#zx7IA9L9eE2@6&{{i%c-=P2i literal 0 HcmV?d00001 diff --git a/CD_SND/WAV/CD_OUT02.WAV b/CD_SND/WAV/CD_OUT02.WAV new file mode 100644 index 0000000000000000000000000000000000000000..da05fdc1ac73c7f441ea30f050b56c55c4a02e37 GIT binary patch literal 43220 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 literal 0 HcmV?d00001 diff --git a/CD_SND/WAV/CD_OUT07.WAV b/CD_SND/WAV/CD_OUT07.WAV new file mode 100644 index 0000000000000000000000000000000000000000..32a24e3563f28096f59355d2becdb65ac122b933 GIT binary patch literal 8476 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 literal 0 HcmV?d00001 diff --git a/CD_SND/WAV/CD_OUT08.WAV b/CD_SND/WAV/CD_OUT08.WAV new file mode 100644 index 0000000000000000000000000000000000000000..f6c3d2edf7e38a13cafca6ae6defe4f11d97e7d3 GIT binary patch literal 9476 zcmZ{K2Y6FgwyyJL5+=zEB!nbDDuh4^y%+)p8;ot-d$;8-*;enp_byr8mL>Nt_fByI zj7@K*LkJK831sHZe0g){zRO)lhJ3Hww=K!XM|-Wc_ged`{jYyJDKb3#Kh^{Ur0-7) zL*r?mzY`D;@EZKQ`)z>#{aV1E0*VW01@q8HC=`iA$QwR?Z-U>i{+o;cttZk?01ZC> zpN_xZLHaMe!4_i9ZxZgjvgp73|9*&}NhDIa%2HG9G4d$|1;qr3(pVwml1obPB7?{4 z(9%m$IT)(U;_@`rSd2^(4owwVS{vGJjIyZkv^-g5b+4XNwm&WbrLCSmJ<=o0jocoQ z%XZW@nklG5htkRwm5ntk9F8tGxhgAEEIbBHmDuW=>dd^d?2H@? zT_BgRNQIf{>4kVYmqW)EWTVR2I&WKdXMLqvqczyPjqM$+O*NG+hr{Wx+bWDYjZ!HS za;P|TUQT*K^!~uFm;VW3vS>{>$v$-P*7x7vxprZ0YP8MDL#ISVC6|hw9U~KyQzuVf zx_z4lyPyp?<827yw(Ej6xGe`Qn8})?b-D^Kv zA1&}*{_Vw!f8CuP?&}^rHZ{>(t>sh59F4oN(W9fL1%0)0@k<4uW0m1KqT#FSa-kGo@bLQ-UWiK4E5 z>~M>TS)85_n~)S2y8d_3#P+|xc=5EC{N39DZ*R`l_FsDZ?D?<1{_^+KF!0zJOq>#!KI+NL~mvZU2k|I=ATGXz!ix(t6kE0viZUv=0C!@YHGBvrLsb=R%vxwol3-^<4e(nsEo+KFBTrTrCYPO2B(2X!R8lpj4cxvZa#c) z^YVqWXJ#i4_cgjI3|bus>f{0rjesk|6z9h6`*xY%<|p4}G89HRi$*LZ$*jJqv-98I zzI^`l+?m<#`*}3WQq4xSJi`fj43NfF}pixK!TuD~!zV$0X^vyMa@r48y6^AF{=xTfW z(dpyo&dr=We*DzQ$)f|Ub#7Zlg-)%Mi+CI+gHENA@#x&7h@ETSU-YLHTZ7|sigBeS zr9>jnRMj>#IyyNuHa;77uqOAD+TR&gA?2FyO zk;z$wxw%CIvcTkO=<4kq867@+{0?xDmWf3?7L!WA zpi-muZ2D^B?y!icWJI=%%#>LiwJj~azTUo(qsNX64i0vAf^=(>*HdY;7!6v5R3hZE z=p<}mR#Nz`4I8(Gg+;_9r=?`%ktkf9#nsT<+||=FG;pRz{$R^kzp@Rb69iS8v}?pRc>O zv#ZnRYi+3YI2|^VK_{08xEv;pN-i(S&qxU0{asK@d`xt5Mrvvvh0ak{II5~^T3R~# z1_lOtI(vG0VAj5-T5q+}4*Q@&D&}+8OgfE(MHl3xMu+U(7nKkbotT!Il7pwS<%nr- zb8CCg;NU=SPhW3$UtdpGTVtK4(rJT9BevPFN=UfUqMX#21N(x)6QU!cAls#(sdRzH zY_~dUn_7I`J>BiC9i1J%PG4)i*IVVVTTMEJM8sutSPVKDUsjx-of3U8WPfyQY;;0u zdU^qc$yb`4Rn>^sx_f(jI(=Q8T|Nj`eT~=cvYPZNsYJwsaDn5nrNuDz_=u4GVX^UX z2`SlWC_GE3G&$YwnwEB7Z-0MZR~JmX8@%37<8~o#)5!c2r_m?`d^rYFRFIdM932&# zl$w!SfGNe%L`s9*)6m%L>**UD866!S9vF;T4ZmjoI+Rb{EOvDGTQ^;fj9)~SQ zmlWh?r6k0}BqnEMqw@0$(KsqwAXTU|Mys>3%I&UlRaRA1xg0QZtwt%Ais12}!P7+| zkq~(-7Kg**@dO-PmzUv)WIB`06^P|(gV|zpy4>E{#-^s0mX>B{O%3%m)ouVX6$ZUV zArr&n!e+6V3>uwEqtWP029w3%^7#T00s{f6$z)QAR4S9pP*GKo|s z6^TV6F?1FPMIb2T1BB#rxjZhH%Vx8f@WW=A$YrcRFXj38*!KkDX86x8EFBVJ15+O1Yi9{|F!EogO zF~w4m2=2q!{7`rS75mXA(oYO3#0m*=0pdb1?YAxky)Y+4S|<1F1#wU$5=%r9p-d*z z$fXKo%&-;6z=*{Eg$Nu4T@Yi4Q8|c9WJ1KWR49}q(#SX^@EuqM2l)Slu41uJ3`iR^ zLl;mYLdJr0gkk!JBY@coVHVIu#D|;EO)3?^S1>kYiik-Gr~p04w-UcH=mj?f60rab zh>0s&9J6Czec3Mmo=v4qcufeQp;p-ice%T#)ePODL= z)f$ytY1S(>I>^{+gO3B=+wHMdxhxjgF!XA@8XUocB*vm)an#acOlB@BEhRZJE+srXDl+m=L|jTzMo}q& zEtVUcUPz;3lT$P2FI~QT>DuKp=T1zH_4oSRcDs^K#T2K72L}f3-TLk3U7-gL#b*|l zQ5YPV!C`mRH8j@N)m2x!y_GPEI(JQtx2~=R#B4@6n@vV%N2eC2My8;NB&yU}S=T){ zbmZjR`0(MQ1NF`-hXL6eAOs`=orW(X5U}X{oQ#CH@ZH-tf4$<}H(p!(;k$oXxjj5O zu~?wD*ZYPiXHK6SpPCwM_Eb4FNOi`CRH8Ljm@N*69TJF?M@1K=M;{1W|Jgf$&p&wg zjb+;+V^hl2p8B52xvRJCT)%kv(#ihj=6Vb4h)ShOqpa}ORaLk8+C83nms!dn7H1sV z{?#f3;w=Iw@^Nt7{$xpQQ|r{lJC7bczIE+~`Eg%sXPs6o*Q(_TovpgQzP@W{u)D3R ztKOy+Q%f@r?pVD7fm|QJdwXg`Fu8fSee~|n&!7DA?B4hH&kZ*D+AUnZM#ZOz^m>y8 zJl_JFWnGO)#wB6W4{rV9eFW1khL5iklR}GY$NGk@J^%aDpML%E?yXCcEw!y48J(w= zlE_k>R;6=-=V8BdS(J?Oa#X~YFIFHZ=v_eGfr;Uf+>W8n$$NkM_0ccSAKkrnalEy; ztxC!fs{{nP7?PEy!eVtfD=N$e2@zA0ap0Semw{OjUb;ChDuP_w(>Z$i*|Q&>{POt0 z&8u^;#nv08QneH|Zpfe#SnVdG8gPjKTZl>y+4#}oH~zTvt$??_*dG&?%CBnfI&%5J zgCCzf{QmB(YZE}14jx-dNnYBa@4otI@$2s`duz$3+rvWR zDMn9y*Ua_nHy=KFaO>*zxzXXi7LUPTmOp0$pq3al6)b*K-y)(?plxzo8$Ix zzWC&mHD7+aYkzD?4n=Bkw~kCtoH%#+(wW)0sll#}CXdx*)<8yr{3L;l4%rD3H()r} z+S8L_!uJR5*!a!n!0$q$Q&A`kS8A+m8WT9>fY%wCaKq68A22`pP zLY{y_ClRp4sNBr7q=dxSLkEL{4~8B}%__i@(|BUNqpqX9Z@7P8V0fgjv$NS_Ga59I zw&fC$T%}ZM;pqlg1sf&c3k;^Hu&@XaWOjODOk{L)Y+6o1X&H&l66 z?vBpZT33Zu%HaUCfYc?HsdWaE#cEW^h4A>{;fG8p166rBsGRiVxWw4#l+1iImd@cy zH71w0wHx;P{_c*}=GrQ!SuN%;Xk;pb%@@fvI+NAzv{e{XA~u~$fqff`F3LmY<`x#_ z=cdNThDRi(qDqNOE)O16TUB#U|HzS{{?6t`kIP}yNI47&o=Bnd#Y(-=>Tp(8+N}nK zh)tys2xKDY!eR;va?(>{!$J>)9Egn1$}6R_L>i;BuDNgY=;XxMk%7(@kE22*;n67s zEX;z%lj|*2wGB;;wQie6&ZAQa1Y$Y1tf(Lx)I=WKy)AIdrl12cSw$qi*ywO~bdMZA zF?;UR^mt!;t=*)6k^)ZvsDY>Q{0C9F9n3N%XGfzQdDHMYL6$<$MMa zk15Paj0xTI-S*9!zFPIs$17HTwKY5gC$)He{lim}r_NuzeC5K-cvqcG&ZUA5EQQ7p z%5?Tx-_ZE+lT(Mg>upLN6<}>%UsHV(FW2zqRDE zEeG;x>iUku)2Gf}xiWwI+Wdv-kru0pT~=CHP)4AMR7Q7gYyZ&E$+4rOz6PgS47Fx< zYJ61a-kqD)t@?1uoA18&(T<2buDM}&Z0^E^8`p2%xjTPxroY)Npq6CkqVlmswp3|! zx$8PQdV1QMsth7(NmfcsRCvgq!1ZfCUAAOVz#raz_sifUs@gp~dFIBw`%iv){Pe-? zOA}pQ1&5ShP?TRvB=aOvLxruTuD-dh%BBR8EiXGgEj=kd`oNy;>(_n0e9hNeBJ;?` z`o7Z_Zaw_*r=K4`dU)wXf2ER=85h1QXm3zhbbNMkIajQ|MvXJqwABsHXboOCNg+m zXh>LWY(^29DiEmv6$qI$0tQ`@myZInAUY~6I4E%a=6#`Q40ZF!%a3#f=@dx+r+^}lJG9VGY_u|#ClH=MkB<=Tzw zvz@;7N~4rRLl@K8OtrnbzPfK>bbRdC;ns#ayH3g_6=r89hXwE1ylUxte|}@l&d}H# zkw#vB?A*CCSI>=)4t6(KwK6sl&k%ArQs6wCbyZNdh{;3}LDq)sXNTslt6b7G1XTUZL8zIyL07q3Sl~Mt0DO|{93Jo$Gr4}kV9#d#_ zDHt@C#GvO9nMlDxB@l`DvZAzX0+R%_8A+s9350U3-UPW^tTgK62qcHST?oKf4H!wT zw>fPVONF_@VpPi1YPm?jCgU)u?8M+LUw*VHIX5A(T=!B;8;VwpHP@<^9~g~PJw3@%5mt8f@pG9JAsYRmFJ0I=Ig zw6wL({P_L%GcD4@y&=Kj(eYTr;GLg-1X8`rq#$SH<&%^e0CirE!zyEu3zLIZEdjYd z>^FDMOwZlFIMcG zc<;?cAMUOgo|~PVJ6!MJ#%%v&Ln=nu?3mHq#T24*i2_kYjc?TFai}FCHk(#j zm=U`DifBX9=rSFuTX6B$i$^v6Q_>p8Cmg|a;m+ieWJ6+i{H!by>e%K=tz~AlevH0hq3DF(Gyei)4iiMLS|T=Na5+~=xV8J zFteF_xkfJL<8u>2x2;?D)|>AnAHMVSjIZB9A*bzJ|NcR1*Xf%x=f*0%+We&biRzl( zlVg1idX0)f;VCN2GCl>BaB$D|waXSQ3hBA`x2qjZ$`Wk;fxwk}%_El|&P{a5G+Inn zOp>~J=-gDhQz%sP*iyB{suWYQVnX)?u37T>TajZw{x)Cd=4X}V?h9IVu=d35r^oy1 z$Si4IR!X{aZ05#sKV+K=Wh?I=xCx=r7|0=b|nXs7#SYAd)>Qlf26zd+s}PkSxO=?HZFJz z@8qQ?*PEQU6dI!lTf!TjJ%6d1iOFGCXv|iFUC*QC$0x)_?OU_tFJCp^`|WuZWIi+h(`lzFFPX_Gr;s$`XU|psTTN<%h=|T9EGvlH zwfg-J4o%*Fc0wwp$CP1XlS8umu3x*{E+J7vz<5R89y6@QSd= zONhAKh#g;k{7Le}jR!}RI(AYiIyNq>Z0O4QldW<}Q7NB|rKlUGPxiYRg#@0~W~{Io zH6jwGq?|@TMeh3c^UwFRo&El#U8Bs%$Hpcc%Bep$cdFOGEk(20SfZ@@$cdpkVNp3t zZZVl%X04P`j>b@_B^lx0tzZ3RT+gZ7;})YJvkV=R6oqL!F*Dt+=Mjh;S}95HJv!0v z;gu1X3Zud5vKl3nvXXK-tvn|tbmuqgHt>&JxYVk(;Pc7p@o{nD(eaZb9=(9ZVq?*C zZO7PXo0&mo2-I4G%VpEB@TFxmHoYu2Au4#&w_nG%P24#^JE6nsK*c!H{P zaJ;9X-Y6Cl3yX=WCZDg_p_8&XVyVI5u&H@a9udh5HVvDf8Wp@_{Wn3*{`tvjw~@iY zr6z}@Dw~Iobv4&lXcg3wLad~^slCx*Py*E=(VA@*6_-jR!FI_8Iv&_m=I>ed=BW%?rBul0 zu;>&LtaU!MyeKa#F&gmku0rSNSd|5sXF0JTIirYCQE9WfItSYAG7g;wFOgI{qnH+Oq*N!-TQ?J+NZfvjAa4^}qWjvsIRLR8roGKy*FDTAoAt74fJB0jOpf(W`@Fn0FAnXvQfvY7_prpZJpcDvQ_!HqxK{-Mh!vJ95fZ0g^3~^WpWD%Ar z2FJ>EW{XLS_#22ya4t+8@jent;98M?fdKjw9FF)MA}W`GC18RO#n2GXgX58I3q}yH z0~-%^2;d_ug#(#2Fvk?Lvfsrs;Pyv(YA(Xb?3J|b}g@vF)R1p(E z7$ea|OhCFo{Dc?)q>C-Zl#w6!@nZo2msbR94QdNSLNjdh5+HwA$%Go_!V(A$jQLj3WU5zEWTXhU;+FA zJ>UsI0)h-t%b+R?Li0}u28IODf0_ZmkQpub7!-gC#7ofp zD`;U3{)s@OkYFJVF@m^iVO;^%Wk5256BAgE5Jkkt$a4IB0t?+dt9!^yU~wR3 zkSl-lfA{j*zxWqABc@(@2Hf(py_yoz<)z4f_v`#sO39P)sipAP^Gjb+xPQz4u~q{Ip@s$X1?UrD_72V zJ1Hsk<83PnxZ>A;nUs|D6a4*ZdJ_BnBI3MH|2Ulk4Lx^rl6jj=01h z;-jdV3hEQ>i4OEWS=cDLBnbV`#0bYJvB$)SM>RT~UazMgu2d!|{`elRXM!;)e%$tm z9v&Eh$1ZWY?E3$?(2zLy$2&bnDlX#>9q8R)Fc?i{i^XcSIRk#LzdYcynsjmzuP8Tj z`=-q)+fsKG2^0=@AQ-I<_-s~{RLJG?B{GfG6RfDJu8x#@YzDPdz!zyvPHRPNQ*Bjk zH0&^I)iOS}l*i?9IXoUWJ2PWzYH~(qmPl;11gj#kP_@r#Q>#Q$kyx%a+q|K0w5qbg z@3QE$MvK$r@S@?(@2!9kooz zDacCSyn5Nf`Lkwxux95Lj89q3=ySJ`7=(ZUxCY#;m3xpyS72%-IY0=5K`Mb8RSu}g<%g;Xb%#<}tvqaUS zy{C^}IN8@`F-x*`tlODeEH%}1504!hKYDO)TVqAQZZ_ylCbQiW2vt?r)t1JBfUfw?io3G_TsfONA~qL2JJ?@ zLZQ-{oxX~?hNgywnhKjzkh$@X?@fIcG?J2Dn>&x^IC%2Jm$x6D+}C0f)ROR`iH#W$y4XQ ze(>$7p(dv(eci_^l9ST~zRtnpmu}v_dG6Hc-dev+uM$e-T8A%E+tk_7SQBw;c$w=L zzx(pf8IfO4e>>fM@XWCX-+n)FpfBvj@H#y1zko-!KOdXd^Jwv-+%pPa%gPi^uz!9pA)C|wM97FR<7B&e07E<7~6f~ z-oq~*+?_Zv&>nFc)N+YZXSTTlAwTwtsw{K!q8TqUF`j(x=kr88eZ7DB%m4b~@|n>+ zw&LwuQa@RiT%vbX@4NKb{jVO}y>@1}ttRNytJG?>N~1R#jXIUMBxCK8*>MuTOnPy- zJ668`_J4nSZQ{b2PKcPdZN=I&uGG>nbm7+B2lwt>IXuwWSZ>EaQ5m1l<(6_exjQzk zTrl++2=UZ&Nl(9L3Wz&S{N=&vyI1cX2nICzqRnYpT#ne=Gjvw!mxNX$xl@^>5Sip>3|zCU>O#>HE8brGjKJGYR>D^R%W zyY`HKdinaflgCDOH$}_6R*g(7EaMau73OB_*s@{8ycw_lA}Q%NGk-aKuEJRqYrJ-9 z&$$B=gRL#$T9ZN|*T9BE8k+|W9Unh-{K#;BS93Jzv1;XF0k62Iu&^L6D?M%NhLwx| zF#WgB{bKI#-b2Bs3cWg^pziQdig^O2xvN0uxU#77Jt14p+ZLJOUb+yru&+D<< z><+I#SP`kItBypf0#2L7q>@QRLO#DtAQQ`Ea5PRHoTD?}!Tp0Nq zE$HCFe(+vYLv`qYJ6`pA4OPN15+8#RRPcbJWv&NrV1O%C(O6um1$X8O(STR>h&G4| zns_DJj4tz>8Vz1FC~@~mbvk;cJM)R4Od_xwjU_J3@zK;t1x!H95RdG~qyZ;3g#?Ys z;cPr}wltL9m^iqzj?@kRtQQ0zdc-<@qbBM{cUDL9W<*FPMh_P>LW4A06a!{V#89Aq zk{Zo;hGKBVBaw*Dl{(Rs<72U1h$bnF(FO-bO{+m2s50dkNcuQ&NQO6BODZHMjWA&S z;(Ddc!f3E2rZeIO-Ju&88EIu`afuHW$6zEuz|y4GV%c>@6WUDJO?ne%q0?hen~1tW zgUzf~)814{xJsAJWB0l&4y#Ftf33l!lFHRGmENjXgC_b(Wl9zHx9r~a1W-dt zngjNPT92cF2ij9cy$-J0Xn`bVi%E}@q}Q6Uv7tJf-t6|eoF1>u=x`XcW}{N2)oTSSS&Ta3-ZvnFMECAy=zGU86G^V3f6LonA?EGg(YlAPk?&>vGwx0iWCH zuk?5#kx-~2918e-9+$;zSHYMo#4-UNScuCj6_l3ncqOpPFd}?0Y=}sqS3)AU6NEs) z<8jy>E}PBbFq>@9nNh36@dmU329j%4QmH~MlHhEMq(Yb-K7K+zk1r@IEiDt4am6_I zN{viswb?!4us>W^TU*!ISl`mn(9+q`+||+A($U`1+!%{ONH>s;P6-Ic7w|cyB}K)# z1=%~(cV=u!-nxB9^448>xg3dFueUjzHj_!Cl1RjSa4E>o&(6-z&CV|_DCBTB@Ghl1 z0k^o6leH~5jh|o4Gc?rJw2$97Gj{scjUz)xPL6hU4-WRU_H;DXRY%GC*~})Dh*OZg zZR6TcK3+WkgIVvq`P$3BATRs$tG{~X{XA*0y6)gW$KdhteVv^>E!ELzb#p^)TStFq zduLxyQ*%>Obw$X7WrJEp0!~qG#+KEK=ez;GlJwl`zkYRruG$zn^ws?%CvV+7-{0Ne z6ZHq89j&eH!^e*9-+%o0XlGYXYt-+u8_1Az;S_f5*zocEcV8vslQc8wx#{vjqvz1y z{(5}u`mGCfk-D%$rj%N%tD8HAE?zis@buaJJ&o;+VXNMzk@Cykxe&uqt&SRAnW)=#Z(T2Y9J73;7fBp7&Z+mA;*lBYZu%1#e zEOuE@_SWUIrqCpk7X9?e*EwgJZ3qAQ_ZtHjFMk>n>omo?w(cxe2WmPGUis$1#Fbmu zM!Fi?n!HAfL#I^8RSMXD0Vj9M$M3yKZa(RwC!U+ZInnGq@a^BPb)7nWvbt0z&rMI+ z#Zh>o?W5=JJ-Bk=;)T)nSWTVRpf~E|a1(H3a&c*4+Nuv{Fjf3^)|3CSJaEhsJM-Uv z9qK=G`jC#Rmlkc?Q6Mn|s=5wdxO?^F>GLQ08fs%vi`rmT!Tm`kLTvPs-0f?Z%=sP3 z@!s42{`+;oPG#MxKi}&byl`5Q^bzkJJo#P?1etFuf`$E;VH!uxhocH-#a`u zc4Ysa?&hW{pTlmHiUcBIDF>&aq__xkUb}M9%-3I2A{)O5$o#c?CI{PuZj4aMx_ujOKCwt35Qd{E8`aBN($yGH8_RhCEUTN@&kRUxNVrIPV^LXk)y z5Q$+@aAM22oRY%)?2NQ+o0GG$a|?=ON~P6T9W9SGwlr2%$08m?8x9y3yIEs|B`{h& z9-G;VMi^fMjF~~FRFch9>mVkKJhSky=*%6$Nx+T*Whj6ju&_e0SR#>uE16+~ z$%25<+tCrvj!_ zz;^4jN^A{@OsOGyYHS+dK7y1WK@QPowb=+>LJQD^87ydephv5yf}|LRDZ!Z{1c#px z2(g9nFOk4kVkFdPO_t_qhUH((+4fu0$}%vQV8;}3>{KAZ=g8U&QsUP_`O!r>B< z9nZ_$xpm{Zb!#_m%_tG7t*&5Ybwg8oS4VeeOH)Yj@wi;nA@J`}elR0#+>$ zwh*`)_`_rigc~}02ln=N#lkM521i6e$|~iQl$3H|Jc_fntoUH|v}tn|ZOAP%`67)? zZQVWl21mw52D@uRX1SoKq@+Y3kSG;KnS`Prvp4vhBM{gfhFgvbnvlvoYp#=zw`t z7PBYdi`KObAHH(${=+ZtOq@D2)Yse9(NR6yvbFZ^!lhO|_%Zh!Ug!I!tMoE_W0x2r7{@!Jd{fxoFdNj>J;a*fTIPy1T!prLCd9JyzFL-`d$da{Sz_FTVQvs|WZ0bo0`w zqeDII^_3y7-J}v0rLS8&Ys#}fnWU5S%**dAS({d*a#zIK`v!LR@7>+k)7#(M-P_mK zzh_`*cw}^BXy5MMuD0g-+Um-1xz}YwNTycM&g7OB7v|^WWM-tNrKRmm&)AiflUq>C z;gty`GO|&ypv(lq24bIE%od8#aKf;|Dbzv%bVS&tU}idQ4{7V8kV%9=q>YWOjZ;I# z20HO4q7*lyWQFLk{4k7c1&$KVCo@uLqgEUQX5UCE92p#CqKDAc>2x|A>=?$+AQO*H zA1ibt+RRQTY#xz?d1A+vWMtIn{84()N_LoHLQIq-U~(nGP_mVz7AnjVlaTDdlZ?cV zO@nEU%sZn;QexI{CCKryxFK#L$UdONrG&mvm?dPy+2lzPC<*fzH@Bcl)||bN-6aFb zdNFg(tT~C8Fxl}Y5|NBN>jExuqGYr|hWQ2-euFSxs2bBEr$y^LxiC!kZ1xx(R~~v1 z3HqTVZuAJMaTkF~rYjo4hB4*|=|~Ewk}j+pE}((gu-CXMsDh{`uJKSSJ_zGTV>C53 zGhFBu^y2y=IcO{!8mG-xjWMJduxZdWz7fz5`oI!gDM%)BM77bbd*|_e$W}rCJSlUfKUp60}cb50U1*4G^@pi-C+UN zfx}YD#e7a)#`csoOBc;wymU=wo<#4dt8d@k*-}&P)$sYq`szGY%|nL|4-fRVRtL+i zdYxL%2bx~7aQ2j^nK5|vgRT7Xf$=Z?_RYk>t}1zE>e^+iw(^V>BUit8`0(Mqi$_P> zD|~+7wYrA-hL+~qkl$~W7pMMl#tZ+##{b7!V{q`srSJdu=O+UN*$ZYYpErL~cKGnc zKmXU)_b(qGtT4z*i{#$wuKvNX;eC5rD&5Eu@p6+FPJ1Pu2wll<9y)sM(?5N8zD2xz z(cJeo??@GUhrjsl`)@xTYVuk5Ss59{=C*_5r;m*dwl|a;70BBNk@TB4bLxu}l)RGb z**AJ<{P3-teVWzp%zA%Ceu<#G=jwlc_wZt~OC{jtAbscPzi{p1_)t%*!lMxhrD}~h zf6K@7-kbV7&0xKGWchkHzmLMn^}u;jfTkX(+~gh@JhX;ATzfpm!k{~UB5qZ ztfv~L-6#_)4JLKTw&nBQd;29CzuIx~#`vMV`_A;MH^2Vu)CI+LE&Yd2-TC(OGm)%y zt5OQ(){3s9x4xVht+T3h7Q0!kG3eyQDId?B`SuGK{we*XHkV=XQ*UuX9RtVX@8G-J(@xiem;jN@Y4`Tx9p zu&=f|CfYIQsn?bi4P3i)?bP8*r+R&9AAYzpuVUcHnX_k4A8K~Xcv^e_@SC-glFUuZ z7tWbV-f4z`PXB68Uj&kTJpQkyr1s7`t`)c zk-ou3ha_d;+C2BciJRvS^|ge|dW|6vjaGTpeB?^;X<;4<@Qes^+jYar~-PF?u? z^i<=?Z$7(xsH?BRs@%1FRi<&zwVRg@_caI2FfQK8s;YoNRG6K$BYDHJxy1g7tm@Cc zJ~r6ouQ2S`GW*x_vV51mxqW$mXJ=R^+5X3MMc%QS6X%CJYF%(>*79g|)T`#@=M^AX zyL!b2l#^>#q-(3|5;v zQdJqUNK29K&Cc4n;iKQbhy(OuNz3P79vWzHyM!spbKhLaslD;=#<_u(I=e!UwsE^K zdi>7y@xExlW^%e*6{J5!X?}4TuOvV9lLgaWdNL{L$*k)8e?E7h-eM?A-mzrb@`CV{ zZ|+P$AueY!!&4u30?i-PeBkFG(+zHGJ{#_`V9Gft#MUY{6D;?YWy*PINa^nDww3 zMIzVk@iT`y>&hK&q=Ep5%RPFLKr9Ck*N93o)-U_;y?5Vy@#&wwC2PKS=TN6xui@kr ztXh>JZW>2C-_{&**yP-TLW#3+^yq=T&6Pf{+irKcy?(D%Ete^Dln9e^GBz(?GVlH0 zzxmQLPt4Qry?bd-jm2i*bF$a0&(w7sJ$GbxM{`xVU0#x1D0RlVy1ROjg(-L1oNg2+ zfPfih-(lLmnrn0X$iOdhAxhEGC0iDHWFH zXQpjSp;Xg?Iq$x+w7^+YTTua95G}Vzxm=+Z=`EMP5?TNHXwZfHJ}{|Ft})tN9uGd% z1w4?B01sjgIQlraLrNXsPJ-B*!4#HUmxw6wM%VxjkcGy8UoN-HNjGO4g%N%t6afqY z@Wk*Jp`$o50yH7_%5VpTQ3Pec8E%+i6zWcKvJ@$=GQ{{2IRbH`)#3KyJB6G0Kz0^( zl6xmCghV|M0LB4HsqjseG(s?j5E2Dd6s(a`CqSb_z*5F7Dag%APfc03YRwLT)gSPM zY8vXRyhePXP?7I9+TkNZh|G{xRZ5W1kSZav!HBg(+(m>-}8iHS{%l!VcW zWCIu=;$%>nm;!HT5Y&=d1iVs&let+LJGXC3-ncnKVD|cb{t%KdZWBUUGp)1R3*&%q zrhuIm2!T2Yz(=T@tX=78sj0g-N-MG- z?($I3V}W|02V_JLrw05UEI8s~BXA%sBB3n`jG=hU6HzgObP5^}H)9Tr2Q3vXgIFlQ zH#fwNMPQVhlbu&0(hxerLVFz8Kp0OYu4fXH=>`lKkYh_b8B@e{$5hC8;M-B02R>B^ z1^7;dZ+oSPcabJ5=8CYEw3LtL{RrUV z0ogxX(KcBUy#cow-vl3G!q_kd?85j_?W9=oK8b$Rn&?YM8ikZkvnQJ{DNuqb>0^>F zwg2-1oX_Hbe`rk%Oxz}?@rWR3$GJV;4{wal|5ZyBkBE?5k6s=4({$-**#Y+!tS=#d!3 zS>Xk%_NXxN;%{s{6K&KvQK%8MlMV6O$?EW|;uQgcTw`S(pru`r~1;f$l%9 h|53xE>L1g4G(RR)q9xIjz2U+pnW&=~#?_|R{T~AWZf*bo literal 0 HcmV?d00001 diff --git a/CD_SND/WAV/CD_OUT0A.WAV b/CD_SND/WAV/CD_OUT0A.WAV new file mode 100644 index 0000000000000000000000000000000000000000..9fef363543caf6742338341caacd87b389d75282 GIT binary patch literal 10036 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 literal 0 HcmV?d00001 diff --git a/CD_SND/WAV/CD_OUT0B.WAV b/CD_SND/WAV/CD_OUT0B.WAV new file mode 100644 index 0000000000000000000000000000000000000000..5d6ab513b48e3d2f5b64416aa6cf304f598f94f5 GIT binary patch literal 2566 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 literal 0 HcmV?d00001 diff --git a/CD_SND/WAV/CD_OUT0D.WAV b/CD_SND/WAV/CD_OUT0D.WAV new file mode 100644 index 0000000000000000000000000000000000000000..1969f2abcd5752f2f4f55a1617b256293a668923 GIT binary patch literal 9454 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

a*iB&kd{BY~8v0 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 La5U%@dEWfr6k;`G literal 0 HcmV?d00001 diff --git a/CD_SND/WAV/CD_OUT0F.WAV b/CD_SND/WAV/CD_OUT0F.WAV new file mode 100644 index 0000000000000000000000000000000000000000..def863c37d2dbd54a4717ff3c2db9e11e1fbde4c GIT binary patch literal 6924 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 Z1E`2;{+HDw^V}cw`%4eSe^DP7{V!7<%X$C+ literal 0 HcmV?d00001 diff --git a/CD_SND/WAV/CD_OUT11.WAV b/CD_SND/WAV/CD_OUT11.WAV new file mode 100644 index 0000000000000000000000000000000000000000..7ac88a7271555a3576f9b54a049ca0a87c6a476b GIT binary patch literal 49652 zcmeEv2Vh(Exo_Ib>upP+tgvZ-K-gqK_I8}@ICdQGy{Eh+%aSEqTef6LmMu&2kS$q~ z_qOAey&)k42z!*#7TN+Wv~=CRUf%EfAIY(kz=hu4d*6NU{^LkT=lu8h_V=C8?OV2d za%|3=h>hWa>3RHnZeKc|KFMO{W+;g{G?})M^RBxQO^GGF)QH#yW@LY zjvtrhn3esCAJTGZIs3!cm5IA4y-GqE{G-3CBzo}oCx8F_-+zBi|79gR{Tt~mIV^yTgt8iUI$}-1z%ugRKoK%6dgtGt=~veCsLp&jo7p zmE|VOU;E`P`S1Uo-)y&CStm8^+lQAbzA_u0{rw}oVrr&G>}#Ft0a|5$v$9|6)Xb~P zItbV(^QW2F*tN|6%>R8ANXiOx&%X_zojE1`MV!_9SwH9q{AZ@CwZ=Mh^-i$4zcdQU z#NDC`q$^hEYSqjduO??37LYK>m)9vkVEeWE#FhlR$)J!W^VUd5H= z{~>q$EniU?ogv?ZU-tDCw|%+%XATu&Alz84I-;xIyrLWb1vj|!ETgX(N1Kj4_vZru z><4mifWm*_`-z*=4}6fs|HPNm4`Qelme?12h^yJdzU=4hhhO!JZ7n?HHW{tX*DoB% zw#zw&%NG7>D@I+X9&ls8rSIa>*Ohmui2peXaM%8CdN^I5?+Q8S>T43$(<=su8<>C@ z{iaJc6|An=tRp55Hnx&~0v$v8}^49JkGUTaWEimc@VDzbRQsl&1|k{fsWCxtYm# z>x%m`^US)wZ1A(5eXAeTJO9WpYyQe^`fBz+_%}O2i*QA6E?>ASGJKO8G^3XiH>KR~ z8PhwXZGV?9)s5WTlFYhAb@-Qc0Ou zEE0*!NPJQum&<5U%B2zsL?;#HGP!~!xx7MNUP00nNm+%o0uPZ(QZAFBm`qwGtH5MzpMCK5vje)K zm_4D}c0}{*J13s|*{7epf8qF`$6i_@G#HJxfun~GO`SS8)Z=QdGiWLVg}EtlVZobM zEq?HZf8y$zbM5vtf$Q~u`QnpbesFd`mmeLxXID^idF$w@H$VOJ7r%P{-Sfk34R%wN z!P@NZ9vay{Io{vlYOdAFMTHr$p*sRrJo&)=ci-|IUuARVZQ&Uve*M=k{`9*K&U9)8 zv0;1n#PSV2hhO^TAHV$aPoKU2#+lwmOjK=6Tkq)9$o{EOuft+e^K+9UcCLQ>!Fjjd z@cr-qv%ju6_pi%xp8VNozx(qa-agY_U6B zPH(HtYSxI0vf_5GU;5Bb?zroYTd%wJyO%0k80mcNv(JD3<(I!Y-)Ytg(&J+J)z0C! zxVpal<;AJdez(Wf-PhCZZE3XD7_{;-K}OWh)sNkC;|{p_dD3=Vg;dtALe-qvQD#ZaYFmzVN0BDZf? zeE-~=Zeu%Qy0XU~SucL?%MaiC?Drp@u$rU={ERG_ee&XO{)(#p_a`4*Jlfmk>FVg{ z>+f_q>=uK*x>6=8%8cC;u>A4)^X|Fz<{$rPM#mmp9gx%W`#-+_vtPe|zE7{`3(G~i zmho3U{``+${_S@kTzvj$zqiBX_PD(co2{<8y0TIu74Xtx_iWv;YRQw2Ex70Ixi?&z z{yE=WyJU;%gD*ck|NgID8r3SKJh4R8bl`(O{PAD@^^c#tbMEk9ANIYwqodhUTVv2^ ztF$UvNnT1+$hM7ZRxMw)WZ|Rt-E+&0-=7}o;?OAm_#glJ{_F2tJn5>^h$?iJp$k9z z{a^n2#V7B*etKfKudlneqpitWTdh%RwOXZ2Qk z_gF++w)c~N`QXB9FCO*Q8l@H0-hiF;Ws~j<%Kg-qut#DJ#M?%sM7$Vs5SC3 zenCcT$d15(b!*owU%KR}#Sh(i`)xP*J9k@5L80iEa*SR0>DwQD z@h`vo@Z}d@I(KAzWMr_*SzleL(`jUKjaFV-kewDE9=v1wmVmV@mOT0RL-+sWjvM`R z_noczB_i)@AHV(53(t)94)nL$yvJXD`Gwcsd+&{x&L0~aogC}1*O{xN{KDLf)U?$2 zu-&@?o?iIm1Gn9D^Nm0F=ehUZ^247jd}7I#ef##tXJ=;Q74Y(S1%>&%LV-vkQ|pZ8 z`ocHV6M~)mtI&%2np@UQ7`-cbnd%Ca(TOCb}Hfw#Y*<{e` ztF#)8MyXK9fkw*3BC$wNR8&-umz$fDot2)NmY$WJm7UKo5eQ0zBB@MPE|C!Y6^kSa zC1A8t34{bdDUpc8<&qKs!N{V*!h9;9lbw^BmzT#XN{WjL+r4w^#ubYmxp(f5E}g(@ zuDyBT-dv&9-eR-$9zS#B*u`J|;cvd<$9?_lU;gmfC!c=uvscfbIX2nvZmO%+Vn<~p z#qJB}+kcH8eL_>*}p$Q;oT%#$c?ix7zGBtF_)@sWll5 z`bsUjM;NdSYbOy&q!OiC0@NrKmzD~OiUs)@X(@?`@ll~W0(V3gYxI@X4c@NK?ru+` zwaL|LtE;!!Ecme0)YM`#m}+WF23-{@Rmn*^0i5ZZ9$XTUfiVDQ5^}~E@K7u);TQ69 zcqKB8T2*PRwba|2o9tG5W1}5?tV5S;Ox1cls;sKw=7h~CZ8jvD1EMIIGK3MLSPv`) z)mogNlaUe=7M{$PDdcKneS@RT+tx(WVXr5^VlbMFdL2!&zFJ>xG}mE1^m+p}GgeQj zB)S6KE2Fs(i%SJ1qO#IrY{ZPDsF3YzS8Pd>Raa@vEnWR16Z^XyjSg39ldZniXf#_a zW)m>B-e59RRq8O`mKvQ#tcrn(w!O-^UCz0OdjueI4xt)ZG#XRNW}@R{{&hiOy_EFR4yszbuKdAV6> zDe)1(o0mOs@2;A;0e z8|#gg+G?Y*nif#0r~tWvZIzdqg5}={LgC&Y5nOvbMWxf%_dN6AU;g&{i#;`ZQ>{^1 zlAWHfcJ4oR^4Qea_~Dahj!kqsEM|~0=)BHkb+j~?wF+5zsh}_;Au?n~!0LtbZ}Gv% zEi#9v=g1p>`0~rYyzVVaOGr#f&&bFutm?V&>)(I=(W}p%eevR{zIvs!qO!K3!CK$Y z>hXG7>Z{5H`Ps=4TbD1m<2pZ;aG!AW?5nT*{I`Gm@{g}Mvo}2c(6XQ$xv8=H%&!3k z{`T|Z9XJfO+Ddta*3#BD)bDAiHP@Q7;@tRMNt;qC*O_X~HMMqE_h7%b!Bhn-P?!<3d+lR)Ugsl! zevsP#!Dqku=-oFi9Pg>g3Y>TSEh~85^B;ct+3$Y$*{|L_=GK)Kl_El-qdTmCHOe$5GnmUHYCx$y3YxKHG5OaB{v7uX6FM9BHj-Xg5JO1e(fA@>C z-9|Y-CwALY3s*;0PJQ^-FaP%GOT$*JQm#;GtLvKFJ;TF2t!AxKsa918d8tvmHY{KC z(4DLsx5Rqi`Qp!?ygpPT&d*Mb-o9~TsK9yQ^Dn>r!&_5!InaPwUkg~}?e6Jtn6+{c z_ma}W^vG?i7CtnO^s;m2?y)}q>7PG)cgiA2PmGTV4cZ-DY&-b#KmY3=KRD7PE6V4~ z^wt)qvkg0=xwc9{Kv`6r6}@Bi!UgwG1>b!l%lq=DUwr&>zcx2MIx-?OEGk3Zdi3Xi z`15aH8?6=PC(I zz0dvP(~n*p)E6X1g@x=6jmuFsA9(Y(pMU(yXuX7&%`2<6wRLoLce)#Ev~p<~aHudp zY0vtF_s_)){?o%TwTIsNZV;!(?h6eH4o?;syPo~f`s%xaB$V5qpDz_QvO_T93T<*=HX;*JBdq zW)~{zoL${r?M}N%D+hK4O36YIqG5@&jGrB| zb;;e|L)jm%7j~Zh>HBXy+iz8ib5i$gT(>c#pl5fkabStp0$t6MSt(vTwv}R+&{8^u*X%WEy;`s2~8-jb`2joapK72 zKsy*(;8hR=hDrs9iIU>{tmKI8%NN}8y&v4QCb6R4;dXcS^mjSUY7s9ZHKRbPv$lA< z2ltN+bu`xk0|5moD#Rrq4ze;*LHmV=?%ug=M{sl|zf3AA6^dk9qsaiIs@2!j)qzjY zRhw$-YE9KTogSFIx>BP8A*IzQfgFiK0J;U81Qxu6&ldQEgt;!`)S%tiUssd+E*(y|3raClgtgfyGEk%?Zp<@sxMBNazSIEoF z&P-2^kBQhDykkq?j_}kXsY6X=qi+H~FUOa?jyYE-7G z!k#yybxVCcwk7dKDjXbsVSa9AN?gR=(5U2GeyOBfuBkSgjaW65B#DuvLaD9N>8qRGRz&ZFuRU(WM>{NDER&D`b2$EDPQ)<{_ni1N!jO(CEpesU&*_RTFUqRCRD!O) zx{;ZMxdE~}Usqzrvl%tdxI44Xt6U@JH|`P@_cb!3t*eOLuhI@HdiDFW?)rxP&E{xU z$$$Tk8B=~mWwSdp``0&~fh%gg?8ar)UiS3g^%GTpi`xIqth8sQ(`6l-zVAQez8lDf zBhA1Cr--1>Y3PBcGYVdI$pHz1u`JO~B!vjkGLU|Gg)~ny(sZRWYV`H-@)}u{ zw8$tvvzV_&hEe?UJL5TWPY;}7Ce~H@xHOTh*o-p%&fxxZVx7K}=hA%o5FXXY(xqyz z=quI1Rp{ID><8VQu9(Z=TPW%;hm}$Dta@iH6jk7>*ngC+toX_u>Z=*`(yr$g40F$& zFm|qJ4QUxc8WCXu(h~eiVSY|#MrLM4MpiDbNGO)d)K#GJNg&Ay$XHF-6-v<4jNSw% zV6K7auaXEU68DnqQv}kFmy?kk9~rW9^SZztyLN^q=L^a!YwRtaw$>Ktyg-Y~h?FgZ zIzew~bhLWfJ32btElmv;Bhf~5Y)NrZSyib9{|G50(XM;8LstFty4@lB;)*quHBD{p z?VYZM`nqaJg^Kg@@{5J#8oklt0E^%Pb5RFY32Yc>M`?wMs5W9X)Tpf}FC#fFGHlO| zEdd+XZH{_cpdc+kCl~_3i-vQ6)Ihg#SWgWwWZZzg^X8C)GiTI8mfz^ zII6#-ASWXg%uZNn(2l^(fno9SsYP0o$?EjFoh=Yy>f~U$gnS`*plY+VvBl|dv^3ky zMmD zeH7S0vkh!i3pgojtx>O`?$LQ*v@PW98t_MAC@R5M#Y9nc+X4f2$0a1^DvTyetJmXl zHr1Q;%Cb_iu((8uQPrS(uGUspiygw^N}?c9ot%-aRGnH;E-op`%Sua(i44bRw+3$9 z5tERZRcb6D2CuE2rUTub4%iRhtq_P}Tc`;uER>6S9Ky_{x6oF>qKYZN-F= zoU4wPm6{M8PK;;3#tp%-F^N32$z*q9X*~|;4^?F%5x-C%E|+UfmWEcSe!Q+GRHp-_ zj)MwjhFAm0-Laps7Dd>_*eSugwghZgw>dm2Hnmi5tZixU?C9_`H(09WWf0q;I*Ckc zsI@~Z<8F5~L*QDi1 z+v%v+DHKvcVG($ia;4T}YlM8T9p|M9!Vd@?E1)X^Pr$K-;3Y+1eA5!5_XTecSig2_ zaLC^H{4yD|>TMmp-5nk6E_r$Qm25WEdGi_QQ|1LPsK5Yl7jMI~Uc@(Yj(3yZ)! z@S&;#56U=Lk{U1;me>G}SHg-B+oMM!1p@I-U_hYd0Z1TN$YchL4W63wP`tZZ^nctTl`W|2Ei4S0NH&~hJ%vWB_tkZu@xj^V$-tMIq{8uvz%&OY|;2-{t zK3(3ee|Q`JWfgwy$iDXBe_5CR!yASGh{y;WOB_tlKfnnj=1>tVfmno-g+UwvxrQ$Z z_)w*juneLx38Z6?n{#4Hf(!sSkonLbK?!z_Il=~_5FAW8{!lts8%<`Yh)Lt$=IQ9{ z=<4bMASW~pc~?y}Y%V0AT=KFrQW6uQBf>(0wrvjBylGS5&fw6?EZ#*FXXW0)U?1{)e>PQ0y`}6`6Hm4guZ>c7nzNDVCKQ9~&1FvM(k&GCDOUi&rXD zYpN{`4o7QeyW8XKXl-r*hBg@?D1~eig#pg74A6^XD4<7x@e`t>V#0#Mqaq?=(lav) zO3PImLp}7$ZJlnn7i3dQYlF46#-!(jQV=K+sG&-@8bE@?$Hc^j?2V3!h)T%J%;Aeb z_0(7!nwq^{mj|>1CIZuFHt7KUAs;2NQw1%0!Rb)7sqHWW_uhA(m4sK-7{T3Y&yP*Dw{x%gIbhh>490jex{7HYGcYClo8y zm9^UL=h*9*h%j^q3XL9wk zX%4Cq|7Q{(z`_I@Q4^P_K6VA_f)<4c7ow;*a)cH3)xZcCqPJ$#B}AC`NE23`C??uj z({*t43{fa_n_xdj2_W~(G?P4_jQ>`miYWQZ&HUz`;DCK?;&S;vS$Y4D8Q-Xa)x&6; z>H5BgpkO59j0{ClwS-&2NK{#NC_Rpu+l^`C!7Cd2Lp=7q@|;WnRvmyQ%Zq(A}Z zMgX5vlMuAQT4I;eM(54|b}k(N-wgl;=#2=&SK#!Mz6eYz$D)u{Mz4dl5X_xgS|I`; zb3Ho{BMjd}#W`tl`+@>jFL`YKym|LMv}o;)$ke>z5&{YWVVO(=g=B4=rOsld!YwUO zkOPk>%L>w?f;KF9;PxAScSG88|(SS8i?_ zJNd%vufKZX^r4a7c9^Bs8IDq#Giu5TQzLe5Si0c0A71;<*WLg0K7ncA`13D4 z|IEPwkG-a#`|)?aJLj4^ z7Va&n9X<2n#j_{&w>xSLRTbjm%!KI3gxs?Fz7wy$`}6l-JAY)P$L%C8SS`v+4i5@g zwP^m$(5}z9>9HWbdFa&h&!0Td-)e`2jSO1*=&-#pxw3}+&%XKo2k*RidTJ0T1L6n0 zyd*0=d{@BAC+=Y;K({^>r*<7Zf8p7K!(Or+u96m}MeN=cno?FjboR{;-hcb0lLtro zdpp}(Z3eQCC57gyN9R(r*F3aC)HwX?*)sggy5aq zgA$50OeO zDh2UDJ9g}j=WFcVp~EMheesPqFJ3q`-sP~@0;OV0WyFO9EPt3a`=clKh-(`9hQ@|Q z4~_RZ4dSHW?ZKgOMG8}cYvkam7v6mL)$=F!ceONP{?!#FxoHWJyEZQQ30Zo4Z~m5a zt-;>jJ2ZCe)Ofc|#fu4zj!)v1R_IL5kt63{fA_5mXAX__ddM(GCMwL!N{tEHxacmF z{n5>jZ%Gu(%xyix6DLmY@32>uW+kVmBxe_v$h1wp<0sC){L*u0PaGWT_BPg3%F94A zB!utWxa59VB;7psiS=Q;lB(8@fsq4;Mtd-qlH!7_#I&qJksPu-ls@z9*=LSVjr6v` zdP5;9&P$GhEx-~OcHMB#{mVD(%g9$Zv~~B5j1Bg5wpd`(R+0}Z%0i*C+S2S996NC2 z$f1eRfsPhSwMtS_n3WhEx@+@loZk75EndGlA}Ld1v^iZ}{XM;X?an%5H7r^|Sn{Qc zN~6_*5si%v5B0V?8_2GP07hce-kn=kFMM#}(<=kFMaHLf!&Y1 zOju9=eK;hTHdoK^$k0$9M3@aQt&x<#@B__nS+``t-H$%;^u{d_aTzjmliSlX0Hd+) zwmOp@CQp!k<&~7lb!J;j=g7q5`1o*NXIqm=B@+t@vXf)>?%uY3>4H1vFI*B37?zwV zx3+e)_YC(B4YxZ?8m&~o&&|rp5mqP-buFI$iG$eNn3=XllqY3B6z?IsHZ6PPp1T(> z+7K9&oGrDrwtG8Zos!9a}mKo8&YV&V@Z27YF+fr59#*U$h$)m>xTWbxKg7oBs zxTF*wU#PKpx-lhVqkUa28=jP7Ld!(3Y*1=-RVtY4+lZjA3J)e-&J3u6TPZJu(s$8%t9bt zRmr8IqU=OKnx`MR@2STFWVHjYj=`RUen;}=o}my>ISE7RF}gZ1`8!9 zE!Wr7H@m#vj;@YYhCpRf61A2JOC^kTfqbhDHbv9ef zHDr?`8N{SveG-$Bl2fzt3I(wC zAk9W4?CHr=ob)B&hYTjzrPo<3F!_dcx`8ZQ881ZaFhnabaE9O)eh_&)UOo?&CoB~T z1lX(<5YEFwAA%A}H6{~Gu)tX{u8K_Dr{%IRZDPb4V{xfoa6^pAg8Z1oG~^8?789vP zW@j+Q5td@*!Jsg)j8e@hcZgA|)IpZ4CVovV4s!ZOTjDOV%o z>%sj<#bD0yLslVI%P~L*krjlIRJ8#n7Qi!+D~1RB9RotlP+MK@WF0 zl9J;R3^ZgxD2-kV!D%uBA(FBeL&6U$F90YQVB#Q<`Ar321c@3*4OfO~qsb(Z7Ub~s z#RUHn62_Ad7?d&hK}&!l_yk3a(*V;SX3GS512ht3yaUb;ngU|rBUZ9O*qIbq`D#)l9tb0+hSPo?f?EZ9>N`*!byD)O#AX`K7fWaKlMjbv8xoJTeBKxt0unKFSD-@H)}rj znI@4Em1GrCrrC+zp7p`y_urbGd-|9E@zuVkGhKEuYaXsBcv)ud=M}kT&)xK6%02z# zn_N)t=@#kwn-oGWG{fWu-zYoFgqo)tVi(`MC~{uWFSee(k4vY(x8><@k+~q5uPV#n zT?XBDwW$uq>V!1_I$${pnPg5*eldXvA+Suq92Q56&SwO)DDXj05R7 z0d{dJH?nvI)Fgo!4lxOXP@KVY61Ni^Cz(1kMPxmK{*TyrrT`?-78+q}6(TscGm7)6v&SK&K@);sbrj|>D zoRU5?Xv_L#Pd<3hPZlf;h{%>fg;`UjESIVbmNs}HO^)p!?(c(}smpFsi{Muzkf^H7 zFhYeGS)qoLM&`Hz~~gZ=G@enkgaQ%K6?M1H(h`GeM@%6394%9YOCe&0n=OE z6UWb-JAGtosFQrAYQg@)&bGJ|s#vBChOpRJ-{d4&wbKD%H)P!ki6A#McJGc&s}?^z zZ|=1}n0xQCko5AJI&-xW5Wk|{v;Wx_U%GG_H9{C+tFO^ih>8k};R^>qEGmI3px)Bl z=7mW_b7NCe3lzO@q>%D?naLpCw{KYX_SvSY@tO$%MtFin`9R6VE^Y z%(3zQPRN@ZY9SDS4^$~_2bhiL6^b>`PIq^CS{kgj##RVr-A!g~c}W4>qY|U`VC;|F zcgM}w-}1oI+medqIvtRXP*Q2{o;-2xxzmTo`k~EewnG^XZw}ZmL&eO?gcqPxZ+CZf zcR*2YYjn2v^mcntsZ31z=Xmh_s~10V|6Mm-chmh#whTBe zo_pgxOSeQ9R6si~ECQk5)H8YL(4nc(;h}-vj@Ejx<1o_IY82x9%#`GeVwt|a+0oQs zv)P-WiidBClbB}>1RptRNg%~At4}=mliTOsy(n;BS`nn$B|@FPpKIBSp7$G|Y7_Z}aq5n8~AUMcG1*94z zT!dF7B0*su4BOLFK|+Q@u?jEjzmPe@G8$jZ*ihq<#{!-z+yL?F{|vSYMXC{$o& zPbVDyN$|IX7XhFF7y;1lM0b+>js))LHQ5lC@(c3d{fgrsn~;!@l%AcFR{$ba##L;# z01jYr&|PxG)KMYC5-5YwbrEE7Bu@vw1#<~NJ@Qb5JfCP`QmUbG%r?yYlj5VJ;}b#s z=H}+|_#!Dpi!dKI)mj^ynUiBZb(u~(0X|>NV1GbPm6plj=SLo)WG7z-`x{W;s2GZg zw1k-OkR2OWKDBa3EOcAq;=Dqs)@W;Wxx77tqZ8wUo$wMuf1sI=i$FW)!AqA6(}i+9 z)IZR;U|^0`Cj^e*+4S%kfh83g&ByH9vvb>)O>0*ye)Qp$d$UU9I#nrH5T&Wn-QL~P z-8Vc6Pjs7sX(kPNIJT1!H+gDEH8l+_F!rgdF~dlu%?&{rAR4$OjED?o5~KHpz%yja zrZrDL`S|+18NdxHNl~Fls$@2Ksxw4oLh+CJTKcVYO#g2}-i<_zb_*q%EfDdYzc z6BQm7k(^yrS`Iad6uRXq1Gp_xusWI>?C1~_Tjc!9cp*3yV^foEhf}mLG{&$PZEw;S z7UqLR%FW5iN>58mO-f41%p*Sp7?S}zO2E7VY0=IDb40unvx{M-F(ic6F=H8^NJ_-n z&>r@wV{th7=s6EP&xF@XYHBi0N!1|=Hn6&bQ>_&qQ%y}x%}DUOvcrR! zPEH-vti+Px)Nxua&bgMchpfxlS(%jJQJS8f4wV^%MA-lxc|7RNz;rOeK*6958UddO z-)OrXN@Dkpa$>NHbk!{>_G2|>_}$$&csUX(&Nm7!XOd_SO)!J8Zht;V1r~(TtofL=q%z|h|NO-j2{FS z1`R*BG|p9qSW0l5WDwx1g#jj3F%}6#H7N#&3j}A0{=w1!6c1fsIj|(4c!-;2Jz|E7 z;FG8|qQ;4*B&TiSwiw|?J`F^|v4tYu5h0~fF>;EU!5>E-ktYxv z1iB{zQwfF*(3wh8FPVolwMdEaluAaAq0i_)7(~heev>`N58|OHNDEC2C8~)&*flq+ zEbI!Vi2W0ge-Saz1PN)jsbvfa1C#@^%Hhz8Wx*$|*@zh@gljq^V9KdUnhnZ^?qNtY zGE6G%Y;+K{&?L|wO3+i535px~g^~~!&=9BwMtHIuv?yvqwPbDw-V(SEieCzh0RJr_ zIoa00+9I*pqV=Is!d?+i#o%}0sE&bxm4+IJOhpO-KuL}Pxe&NrtRf?L6_`bAPPC%K zfyHiwNh@?w_@X09I~E8PDAjBRW`G$4Fa!8n+NEe4gdBMy(SgPGr-PKs1SilS7eIv! z5)lap8vhGHfdeKLfX9arh%7tFl2BKzhaklW->MqmDTrg(X@J;+n%2YAfGl5BBn6;Q z64(&5;o*%7k1^~Lc=aPD0d!PIGPusEl@NE)H=9nFj}k2jq)#(L_ArpdAaN2c5?&y& zQ$mjN0Bb-lWZFm5N!$UZo3<%S#1CMvVc=LRh#^?WA7%xDdBj|jWe)ZnWCr+P(@Vyy zjH#iS#vkn(Tylqmofjq~qU9n%7r&4^lt``%xh(N4Vmjb-=n0Xmut3<$T7yH-H~&`TD0j^w2H*r@P*AwjU#*&Q5_n3j?& zlF7B^21l#AyQjCer?&@$y$iHEVnNg)bORzERO=}c1Oz=qDZpC|AUP!=Auc*HeBYj+ z?ZDjYcW&Ge6d44rpyAYrg zD3C0!i6?9SKzu8o3=f1nSyiAJiuc@p;U9ecz1Bb#X5~69i5n@kg!s8MG%7C>?R&0OdiEX=rwuFiK zxk_70n`iLI!Kvd151$+z9O~(AHrwj7IK80Z%avroYcy0L9)PLZ1p1*0lpHpINC4X@ z2%#x%!m6c9HY~h<_13^mTeFJO1qNG-vvcy`#F0Y>PaGH=?(cOWe1=Y54k0-CH*-U%GPjEOymaocCg9tC6To_&C3qZn73-%Lrnlwn9O*4s4 z$qN#lCiFu{4ZsYCo~p+=%?D*eq)m1%uK*klxqZS`khla3B`g|tCe99-n3JIbdJb?( z^%E$=tgy<7)&MZ2L_`jed&o&WAs5el9!vT8g=oRYJ`py8uQ*FYD1oG-ATo@VBB3+ARiyyNO+kQ zozaeOq8Q=CVR}Lij0zyIPFRNHr8w_eg69lc1LI=jfzkpp131uemL6yb93tC;L?N)A z5=z2h;VvgHd>)I!fn0{K|5e~VMPlHz%x)F1+=L^3p3~Cgs8CK z?SUKDty#5V*;6Yv?uRRANR~y_jpfXiTU}Twx z;8(8Q^~biVTy9nF3YDA^?z%EH8`PB0_fu1?}9ief##Uftxq)2#!oE zs?gQKE2p~;78-5MFy9~(A5b~QI^xgCZQleh6{!ewUd$It)YUaM2dr(H;f6v6H2^3$ zrL-%EmLx6@Bg)H8PeA~bsK|(YVPV9ZB1~A|&ONc&P&oo}b%2rXKwBmvA3@-OZ-V%u zwFNPR5CTFjCA}G6P%2fz_ok^CD}#6tu#{zy0GMSF$D0Ay&{{DWLvm6=d@OORA;G&a zw7_jah+rVAwmQgA71BB=cVXwMse(|*1_M@ygZO@9r4ntC_dco7)Vdm2rjlJSpaub9 z00$;)C691+?7+yAStBG!nQ19W@o~hyf~ViUb<6hM`;zj++8Vo~6}~;Fn{1d!s|R)# zjWrV(t-;2_?&4a5WEM!I76-uuG)KZ*E}j9g%dqGLtfgbi!67LAV226`O?)hWIOaf!;8M{D(rNv~jF3cz)8Nen` z{xq#XA(`oEsUSp?5)6zJi2-zmX@(^+Xcw}NrF8CQji!m@s zayJIe2`Lgz;hM$jVfTHh(rjA@GVU>5F7zi zmY}x=y9aQIAPI=d08Wc!F=&qxqn^19!dOt^N*LYZZ{Ln5kJd zU`9xQL?K*9iKrDq`yeq{SOr=x!g#b(C=sS1)(!*4h#7Ci2o8>~_O$^-N{O1H#9gwn zvf*A@X2z}gurg6EOw52~;v~A?0vjfjRsNS8IlYG-rmn^mq|CI~<_ zS{0U91ymIhH$&VfcZX|WX8km2{zPNCEcqW%SEvzxGk#eHYmW7q^_uGg*L%v$ihbP& zW%{~A*o6MGf0t)OhptvP-Ml>OKjb%~Z2e7gZKK|A)E1+PzfsPANKgN#68{X)9`RrQ z&-ef9Gw^RN^>hY0%d__eJ(_;}|N2DzM~{y|;At>S(2q?oeKP3GfznI8pd7wObd&N^ zKJJ@kqsvSA|L5wz^$h%9xso$FHS?0~MB0qB8)??3ANqdJygU8uzxDF`Pv`&dpMe=W zZN{a)-&eWid-T;${AK^Y`)16RkI|rO#&B@6;CnP{O8fxf@^4Z+Uo~A`nnP|^&H5EL zXVt)d_&Kew{$`BRtb$i8{dD1JHtx~|d&U)?)hUi6oS{gc`PAPWc(&=fuXf?j_x0bG z_jhJXxc)Z?f~&PVeGg1F{o@kjxcxtT_b&B}+WB_rsvE&y;mnyKt`-T8xKDqcZ~M*W zg7xz&`btyfAIDX*a5otR=Fc~C%zhNdHRNk<1}2={;mg-;`svk9)AYl?=YmGXbpzjQ zh*urmrJ>McmSws%Rs}0Ped`}`;TtRW#bg-Vq3|CJeEUGozjN^~>n+tvw@75dKG_X+ zYdYtp`S|K9npv9M%Mv>tTnoN_`-J|N<-77H%{&sD{!2Aqr4_E{z6xe{+}ALBM%B?D ztChaFg`M@uhR4?Xs|U);`zDE7B6cPT95WAkQSbBWUq`2~tz&4w&E>_HfXYG8;pR z#YVP5Xcw|~Jf-<#;&&Kfl#n)wq|nUdhiraeu?b}>r}rV38rBZU(m#Re^P|WZbx*RZnAmtxLxpEgU*OtxtL~_q{n0iNhUO;G(@;@*w4W3 z1p&K*_UsMXwKpa)J|Pc6ZfLzM7Kf+Z?ds_AlG#4qsZx#TVN5s2#S4St7s?(Sn-~+FSAs}$dRvXTwH?80`iFZuI=VZZ&}mss za4CXIJvmDW;CfjqA$>AMOE#GiS{k+{q`FX&@{j`Bz>*}qaHN3|2VT`-gT~1QdrGKS zCGa4GiFjDh_JGw-uUxxy>Dq0P*@5FM`i})aJF)h&*6%x zkO~X3;2*q`IUd|Sf5E*EFAv}Sy^!oY;AUISh4WIyKcMl{`n6q*%-7Ziig#$ zb@g=jjvYC6@2b^Eh-g5C0}KzWiB4rD2_&GxO7UX zu#h~NcLl6k^5}iH-*Wqd4?nhYTX<}W5U&%ly9bAcCXSvued5&FXHFcztKVEU6GA8O zpi~Ou>V91g>B8)DsKte{jjh9lQ6&XBMN{+PX$h z&mc^1CJr1vd~h6o^R2M0#`_AOc4CUfA_3y2!{CZE+t6wu$~rT3p!WojYP*OWJCft0 zU}zq=e(lB`q2W>SDH%MG9O`MKrJ5}(XGeRx*NyiGAdZI~c4idg9*dZVy7{mklal6_{0}hW)M+Sv zVfaQK2&6fuNS}Ll2chn;$k@cxoMM^~sLJuGC7SGZ1cE}R;UGj74b*FL7s!QS1=UR& zQYe+-p-XB?ddVTx4POtkb07;UXyy0qMb+UE2i}pgwH0N|{u%opR*j_nM@TJIc}XdV2Lyp7 zCl|unFoA)uU2b7udQzkKL6}VSOAU>_28{^bg;?4O@Uyg@D5Kvpw~Sx z@eA0rZq3?N%U7;kL21?6b?XB*2X5WII~>ma8F@Hqv{hhUO9l`yi)n_30W3er#ef3( zGN*Ae<-l|^g3V8&FlzxKr$9@AI3agsm_cB7@yI?J0lLWfhfGWG*1C|`)XXeiNkyd* zFbjcn>17{eH;J7E+b!580_0#OU;+TMIv8q^K`C5>0E>a?F=zDVFuZDz2U;gRDJpdL z&cHQGfkUqUU)MdnWqU|MxxKxwzuWEZ?rhehtU*uj@@wnq>+0z4>-IPrU}{LQ;B;oY ztD~oX7$Ft#Mnp2rf|mn~Otm;YB?Wjh*Pd-_mn^vR$KRcE*M^9&B&lQS@X@K^p8f%M zja*g*w*^xjY8@Kr?Cd6gGkR?foRNS)4T##|A_FbpPMC&)@@6(fcmrEfWXQG+%OAh@ z7J9+rjVpKWj4o{+n;0MNba~tAmBq!dyH{438W87TsHbnB+i9snTwT~Qm%>5GWO2}Y zg`DUo-ZBc3l>8H5#Ve$+1i^tTpSbsC3LSG#V0c89Zs6pxBU9ZTufrtC<&}!1T79jv zfAYx0@aS+?tC@nJfCMWnRTylIEzYiiJ|GtWQ!D`1o^~XHFpCQ_;=*>UUo`)=AJHqt z7Kg+piyQ~foH{XvH+R;m3sckbilvnXn|Jis$-@&PeIC1BT9lm$FA$!fyxQLC@pShg zXi0N@Esit%;9;f&kV(#SMVWD-Th}~!-&~68bHmC#i8(6w{v+qkk0U@ty|yGTEip?V zhmljy*umq+4vcg()mBQ2vs05(5EDeAHrnuF9GJ|4>O{B)*i{4Ekh=}u>OzDdgUG_d z%(&fKwg-pDCZ*@_3Q7R~5T7_74yb9VDM`sGsm!N_xvGHhV{|%^te4CwaO{adr)>y3 zeX`mB(a-q@aYkCq@`M?@Pz5Yr91A?h03aYOd+P}qxu92owtxXB&8+7M2>2426OjQb z=w!e^#$$l~Ccc1$x${}}kckV!oP<3&!%|-%>Lu$VVP_;}T*9nNIJimd6u=(`IB{_a zc!GQIflfc*N zoh#%k$cmygW5Ou&tV9nkCA33{F=pH){rVPZR^3FcndYM6U0K&r(lf4NOUKJo?Vdj{PfZ+(v1i-Hm5Uy_aXRobtN<6K9W( z^*St7g3S1+niOw zJGfefq&N%joZh-_#nLAi+HoPX3Uh8Dksme6Z0k2J4l9im4oSrLC)HHiK;ZM_I z)hng657Y*@urz=I0Fwa2<_SOpZ6iWUb#CdF;VEZ=E}T`OcUOVO`h$sqv8^npZKnDL!AUsdIMr4(*>98}KyL zRLX?;*;%=;##HF)nh+_-&Ey6+Vie^VCb`7EA-GxsUh@`&_oM}GT)%F8;I8m^a9IKg zqtD0(w1K!uFu&mb!Bmp_G#ptO3S`a*sE0vv2E<8>qyUWX?z~oS@Rp^(HVw)p%Jp#Ay(DfG!4v5X(S5BdgwkH@%Wg zJ@6iY30gxYcs_u0$OlJ*gAbqItsB=Ye|p8ntvmOn6_@KQE$)t<9)uG>xC3|%QAh-G z9HmzRz*u8iDWa;Le z!O=yAR#1H-Q->ycop^%;Bq$K{h+!6ri3d+Z5gl<7v1cHVB!Pmd9(Cg;*fhLIKrW?s z$btK!mo9|t+74OG!iVp@ZSK8`R;}L}m5)FL9sLtWPo4x}h4^sv#z#z(0@4ncwG;K+ z(t^0PcmXcaJ%|HDzWFe`#hch53j+s;d7#(>2q#T1Ojx_}=|zt{xM0cpExYz670QfF zp6>qrhmM~(a$x_^K##WtM)Mq7q}3T~{PYFcf0KDNL~Gn!Gv^JT#X8YDAb7ypfw5!4 z!01SXX--N-=mMcsO);lh-0hv%+z6EHfD{1z;%Iw90c^>D34t~V?J`222mwMKz&RW? zrY**dQW=RtTb)S|;FsJJZi*UtH2b zFvLBRDwv&d#;+N}yV~W9oc>Gn_G&q2-Q)6pgN(CE;fKEw8a7>D{`{)HkJ8(Y7*k1{BtwfJujvLrx6kv3x#EzkQ8s)w$ZLaqV-Qh23i8#o?0mdA z2k(-xvG_G0(GV3KGH>RwM4LoTes7T1vB(hQU*y9Uta1Y3kgeurBu0ho*t`x{Z2r8v z?!NEgr5l3d^AH)R$Us6!}tH>8+IkdP9# zpkOWJxI!XF1at*=of;pxXUm$!3+}w0y({~BH{G{z!`|dVnZeP$|HN}Iz4q$M7Z6FP z*F%nG@SQCJ|IK37)KD-cPiJ>;Ute!e2ar7B_zHae?yKlS( zQUglY-?wB-WQIs<>li)u{L8Pu@$w7L92)BfoE_T>zOvrgGY;wg(Zf^2 z{hd&5kaHazM8y&W<1kw6&3LO0)jl*Z(AUGF)q_y+umm>7UWb5`r3iS6Akzqk^zgjf zZ~76<&Ue0l2Q>rpI;C0myLroyeY+olNJTz`hEqtt8?KCZTYY$#1?I2|Y z-q1siTeLX|E+|@R-;Kb*n&wGE6KkgP0fOC?wT{&FPPbMCLh5zYuq*oY!QYle6l<#+`*MuJ<&g@1@YQjQm+LHo|+Mi?Q@E&7brgiktk3~>iE z7!FBha9<{ufT$;^ip@fQR55jneV`}!LkkkD6qXf3R#aezVGS?=SQDBZstNxwQ`kAQ zX`q)!-SP?q99R8_1F~D7zF^8V`?OrA@Bm=RcMpIg%|z9A8lAAZj$iKkrSaGtWKzv<{rd+}f33W)$b{Vz}_6%yOB9;pxZSrF#Zh&?Y2^8^( zy+ub4I}&{-n*};QSRL|JM?-u_FJU^sM+h%yCV+AgDh^sp=q*XFLq-hbE054R%+-(W zEm}|%-mcz(!I9CCk>SDqo=y)F zVATyW1_^X|Ikt_Kz_d1_lsa<0hG+}1U5{N&l^&OiU`nG;iE zwgnZ1>=xjsak`5qIXA4XW z43#pxiU&ctBlm1xwfKQsAA0b6*Uw+L^e4;HQeyLTUaw>1#pljkc=4@QPMteBInhH} zV6{jfF6Hs~Vo7Pa0h$p+4|ju)qZlZS^$3B2_;mSs8F6^Q(E6nh-E+fj_g(YdJ0Dtn z|D$m^N!jX-L2v(yZ$AIROK<=5%*j&|Bb|-(rf(tMGF`~ym*H5O!2r8@270@?A-Hln znye(8DJzBwDP}KTl(zH;#;pBJvhnRD&@ zWsfe5g%+`P;>B|(-~QDv-o5zpYsbe15eH3KR+yDtn44K7#mf+zP}T6%G3XqCkDbh! zTLQfrFC#fQHgxN{rxwfwg+MBc>z;i2iR}WTwPoz}kKTFjS08=&*7S?tY5CjEU zYa{gXE{G!$T&5Wj*2@JsNs+rZEnoED9lq|}{MgQHo!#a>{M;D`Al+4XO%*80MtA4H z@$+Y&J$10Z8E;a@+Y*aPL~@hEi;yD&ece4>s17mXp$~-pMNU#Uz4!ue3t;K?H3>4S zy=CMSs8y#;Sy-y7ws{8*oOGgdVvOURmMt*AVZjR_ zZ&Zl#Q^L0`pU>X%Ky}`?HB0YkZtb5O>~1yd#YN@D=KiDSF245a+izbuI@F>mOo~fL zgfLpJx3+fnL6O+n3;~aeh&>iNsIFQe%#9D;uxK9kGMDaJ9Ve}`TkIXZ9t5wiQfM3d z4xWAOtv6r0_~O|KuSHpq5}%aGE0$=CmL``Q!9$zyVn&Y5YI!o!M_y zRTPJb|A23r_(DuHKKMl96oZP$&|+x|4h#iLs3uAP2cQ8HkVb2f*qOPIhSE?<2Py>z z91;^B9AYAgiSfVj`_?|^+;eRUJXmdrJMF#a?z7L{Yue|Ywf4Hd-Oj?7!0wMcaBniP_lk>9GOhf@jYT z3TqCo`Pk^l(12RQ7PmA!|M;U1-hXdq+>4)n@%2M|ft(m-F_ZP)flJ^1`17wffBT8> z)7A5xhxP)Kz6%WjdiqH>_~HHWSUol|J~26o;s-(K{MgM@wr{K_=)C07hZocJJ&P9I z_jpa?mUp@F_YaSp2RmqZ$5ZwEB#MW%<>Q=9KVdd)8HEY+svU&T?y$22- z>Fz&Gs>LPNf3Hk^HZ@899QWHZCLOt6Y?_G499g~vm;|4Ig3!m0?2(mlNJrg6j!Y3& z_1V<)mGyu~tz1=8yJqc68=6`ipo6R{qH!amxIvSXljEl50J+-V#m2Peu8>W(1CTMk z|BQ+Xb0W?{+PIUo`FseXrhwugqu8cyO-*fGU47%Ln_qi<*FF$^y82JDtJX!JF~GfI zh(bi>x{!MlOk^o30mW}flnv?F98_PdkB1l07X-x$XcT}#318ON)ipG(TfcGZwl{X} zeIG^i9Vfx)!te-@MT3hVV~C5}3BXj00`LQ}iedHuJ;`&auB%80SQhd+HE@hUkMhX4 zpUj#TATUT8sCnU;ryhH9MSXq4YvidNI@;ZP8b5J(d~$qZ>gqJBH_RAv`Z_*5*h*r` zPV(8nO(eO-%#=3b)>`ce@)!g!WsKgg94m~c4Hk02JTEs>?Lp~8=L14%}bZ9ZUB{K z_q+QJAL;Du8#p(_cvr6CBTuu<&4s};EVQ+Mkg&x>u-hXj(G66AHnSr zoZjPsTp~UikD;!qx01JTD4rIPNN?XUcqBa|1=E8?T*7#4<|!7iCc&V{2Lalnxd~X0 zmm3=zNFUp{rTNWwTK69&f1>x)*>i(KBw~#c12Ez(5DY1+q|5EcvlVzIpphbdjPz31 z@O6(_Q^7kHABdHuh(o2tf5%KfEuwq0Y$ttc>lV>rHZ*Nxz3V-Yygnk}%`SYW2VABZ z8sd8*QYz_@jMlcpWJcK)PPD*PZS6<90L1C*0hp|pr2=Tnvj#|-H8up$1uHWeT$W5_ z_Ek(J@HYI5TM$iJac0`u(M@L$NE<+!VDh5TqBcBzS7C7kZ~}A>0Yqgv1gDPeGQwrh zRri5jI4gA-k$n>n+yfX=_4n1ZzOsIwMy4KOwF!2J4e-=sxB!1t03=*=Luk5;IL4He z{w$!k+XVne1_(%GS(s*_yAs3e^U__)mSB9Bqwqy?GJ+1hOh}Lzd=h+qJxcr|96Jjh z2>wpYgrHA)D5*WpHO-@OPE{gJw@Jq-`oKX;9;)691-a<-2ip*sa7gq!C4nCCaFF5= zi|H7yrzC-5t+@`dG~B9KABpR|I=pNXIw-ny;lstHuAkuyOKk*3(gB~4t6sH{Ae}2B zqXtoI~W(h8KGIK`MS@B3Y4LRfP~XPv(UP%QYh-fXPRX94u)71Ob9B@5-di z@hpY19C}kDk{BHF0+Xu40_oXXB%20>gz}jBS=r!l2NP5A9swkzyxU~GaXtaP2g5JLoE!%~KhoQ>9mGKt`A&<&+wlBC0VWpb9zH-u5)t`#% z$_F;NgJ$JR{y&~i2~^$v=5wICrti7TH`UK|He>%brx&!4%CyIEem{}w^35}Gk>6Vv zB2Q&jW~cA=EoQ%NVb{tP|LHG|tN4r$RW%Enox7U4(v13FFaN2gZ#yGqHn1jBVD-uT yQ|UcFoR!BodCL~FUN--gIZeE$?}7Or@}C?*vXhE3>MIqcVK|pPB9|%`(&1kf**>!X literal 0 HcmV?d00001 diff --git a/CD_SND/WAV/CD_OUTFF.WAV b/CD_SND/WAV/CD_OUTFF.WAV new file mode 100644 index 0000000000000000000000000000000000000000..0dd2fb63e42d08a6bf986385a82372808b36027f GIT binary patch literal 55570 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

QL;RPFz80SEe*fx zalcADN7=Gm`jO6=;+3i$9c+L0>7&Qn2Suk74Typ`n}9hSFSy+%v)O!oxx%OqojduW zRW4Q?y!)eR9M1*}Vn^Wz(5jDnKxB-gPgZliowQy1WbfJI&mKM5IV?4Lgh4D9XY(m= zV^79ekfx)_+4IeGM!ZXsTBTOAP!Y|A!zdU}S{}hVu1gSwi-)2e;I<>oO6ZSxHR(2; zYHn}m@fX{>hvjC3L+ts*dbPx5Dq}t}An~3FF0|#@>S8gPq^{F-OBK1pU<3hyBkic& zY`5rrBqr!eE+H{;6JUT>7Z29)!QS@v!Ev$CO=hc$7cVX^H-xvuunU->Ceh*9>hf}R zadSR7OWkHrKdID-w~<|E5UVSRm4m0^zGe=^)tridV_I3{N!F1E<^5VtI+ZWF_%PBzsn1zk!sYO`X#m&vl_05J5iF&PG z%$-zl+%Yrsh(seGuhWka!FxoRSd}6HNH_&3Y<4yu_XD?@-{0HYJv_CV#Gfrzo69Q` z=rte2VGHkkxdh9Krkm@lo7cC?>9kX+)bo3VYNgg>is%sy!vscAK~^-JKn1$M&Mp*0a(|XP>Yo+>AKG-0CS)MVn}=#e6{c%H9{h{p}}T>=V1UdU5meYLT{T`MsUJ zT%q0}yljrwme7u5G{3xiMUk7N)5vY_KHEBU)8&i1H}CE?^h5seU}v}Jvs9P@*3Q@F(KY-gzjUNc6H^2Pqn{Qv= zzFY)$W$(%Eao$SL*PGi{8%V5pa6(_>U^B5>9k+B`ES}Um(Riik#Ex~e{rRtd_4(F8 zouHbFi}id6OD+KhuJW;>n9>NRBECrO-hK1kyW5M^(5;*v?iC%kJ(!;_iJtUo^~!O+ zj_=WUiu=tu=v)KVJ`<^=kgG?AQ*D+5z5i$M)*QI*dW_f^ol7FIP*1pg0}MfSpaER{i8) z@5`s#2gKn()$*t!`)ZsMenoK0ps%=HVq@??t}kw0ef{b#dpo;(2S=qEes5Ujh(^tzDuM-whQn#cl&{FP z;e2&@`}KF<-a&$K;8${o#pAs^F$R8=gfYC z9fg0bE|$YYp%o1#3Cn_c)$2q((HpbHYIS}#ihZhj^7&_EeYy=#ghM0%uTVHRZWO{n!Kx;1eW9XjPv!HwfIQ*Ac;pUn!Mq1f6Ieljw=sMc}>S5|LaGsc>8wiwjQt zv(?qz^>RE4tzz+DC*Pnu=j%10Na*w=#2^Rb->+9I<&zR)hS{5D!}fiz(Li`a5Yw!1 zS}dKG6k{oM0+CtnNfbf|3xGtWq-)@{L=5Q>2f29h)vJs7ByJQ7x$Q&C>m>x;!qOAO zZGnjN-Ljd;$`ztfhZE?2G$fW=aji{6zYzJ07!4?i7!h3N4k0d324aMn@DLTjHL*MR zxm78xjR%CKU*BC3tK^mQ`P^ZxLr0u}*0ZzWNDDJ@v4dGWe#IF zNmCT~3e0FIK%`QIx-~2r3>^;ws3^!*8jdD=_464-HC?Wlk-9CfUa1gittikb0Yi+} zB>|aj$2u((@&$__uL*lh$SWGTP)gJXG7m9=8RCGiT4Af!Kxda|NCoEf+YQ1p=xG~a z0OhBPNW`p9X!}r7-E7?R{W`J2H4ma(5b`-uNa2FG17_tSOtR5|=qAiX#809go5&aB zYhoIZIERY0^c`e9#T(NWb>qL$(GrIW%*v7!J8d8(0o*@#R@#|j2UaG`%}w>zA{ zO2(7naJIf&K%=FjLjJg9cWLSj{zF(G_JVe^VHF7kZlcr(oB=u%kuv2%9vM|Nm>3|+ zXEtb5P73)v5mLSagb9pO_6~dmxnQPn)$+Y;LjREkA?Ez@?W*IHx1JoH*1hihaxohA z+|Ce8$IR3vGzP_Q12m6^q^s&XdRxbAPqpo;U2c@gmxe2%MO&o@RflD{bM*? zUoIoZuAY<$lI|#UvyVY!G@DH45Zu@GWdROXo~+*o;tR zF)4s*E?2#XXj~XM3MU;+=(}$b9*2a%U{*8%Lr&acI2*TYhMq@603oW#i&*p&p9+GJW_G%&ew zRVHhUOH3lB)U4{PU|`kY7L!xeJgVVqszdD1MO8uNoC!Z!{px$wpgPn`LX4V|ReOI; zH)V#)9>5(ZBBGCE$`1dN8VOuteu%#jQ}W>f1-pd8O|th&`? zwOKW(LJ%mzQPr{qso|hVT-j7&JXl$wy2|@p=5b!4;pQ>9BG^=gL5CiA*i02!qfFDY zVs+OXnX)pR2r#p8@BP6?M;uZqJ578NC1r;;K$=1{Z$YO_u5>%s0SdM%L#9EEfk}Xy ze#;u4)p8FZm)J}VTsPpE${!kX4=z9EimCXa6%WrC)ac~lsrNVj@xWA~=3wPb#@e7`;5NLS5evwOH|9{RiI-@j^J(3uWoH_k?u`t2S++{&s4;;hGYPjB$=V;rb! zMH+%HD>mC3O44;*W&i%J=#Gp?Qx|s>%%t&oPw}Q``2`IcRn)_~n#pC5)qnvKb-8{& z+@{mTZLlu6=Nz=h30K`S$+K6UwPj^9q5_?jst@U1Dq)qrorIG_<*qw@lJzW?FJO}n_+?) zq9!#{fZroUWNrq5DcjVcvB;$iNUmgP&U#mHv1L%0%5|8v%QW>vdreaec?c;FXJQTr zD~64l{uJAxAaz>?hiTwFG%`=~?tP60BH>teesNwi-t;R}XOw>r#Cs4qxJUbax$nyo z;2&*zDnqX>a%Q?N>tRtYn_-;q?-^>=W%FeAgg_Ix`cYrs-!zYy6I1B>TY7}c*%8)hwsnL1wEH-YJ_<&YbQ1G%EQf{{Zht9SF*FL+=oK{ttTGp$*TFNfDeaRvG;|4 zC?hL7Yl9yCaL2rwLHw})fbkFIW~B1*ImiE%2L9|xJ#4mry#8-r5y1aF+rRxbS9$rP zd;dK}{oBu|5PVn(R%2!&ImMV-8MC+oG~3J3tlV(CV%o(FcBCWH%8BjeY2+%-y9iNe zAxd5!C@&pxq~9YsN~I?3_`|8zQ_?zFlgfHWd}QL|NuE`@On*e!tq$a=K+>izK%p9J z1Fw2jC%(sAg{M!$rKWCNnSwM2A&bd8pjMxRVx3axIGSnY$Jk~QcN7L zuR#G6?M{qm1^*)F@}npYE>H?H>1mxFp<10*h@eU(xUp2b-wp*EJP)TevaIA2^0$#Q zT@&0&mM<4rd!dC4j>_tI7>p72@TBld_A5IqygKt_pl;ciVcC45?h$ugJTOQZPP4&7 zHo_+^85B!B&V#r=ERVDxay7_Faq1LcR)%mKr0+(v-V6{S{d%k3!R9S*+y6gbZ& zZyXyr`6~eJ2ZTer4TL@nR~98VJlB9xw*s$DI6KlmR`ae|Spren^XrJ-b{ku?jq8z+ zeUdTBitcDV2_HQB7*9PCVC5_{n{oNkGoUx>I&lYGS{got<(+x`7!xtBjlr-BHKmB< zWM_uGRJ4X0CnO~TCo*G4K5Y>O9RbqAwnL~q?ZC6@D?~b*2!uyoDP?0=!3K2U`{G`G72Z?fM^*5%$SU}M4tB) zCtO>~e>d)RW(+ATP!KmPfrAHIG4)$6;LcP}rmR*MxTXWSN~M=I=} z)Cdgy&?{LoSUB+CVcD^()l#K&d|WIQ3Z-hNVr*GbT_0^j< zZ!wc%U>;!HNtH)|GOs{#%}byI+X6|V^bd|EISla9)v=h6tDHx(&KEHqk;F#}1MJ5b z;%?u)zP;U?Z!VV0X}^nsp1c^KINaMi%99qyD~F`Vl}q`9ySMm*D9ln^&yPa3I>6WhDMC15)?un^X2uMZ@&TR4bB+cqf`0{ zA2N&=tQsvcz-x&~PwYs>P8T@rQVT0`@AYGa+LL@L|P|LyQV_N|upvPDO81t|viO7cMHjM{(G{8+p z2oZB6j2ZL^aVA@aLU~-eA{Gl6WTq}Mqo@V2OxY=9AT#;aMp6ZSHYP#R%GEIBXnbkY zlzERN!co$;EhvGKP(hNYjZ?7M!L(0G7+Iy7K(zh{g@bQwGgv@RPfxM7LE8)uX*Dod zq_ANa8~?ix+v4q8wb^NTDR5FD_Rq9bz`dHpBw z4~DinfwU*eHh;JUaPRYm(J9D2UXSs{F*v6oSwlSB1XFIC3V=%vDW)%Q3>nL^0(8{G z(gbF>$cBYYS)BmcfqgBbL+Fp0SRqB6+Vl0r9B~HU`eNu;PO;Q01Kh%)DY^rPc<&`A zFw@Dh%k0jC$Q-2{F$QU&c#7v=3r-lLFLp%S5|EoBWqMksXMBFON#wmgznJ?)a@ukH zd8I-XPo{hXu5yi_UGPHYFd4m!LN4_@Z0V<_4dN~u>{t#+%fsF|HO718QPP$Hw&Z1p z)X(MB&9s&)wMVmIru{#wR{ z^ej=T-=CcgN$n&rKlJe_VL=2{HS$*R+kl(te6`syXfZ<*%rPO2_j+2bk8#ls>pMru z&1F=~9ozG}xs@vr*KpRYmOYXoAt$+sI^6;B1_%IAOuRs)1~<1@!@*VFnu)u>hq}bS zfe9UZ^mIDEyj``9npe1z?X4~E_U-ui@lJE|^}6)rAXweZoxNPJT1F(~wZ`Mn^?FPp z*gE5wxf@$qtyFGwy7oz}%PiXq`ZLmh2csobU_>4*F0ZfWja>Wnw+lD-w0QRB!v6g8 z%KY`U`{~op#r4wJJ!oyN`YbEb8qGp1ml278L@;4zZ*>@9r&X`VA_~QNdOmb2&Dqt( zi1w|o*J&$UytujAoH@Dh`yWR6-2?C9HaYs_%ih&ha`bs&a<%CfwyKNkNu32$;#q1P zRk7m79`^HeM5osY(y2j}B(JtkOUY*FX#JC^vJmGlX00}ClK_=)_vr3#mnTp6yvy71 z;jbS@udnKlp1Lc1j=7!Sdeb~Swxdzvo}9Spple$lA~K?okPU(>s;77y+xYkJc?Ziy ztKMBapLbjR(Re*2k8kc))z9ib z{?vN%r1s)%cWW!(zS$IhwI5&3>PN?o$vP?J%JDKRoYe5};>oh2aZq7JoNhp9g^P2r zhO58{36DyLc6IYE-1o0<;)=7Fw$h1PpI^>`+`+|9gPmvP>D%G%a4xY<;Xfb z_0w@w%a_ANuW*c!J+zMs&EcSaX!ThX!y=!w=aR|ZK{!Vs3@5XsT)Ftu@M-bt-O@U2 zuW+>#syA=!C#AdJIln0{rue=}es>)2@AbwA)Tec1oX+WKcMy9ec~?87!+I}j6_5P1 zZ8xg*Ug#2o6h#e7u{}{c7;V;8Vg1+XlgjH?eXGIJJhQp&CROX*)fc~tzq-u-lXVv! zMeTie(Wwwt5LW#~`!HBVl{!nTH2h|{)($M3NI3XgU8g*PY-DB(W+^UDH2hhTS5l7XcM~DeQA*{Mo#di@j ztOo0BxK1=myZFB+39F4D-LBe|7ysJ%r_SGQa;3#}J2!mmJ`OfXqkP&Q5G+>djqOu( zHCQ;aOFC?MD5~gZEVs}j{wZKt39o5edA*~jg$-s_i&bZ|ZI&mu2y{mB>&A{iypC#PfI=?(fm(g11n z6#~4F0x{pX_}1{qgo_)1}wz zmC@8XRl1dHxzW%q`>8?^nQWtWD@M&DT#~o})-nijZW078&6wKISDQA&HGpZ+kuZ5< zdB6f8u}l%Y$dkj+3hutjJzD=5Yt|A17>ZyurKUJgF(lNZZGzBZoYSR z;&n_to}G@}iq{VbNN6T~yW+<^X_6>OZZjVBBrGD$2HmvZVqqO*WF&W=5I3UHaB_J# zXYFnbNwF9pA_%Js20=UoH+@1MSR`Z|I_~Pud7S=kc;GFEM3%Sxeu5gWXkW+f#U3s> zR-?o6+9jeFflpE`VwM*CAYg+8`6j{^T7m>tM6HH{l7ak2AIMX( zPThNPQ~Gl8L%1I-5r$aKBANK*V88(~BGMS^Ju$^2_Mq(jryUbG7#bu_dG*%*P3MQ{PH8@sEv4BXw@$qz z={idVd~y&K&j`r@Or&6(^&Phf9uOTd^0!!9Y}l>Ex6^9#e3iCv zIzw={;(Lf^psda^D6N{+r4Yi%SbmBiIF=KXvIj^?mY2Ir4OE<>pA0a|#C_gWL%_KS z)dnRRd{`wiJ1cilZZsMY%ppJh=K{(iEC`I14yA9bO_Nv20?#mHuyoFtA= z0c#+DG9j_$B+Fi$qILhEQEfCVw5HK#Ro2CP#pjJCXsfMF~ z7;fu6q$A>`0r)3~NhXG!jy5+`E=>~6NUw%w)R{72sRrIwRYKHM^Gz^7-Liv;~$`X-2?7_79pL34*VThqQ zORAL}1uDQl!Ae(fD>*e_o{UxH$^(GG9ii!WZgH zN|p3pY^+Ebw9TMSPyxKgwJAvl_c-B)(o8FO$~>rsm;(dOLoaCn^WP-U@D9DB&~plf z4G9vUf+@G51w&@0jI0>#4FCoRRcN}!0Hdzr02ac3ng=jQAz2$aQAHVqD#6qQ8S8r1 z#p3B1>>u_jM;)(mW$udeWH1=`&8XB)gaxb=00PujL#U=8z435UEitE{Spb@W7o5g+YLg;^`9gg5n;$~Rz|BLju0FvIl29o_;H z20;&X@IY1@d(pl*%Sz*nE9`xi;$eF4hKRi=_6$nMH6#Jf?Zx#7X(g=Va?B^a67ya& z?Ks_p6=Pk%O6!Dd_J)nbOZ|kYnudlg%mHcNp42BTH=g82!)nqVlxJSxOl?@MhtaPw zBKEu0=-`xN?OvvtMpEtKhHAu3(C1^ju&@xbLQ_DYaokRO_O#V!wZz`gpSFkLSuje{ z-fY}lq@CfkGwZO*@1h;A+QT!vt?@V*r39z-SrgNrjXR@h7_t@>2}1T{hRW4xyGe%? z6n%HQ|%0anr=YLOAS>So<@!mem1T0&98&b~AF&s_L{&pPYDz1Cjnz+ZITfz5Z z?KsZk`flaKFP;|jLCNk^S}kkbuQ$il4yt3=xDHM4vC%g2q8`8QD-#?EEa2Pwyky7!pArC zpS6a?alhc(t$M-TD%v@kblSx>8^qPhl;*{LYZ&%i)(~?LXR#4C;vUA&c{`bg?eRPa zH{_Ym`e+Q1EZ5a|Z~{)s-mtt~^^Z#hE0-%A0s(+$Y7y zWv$olNgstEU9Y-|9i~PTMKkJ-3o`V@#IKdW%)edttkk zE@$2DY<-4DXg@-kvyQ8+PF5B13rT;v z!6!AE5>+~5RYKfheH0QvYm$zIF4`rtWw9A8E^aSwUR+$0#59BUI;~o*NQTh<*51zE zu;}au5LFM zWF=rIb`Fb2J3C))Zyjtu-rAGLvMj>_G6rSFfxHdF38A|L9ux1JveX+{YM9AGvs&Zo z`Kz1riyI=)FIcjgHLKmaQ$8liZ)fl6mydV%wx8{s9G~Efsj@sYIz47NSOL})JVzrr zx~3_`vQ8aDna1PgYRMXm=eM_C-CU5aMCuH|%UIzHJ5N~|eCz4fmyf^P&f!6_H?vm24D+gieR)e6_y0yIx`XDdB#$l)_8kKnv%Y!VGZALuXic;FT?3hLwJ@STB|r-~IUZ_NzDFyt{mP zy-J2*2H>NeXOF(v+kU#clf(UMH!vpnsP!0}+j#!*=KD$~BOd&eOcNU?j{*(|9~dte zuU`J{-5ATmrZ{EFqi7O2&O!;VUZ)a!wQxYroa(j9CfKUrlVvM`}K5~HHV0B5- z2#$~T5AlN(3q;UkxzKWe?rj!PrNu`D|SP zSKqz94oRJ{>ZRQA_Tw);|1x)caCm%BYNEJCj2n!HEaA&ahjT&|Ks2O`nUh<$CsPeZ(m(tsD)eX zZtoYiROsOePWvj9H(Xt8ZZ=osQoUP~FOZ^3lWw~Io!fczDVeUvg-VHx)NV9iJ-=i@+nd|(-rYT4 z!Yhynao24>e)4o{=NY^0gF=ab8-g9Co2yrE-~RB^U;g|rfBE|5t8ZRkY{rqpn!N`H z`P^gh^vI>{pN-s5v;mVyIMHjd;G=T;lb`63*MLNVuDBs z=hv@(_rniA{q0|Wyu0{@M6v4u?5}*hU#uKF{`|8~zTDeq*>u)0cUbWqZ}{@^`Ss?- zt9N&I*W+k3Wo1R*Cf|7H>0aTG6yCg+w{7=l^U3o1)vND+{OjNT{Qd3AS8s1$kh>gM zrChFfl7nQPe)(i;_pri5;}G9~qj1SW?qqDQ#c33VR4qj#O zwIY0#>sPPd{qV;>e8=Fw1AQcYwFsW5l=gRax1R1i+uA)iCa!`!8%C8`w{x=GTt466 zGQ4_D;v&2P=W^Y)7`FTQ6Y^s$jPPWFC|&Q>yKley`tpM8sO!yw_3_e0hczrRhlfj`i$7eWgSuyntQ+gX)X#=|*IXNsnj9p*$4A#kh{`~IU zo97o7=jRt!=Zhg<9w^};uT~3(gqN_QHok1u!LKm{SoR;zCo>C58Xi|>s!>Av=89Mq z+;f-@QLfx-*~aROc?lC=GTM-Pv?4)kI%Jj}Vr0ZhPvn5b_W=r}x`l(k#vU)cO~ehU zYBI?q1z>1_H?k<>FrCauC1Zq>3CLKFdjy|hcQiRjg9J$gdp7;V{6A& zY(mZ`kRz*#N1iUj>0c3pA;m&564=gRummVAudkQTC5x;k0~Ss1dA)YMf$YsU7SNtM zO;4_L(u=W>5wX`t>U3y)noyKKE?^I->zK7yKs%z$En%>cE_WO^mh8$9!>Q1$(%;CA#H;#3$TM ztlv&-1w>OpIH;&S)P{(~dMJtnBj!Ny*R+U_KZ)z(=h1Sd;{SvMF;CGed_X`hAS%KZ z%<8dZT@iP-Sg=OI&DCmsLA=%w5eDJShsJoTN~#QSX@-|!Fhs_NQEAm+>A9K%sSKYI zZXVoAti?dhh(iQRS<1XoR0a>BW5{JTQ*CFw?RA}FTF@V`hW;t286d9xS9`GuF4Nj0~Nx&pVMiDLqR$%894hQ(>Smb&>osXGg z_}&G9Z$!i)Pov7Bwo(r9XGF6Q9>p*+8Y?DlL}|3~5Gdmxzf69K+%P^s-k7&CB!j#p*dl?8aQ{s!w z>Y*}DXg{^+W!^OPiv|o{Wb!a}3*q&C0~(qxbO4Erc95oGwV+HWMc^ymP1QqS#<2u# zsarUa+f0yTq?UC%aMSNpoK5F2>df!I)P>ZJd`57dtR-MC^?V(-`AB_XGo1z{X zW%}NnsJeR^6Cei6_m4fmt2+ju_h4qv8PFac(j^Ko&zjx)L2vGG^P_tJqi%a&;X`>J z3dwGpXUs0^=MU!(1$=xZ13w#6W(a*$ig|NcD##{-`A6rHbOrg3Rrq(I?2=@85&+;jQe#d&1Gfh8R@}TQ-du_AM6tz=p--J|5eK?IAKe41xO>^@do2Ah_S& zAAqihYd~kJReh>7tJ^SS@xc2+vO8vfzcVmAfb{WG+&7mEJf`puHR#=Y1etoXva+Jg zqzBKvhdF!GJn(_B83u1qVM@|7Do3T7V%4Z@l72wyL(3nE)7+NLuWFmPe)eB2$o?}U z=uqe|m(1KLEM^1l9-HbqGsE3eoe--3nrI+J{$=bSdrL2K|ADcXR>>D6Y#?q>Pj;eO zs4D9don)_N^H?SdN#4me^Gh|V%Sa%4*%T+0AcJ3R(m%B%Ypa><%!Ef9Rhg;TJgy^7 z^#=qWu@+!Aq$5$3%}7p0&Nq_2zJzO}Dcv#;u#?x2;t=X2i%L6JpcVxi)PN{DL9u3B z)=aDFGNc*ytM&+krmjqvKp$X3Y}4Pp*k>9qWYIj;q=0h_>+F!RRUeMw3|#3}ii|Qf zB7IY(x-_E>emTxg)k0}5O87EKWJaVys1ly(VDN=7Ck+OziA6i~`9E}glt+|6mc(J* zJLF*E%>e@It}-}Om3m*~@xCI7k)|G`KNJ-MUq+YetB2-bY{%%Yud(!5&jX)?sxb)- z3Npjuja08s!brdsaz%cshPH5OaH>8Lx+LWTItVc7g~Gg1iC8d%%#Oi$NWKTYY?rU^ zkTAjOM>H7sJBkwzYN1ccG(Ccts0u_ZrbeT6sbjb-)aZjb4;#zfpypwTC!TePYJyYA zW7#0`WGIA0Nxu0aJkeK}axitHK!HGFq^Ln1#8pzDSR>Koj^Ii*>y3aDLe7W!2n_~+ zF)MNK{V+Z`7Y2NAv3kmKi6l7@&7-ddP9`*vv`ON#$>XS@0FwR*DSTGpZn~$FTCv4274^ z(Xq@~xx$Bk970n2F)Nj@K35M*kHz{itTc%;7hhGM&m&>ALXX9mLsnNAVkQ}suMWyL zBO(K6DP-tOTJMmBT+kS!W(6-n!LqBkO&(b;l+wIQmuW0kGy zaiK{7pOPZ^Tq8~tLOJ@16UCNh)iBA0Eaoz2sX2_5d;_z<8c&r1pkB{6bIkM;f?DyDV?C?!%_GMqj4hoFQ6^j1cra$UP&G^6Bm|a-HER__R>6aE zP7iZ=7K@o~E-%Q?NLme?m*tw5uyW6mMleb6i9^iWalPu4wsSb$!uf(63LG?;FNw|N z+kxcL5m`oD3TOrLLDKiDmQz38D`B;pUa!t>-mH0`a$K%g`A8byV?Evo?JDL!Sn6Y!3d-Bv8O_z6XHsf(re0ty#i!2Gc?U%r_i{+CZ4{rXos&H44+%L~3tS*x7ZJQmg@lnejrWQi$m>R{}y zd-dZQi5&5UPuh(}rEPoE<9lys1MGez=W03U;WR32;se{N&N&eQ&;) z&d(=&2rsBsyNOr!;kC(}_0X27U&ET}4+l*vKI_`aI&p{V&fZDbwVgf-%8dqER;;BZ zjpFJ-fpF^n`T1gV<{j^BeevnzoXwaU&gQT>0X8skf%*Nuk&a zEoXI=MC)bgX{pn!wZ}`Gy@V^<9#MspMUcytsug#(nk}A>sz>>gokv^w3M-sO=^0;I zZMm2aPfI=tQ)J>|?~O4ZHTj0uX5r^+gKoLKS$W|m+TQMto%(PyW8EabQg0Ei8>i%4 zov`BOkcC;t{f5lQ``gE?Fo-K9nJuRgR=d-D#b;?NmQllbz_$@`DYViTZ#GWO3Q8x@ z>i{aLjXyMvtml3X`28lG|7HfLdPwPa` zFGLsWyyiHV;1MaVx;J;tUp)@Itzb^3hDDK>0@7ut)sgNEl4JV+GVFW7bo>dmaAvm(J8{-`-U7 zX`0Jl{hm1L-sv-YF~+OhF6C{OVoam@aiPjQyjToCHcTikoLUvLNbjj+1I5{ZR$ zo9%u&U0=*tE|rKozK}kcu(IFny7cR#(ZEYK{gOKftmM^&nb1HV)n~7&CuNrg6K!{OawiWaqcV z>70exI*0~-yt-Z6TSr7}j~8LNK*k}7VrfO6LGI(|CyKr4C$pr^+GnJ);w0jGaOBs* z#?eS5fQQT$e42C4x1CeZ?M)SauwHd`9yu?+icU_MJ+)lgG%V*D?D^1fnN&E5r**y< zO^1*^18fQY0Xz_V1k*j)*)5RkfIEVYz)LwKxF2t)zNm}6TD~EsC|b6UsaP(7AdwCd-Sjc01uLsT^AAa@gR*+Sr^K6Ap=% zayj5oA+J*F^m&Szh5?fZK-Mmtg_Ioy9wA?opMZZ*axa5P7I|5iCI2FLl6?}7`7p8; zS#6Uc!>3FetsW~3O9OCRMf{L+q)1^oIB)|IHHmB``CsvaMCqbjKo!_=A!V6fIY;}$ zMWTQ=V+c3N*~U+T?}_jIb@;SBUOYN7Xf%}5hWyeG>Wp<#V_0OkgD^)!_yl$jSzA%N z>USf`BV9}KHdPXwj>Q;lOdsfzW`mj9)JZSW(THj|+W4#}vmUu0L>}WYcinj0XC8{j zJ-fmBAg<-7eTF!!lE5PbJD-qR{4SF05x*IWc$-wCLigDb2#!KmIr zcads~fUo+{{5Uir@%TA}5%{z^fKErWlMYO~Nt6K)7(T;+1RRsbO<@Mx6sVGozGWIG zb=;7FYNXjBG#zrpeIA#EN5&DxFe;*c@RooBhQCG{)W-uz($Ek}Bhi}x5B(6TM4)t= z{CPDNN&^8jSe1!{Rj$FU_PWk9JO|pP#nXIIqsGI%)dC}j$lYv=H*ILDcqR?sXBeQ? zV5H`o4h~TR5fSw>L z0yXoa`auBf#kkx^pi(a>r-yd6(L8_veIig6qnc#eu6T9R<+9VM^#%iKy4tQ=LXetI z)3YtJuW0b8%YalA2mS%VzyQhXo0Nb8vlE>v!CJMDp@isVc}sSNak2%Jj-!vH~Nh$ga5GeBq%2nX89yr3Tj2V(TDp`JzG7TUjYE`e^L!*8& z1pOW*57Z%$)G?rh1WD3r+<-_3_*uWJWfTlk5|@KmaECGwmG7jfQbGSpJ^{TzB@d#` z=_vJ?LA~J`N~#bZ{=eeRw99SmNYg)YKFl1u-LA4!Qb}2v%9Tu#009C72oNMdfNPRT zrBWr;BDu=;xZ8c^|IPEpWlAaA{bBl?J_9L1EO*CUBI3Rgp#t!A88bSF;ST%0R-Hqw zl!V$@XIs_KZ2%?8Y9aR(5p<3WThLOp2^Br$#9Jb8qqDl58pu+yY}CnAdW{a6hT^C^ zTAcJ+S*ao2VGlIGT@R)d^cAJXul;aRESm%Df|J$PWp4#gQhY#ibjBOp^ zsRCJBs3I&*BuzQ!C(3~=si2-}!~IY=yWpYXajj6gQb=7(^FjBDcZkGXEh#Qa!md>) zk6zi(A!TbzDMb*2=q@&WT4g2^Jw6=vq0Rl4d??Zlp#W6~EynyHq5=X$9C_2_tht2+ zPQ{~q>a_eI>|z08UKSQax=n<%#{ya%Is1Ks>E4M6iX1EEzsZ*>Y3r z_T0)xVDpk>Ip{h?-8EhKT3xr;?`W*5o>ouGK?jw*oGXrpd4MQVxF zl%r(nBI@2;s0kHHX=!#~E|8v;j)$xjiXy3|bVAocqTnn67nIyIAc25-5sdMa17v}^TGi7Sc%xk4%8fnT<8blCgMWPeWpD+49Oe-D@uM#z{C~PrPy1Z4&sXmA+P!-3Lm$*h!-z*0oXla>rco>P^MzCSR4Rb(~b$`hX`L#my6Zy4E4Po@((0}d4@S189-pI z0}~Ab7rRyMOLnt*ElmBfIRqdZmkL*a_AgrJ=T}!}n7{{>i;XL!VgR#|kCLIx)eCz_ zpGfi=2O78gqF-QZri!iy^{j|NK__Y8wa-sGg1)xSv2EyuL8py%5UjHxrKDLf+6WjM zzeZPrl(W$o0@y~j#HO>l8Pra}-Xel$q{t}y05rxG)|PFMbzX07w)?Ub&8tZ^>~^5S z={SA}y@7IK0`ynArsD!tWw6t%LRw#;Z$+E2&BS*$F&jejio&x|Den+C*Z_aO-QuzY zS60|DyxVQ>-@j?bbA)~vD`BGw{t593$n0Vmj7mVp>NjA2v4Dx>r}Hol#JlF&u5LQc*nH)|HX`NR0B?A{127m@Ns4wHxNUW6!?@~9_ZGyG#@9(9#QH&8Ks`X8XjQkf zP3LweUe(|P2naPsM2D4d@Nu|4KuLrR=PlngGXHmL9 zBQ+1JqT6Jh1$Kk4Yi}Dgt>t%%;%K(}?qe@lj=Rh5y1WKN9*?u2829O1Q98NUos{g* zUC+HT@@}x{Rs~_x+rMfiv(_&1Z(3Q?4tAY=WM z#(@Pm1Jmd(^j6+FE|WU(*WDWr1JdId3+nKVS4G)n(J1Hq*U_Ako@{*lx|M@< z4;y()f1X5j(sWlvw7lGm2TjW8Ud*G(O+Wv>Q|GPiB$?bqc;(B7+g`Ch+pc&NR`YmL zvw_o}kHfcKf7{-(-%yp;n_0JH66)ObLuwQ)`?o`XgC>x_n0mLZ=}jkF%CJp_et25( z&7yQZy1qdNJ1V=o>tzo%tmo%! z5md{IRTwOov9XcE`i*&+DlD`1&WqQbY~tm0ub2cScICWe!7N?&Cy@lzxB>HuQ4ti= zpyax{4AMDj-ceGA?5UQ1nFq<*8zH&Q%V5epUZ9yP=)NW-T%7U|F}92h1?v5HdTi0(IB6&mrFMoQ##6z_d$iFz@8TE0Oc2#QfODST#j zJ_jESJ1p44PO5OQ2!aK^H?dD8bC^^!VpAIp7C1frLM%N~rh!c6An=5(gts(uNfKx1 zAQ2Fnog@^|ubt(K72b*F7vHOE#xm=-cw<&^vk$HrR>BlFFM{ggLTc{Je0E_|AQIif z)Nq)23?yO#y2Av-WMNaG*;dosX)}t=p_-&bI@sLh=2e~bAP%+IX=1aGZi3?mA*v8A z+%vOC<(`lPS4uoJm4Sy_J<@+W9psk;QBV%aFkJ~B3eMCP46!YSexW4Q&@*Zi=tR|7 z;ztNe#Mz<{nBNFn4*V>Gn1VW^$%@F&vyhL#Tg0tGOz}snOK4*aZ$5ct%}a6=z64)~ zsZ!P`q$I>5hY%1_Sfm7>KMSEjS=xA)6_`gyhKsw@2;2$3PH>PJfq}#Ys~%awd`kg} zDb{So#*HJKNs~5`$1a=IX^DqsuWCGeJ0@vWgx$O9tk{M=);N3Zn?*48YkD?Lm^$ym za2exrN4+MW0HSzOJ$yP*5JTfBbRkk7mR_4DNQ^kmtr zqKjXWXCK~Ooi~5%cFMabUE|*`FN<(;mvooYWHIee>OnJ&$MYg+Lfo-3yN%OD6zqH~ zdM&$?I`(TswB3!YSiuM6gN8{s@~UdsDW}5;JVMR{)UL** zH1&#r?d)k#`Iu52CTNUTQ9Ul2bTXVwc1Z_X*rQIm= z>ElrmBwhoDP-RV&*4`R7aP6BoSuR3$z31CscZoN7f4^)J%$#Of-9JA*#@Hr$$>;5m zX^Bn72(eY-4?{e3(t|PhiREx;EgxEI#1QrcN)W-?WGs#7CE>3u@y592gTYyDP{-a6 zyW9KMcN6dY=sc*>ljqNlE(bWv^E#o~D5M{T+9-{?7~}4Cqo~tqchL!lu7h}_5{TI& z+-%LNSWYa3O(`^zqk_uuc9aqGpCvoP+Uga67)m;n<^^NMK1L7*=L zU3h(dbSyItG!Y#g3YR@>Y$M~&3T6Z^rTDE~%`sgM2y~8h+^F2&+@ebQ<4xGAw%dL7 z>i7ThO(&0mhh21%Vt%t+fdC2Fk1axM6dawlWns7r;ti|`ur##S!IPnEDu${nFhPmo zPuwcrzgc8aNbkih;AHvsm-p|WRv@J(y^|Lwo!C1=ogS(d1?wfi1SYx=CzZ!1r*h-P z>;hv66R15&F=g;Fs0Bjpvc}WZ%GI{P@9ySqUtyLto6hG|Rjuydzh7f-qrp+<#Y_C7 zVww{(7Z~^x=nffdAHd|8|>RetXi3rYqK1z%t!vf{A2&a&{9?4WUP~VWR?r6BtfM z8#PO=&uBD0I8Fi}zhN?RTs8Y?vz$-DUT-vCZL!)9Fo1cmTyNnw_CNmm=eN=Guf912 zOC~rXO)VS6i?MfxM@x)spPiuZ&9?;(z$au<_uyjB)pYvIc)x=K&j(%y&y#d7_Wx1$ zzN<0HpJ2}!k7sOAVF3#()9*k2>5uOg-EW^fJ#Kj(z!Pu0*uA~q0)_MzN8PgK_=yEBINk1u_5+&ZXfCVJHF)8Vd$5kFWX? zcd%WFGBL23GDi=;HLUmdJ7!eoYbmrc#_(c`2R<33zTM**7a4EZ>s+>RWhyZ`3>l~m zPy>+n@NL?0rlVn}0^SE20qzIRi8}T@4B-b55l}0l3D7qsB{}q+;o}$clL$EQg*n9a z=>j7jL@!iisppEV0Ug9HKb#pJfysl+*q~suPcJFEAlKlt5X8vi8ZJY?Tu>*s_Ca2R z;7kCt0Ere}0CX*dfHOn?T%8}w35-1Pg|M)K9cS9>ptVKhK$A#jq>WIhA_E&3hb!ij zRn({*HW-+NNr|OThn|b^dpPt;_iRmb#V;j*qqP(iQGwaMN8Ce_T)H|VVYGKFvB=9r zJCUp!!$exjTu*ebojZ%>Hj^xrC8T_*sPfkpLA4cNiMS`cbtP4ruE;J6f~($2m1ycG zG`lP$n%G<71nCz`E@lr{1Q06OCI*EkF;_Axp_S57B_V>4zxFps{16T*;}Bf6QN{?? zMToFZM3!nMZJ%q`g0DdkXd@L0qEK=|@y*_GDop^XB} zI^bF%>xBhW9&RA9(19}%$Q>9XDVoU_C6A2Q%pdVDwT}c*t zI0dC`2E7WiyIDOB(pq9+%tlSIW&#O}#qMI(n@w4<;0~}8GtNAa)nQTie$mY){bJl@ zL{28HH0$)M@}d}ava}3Z@GM~-ch%vORsg~k%h1i_8Yb53P5sO5^7*S~d*+vyaeo#J zJD1D!s^7_HN8QQAF!j4(bX?pXd1p;4ZO;9&6>N&r6!Q*?uo@lt@5(={vXl8ur#|WI zA?tkD8ECqGKIxPv_hoigPs$MXWbW}PD;KLtR;T%!)y0oq|1THb z-@5*^CcyamR?&9RH``^6Y{q9}!&E4?m`^AgN^65=BeRdbO_Gjhf)$$Ba$#r^h zh8M{^eicmXv%KuQc$dz47eDl_>a6>t_wDxGY54K!z8n_4Hz&vlKOVh!pFUkppN}u< z%f)x?o8V>E8AZpltGnRI=EK+J_GR$Dze#>RK3RQy*7@`C^N+92mR^9#<){10(_de< z?oPUCu=#DeJ3$UG$j{OroL)RKr2zdwZPTKAqm5W6h-a_V%aW z+U*!`fL5K``h2%ufM*lp8i}u+h%9w-oJoNT=w&VZ}sNM?uX;&zYLCV zn-_QW(f46;AD!*9d2zX1AFm)3mr+xP5dqXNz~i@$yfvzWVXw@7q5Y&)-G<((m1&!?Ega z#;4^z{_11>Ec@6VrSolkwRzJ?tE7m3JPO|SuRf&5)BfAy$#mVGbw-o@*PHtJ>$=l@ zdz|cBSMQ6jemyJpM@^BsL2T-kPra zXMei*!`*G`jo+unNqHr!uiKRjK&y=eW4F@*c{ zvfMwL*H^{-_{ZFjzpsD$_QO}vPup(i_3QEJo6TAEA1}IpS#(Z6E`OK($K?0vzb~J? z`ag@8-TUwVCHeR7I+J2u9B->=Pi`VV>Ak&fLuh@~y!%7+ z!_&)c`E9%ycv1KLci+Bm{^#+`T6wnm$tvEyTLvy0{>>}V@o*!Vg1do*^~RGQxw~vy?l+Q+1vAc zm%iGiU23)8v`Cz8j@9kBuDn%{+=s2r_A5uf~ zWwt-P-cOzvuTL+x^;NG)I{>{q@4eIYq64P0ds)BEUSuDGXSeTA~&jh z-bog*@q!#4NpUu+VBSy|tL7k`D-5plkQ{{5lOzN(1_2EsZmDdL1nZ`D#aWUOtg|e` zJ!#?0u`j|tHjF=OCFZh+tYDG=V6>F5tkkI2WNuprE(>-=v{iv&9DXoeBO6q36xd9v zuzZho?m{wxq!fq)1vi0HS7 ziztd3MHH5#E27i55rG47=Okv-LFvP#(ZDo03`dS7Op;>f0W0*X5G1y4p@5VR9RkXS z_>%O9s&#dXix!>B_*U&)J^*#BKc@xqsK&y>A&LewMfCL1hom&yTEHSi%UUC zD0>n*q+>}^FJmB-mbI`0it!1onXLrkEy$g6D7G3{>8P1CSOgKZy&_VgS}H8SJGeV- zrAYopkxanoYGLK42x^aqL#?aiI3UIiVu&@9hx7;~$t0;BNYF!MjZ>AHVjD14`$9I7 zD3D8CF*wvToYX-?&8qtUo8=t7(JLW z4uztVh=Zm9$(GXS1M5)j#TQyJ1yfOZELDr8=hnQ3+G*cSNlI0~n#jJE`&@8rR#vws z2VbSH0ly$NQ9@J+X^=vx2$nl3^WW;piEKF8aVP^nu83A1dt;wQ`TzaFHaB^T)x&)k ztQ}$$2`)1LhV&R_aT^vB%5FXrg5!eTnfhf(dd{i4Ntex6S)Nx2l6?@bKN=-@X__F1xvK^nx@K6L- z27L=1?)&5Bc}jPKUf*;70|qcMrv( z9288&u|jdDE8VzYoDY}$JbGwhEXe18pJMz!U8pUT^rPdUaF5b?^!D-Pm+}5C84Kv@ zW#=!FbI%{A_2`-c=ksR(_w-p~bA!DKii@n(9~Yp(Q;vtru~VsCqcmK?A6)BEvg4Ps)l{NS}G+3RhXO!IXE5sb2H zfr~{n+So;hIjITCuEq#gXqfav_nmrG35gUDC2x`lNLoGW8`ex%H>=E9gn3JM}V*-`7pp@03bjDc*q~we~XYq z%Kj&$yj1@K2{nN`36_uU9mF^=f+%5E2J7i?N+KT6ql1KTRxTKLl!T3a$Om;uw$x$( zb}XlG8srk;wNFc{cBYxCDV{nivQWgE+D?Yq0EuXPD;u`-V0A|}T?zhBc)-PAr=x{^qi&N%?eGSnZ zB0Au#h32E|3?v!lV@yehQ#Lp_WQaq5hEoC=2U@C!smd;nR)H2`l~b>H=Fm*IzEWk4 zn&1R;p*lm@D^tS^YFQSAX)F&TQ5=?rBf?&o8R$QnQD`g0=1L=6gPe6&!e$X$5C%MY z_-Aw&RI-|lL95nsBUD3E>PK$0I{s7xl+me?hU%vdh|$B@MwTpn7zND)0A|l9Cdb*j zv8@5D1ep@-t>q<;KxaiC%x zRqejKQKUwfa&m_wHH}6-P&X8X;}KN^MaC=4ltLte-4sDcPc*KXYwMHhP;?@l9MNkz zsne|-B5>wR)_y~Phb~|BvepWSa&5FR{iskylO)(cCv?7eu*JmC;ya(CH#=5 zd&-%TC@(9W#UztMGRoEEeJFu)WEG?U%FfnBW$p6T;IUG<0c25idVCzxCWHlYzwWFm zxRk^l9q4iz`M=|E-}2$?zV6{HQp3m}8}aI<>Oro<(!s2kLCvGO#`YjOhlFK)V!2@r z0KE*j3Va4TKN9@F`>IdU_gI7^QW8qRq!(0l6p7mgnMiH%kjm1*-Wv1)+mdouuqow?iy1W!`Yq z!;&-WEp8MMt6`N!Kw*J*8OF=9 z*cR0`2RmQS>uj@_t;+E_$J|7<8G(kLV(bQ^5R2(#EelKqmZDbWqFhw-S;5ZqW-?n9 zTf$B@(+xIt^ zQNUKorrBb!-sGQahg3o%s1;vvzab1Ts2|3#zaAe9rBX@S`%hNTpnm0NGe3D zNtpoh1CAAd=*W`+f@?WIgcJ=yVFY|tR(IUn^oQYa*iZc=LC+u(VlGU2u-`E+KqX_w z2G`E> zdSCHKKF@iGLks}&m&zN6gi3XdegO_ppa^;`P6Aa+8dck=|@>7V;jw1H-L*^vc$3p#4i0`^6Yv( znXK0UlR(|$!oIA*&cldI@QVRd6z|j&x59=71U;}4W|-_nkZMH`P0IjlJfL(iUpMGIZ2M#_Sd+vZEMrqq$ zmX{Z^S;VM`v#7(iS}!2WIO*Vx99UehA17UuDO9UII~Qzm4nc3pYDmB?{g1D%P_;^n;3TPhKR;_V z<>jlS9%8GlmzO@P1sp)&XBEC>*%%Wl3F9i@IT*RLIqE}#a)cns_&_YUs3mD6-oMHwnH^W71 z0UtFiW<`Gp-i|4m@fHSSeChJtL6-sIrBen7+4VO9Z-Sp(`CA1mI>=^IIVzP&dOSB{ zw?&rW7_j zD}qUH#2=`#Dj<{aA#ZA;{2xl}IEY7rIZ4XyUAS9&W_Rwb9vicAh^ky3M{+R_k@f07KmOB~CKa~R zA+o!E{N!<}BIwt{8h`ylSi{Xv#{Z z#E+|iXzizMFOCWn;)5pVPR<~!FSI50Ye~3C%=B-;G+wRYS4HnG6{AGh_ zs|MbJFZF5XrZvhz7I&*&ygX|Ld3SZWy1YFrP$CMj(NqLk?pIJCXx((0z*}^p^15kH zbz6*Iym?tHpWJl3MJw|{z;aQ$4qq+uqtY)z2!a$?D)F}c zF*<2syu?NpF3XELKvQ6Wl2f;u!Wgr@)nSDa!zgW{Dy=7Ydglu!RaP|o50+I>FJnwi zR--1L533oft;3}Z#$t?dUZjg;j+4w$HH_vk+%*`>DN}vZFVTa_YTOg$vpAoJqeX;U z;GEA6--IE)@i61J#@%K$0B^$r31x~OZU}eCXPmG@6l21%rWaKL65}!+*FYlzq8ydR ztOnE_VDv16RE+_jU|pDXY*?WqtMv{?q5XX9PxCJ36Gs7}>p<8h^p6n>byfF(eNDEs7DA~<3T+^IizSf^aur-3Up}X^9VRA zRxR_mk1#=gF^4_`TY^2{7!4sPu0CW>96%jm0@))xoDx_iFfzEi1h@p%A}tCh2?Z#N zT_DI+iA&)W4Sq5NYYkq5^w470)-_}dq#{ZkWGRQKSii%P8;YBdnlM?&G+=okHVH}> zGhHgEP!oFd7|ED~Mq-Wz`>MjA@>PzK3Mc%+Hu=i$!k zq(VQGM&%T}C00PS(1w(#CrT`5K0K$m7F-o1ASZ!4EN#nzO6r-$$3qz{HzHeTt1Uq+ zJ%XrFEKP-0T$h{`m^XT0)%*Oztx;)*m-?|La6d{~w@S{%bWI@Y>+_Xld+HdD z&clCX&{9RzaI!#OM)@RwHj%fbj$BY6 aHCm53T`kEZXv2zeLT_iBFrfGb!~Y9OVpR74 literal 0 HcmV?d00001 diff --git a/EMMC.CPP b/EMMC.CPP new file mode 100644 index 0000000..fc0fca7 --- /dev/null +++ b/EMMC.CPP @@ -0,0 +1,402 @@ +/**********************************************************************/ +/* E M M C */ +/*--------------------------------------------------------------------*/ +/* Tarea : contiene algunas funciones para acceder a la */ +/* memoria EMS (Expanded Memory) */ +/*--------------------------------------------------------------------*/ +/* Autor : MICHAEL TISCHER */ +/* desarrollado el: 30.08.1988 */ +/* ltimo update : 29.01.1995 */ +/*--------------------------------------------------------------------*/ +/* modelo de memoria: alguno con puntero FAR a los datos, es */ +/* decir Compact, Large o Huge */ +/**********************************************************************/ + +/*== enlazar archivos Include =======================================*/ + +#include +#include +#include +#include +#include +#include "EMMC.h" + +/*== Typedefs ========================================================*/ + +typedef unsigned char BYTE; /*nos construimos un byte*/ +typedef unsigned int WORD; +typedef BYTE BOOL; /*como BOOLEAN en Pascal*/ + +/*== Macros ==========================================================*/ + +/*-- MK_FP crea de una direccin de segmento y Offset un -------------*/ +/*-- puntero FAR a un objeto -------*/ + +#ifdef MK_FP /*ya se defini MK_FP?*/ + #undef MK_FP +#endif +#define MK_FP(seg, ofs) ((void far *) ((unsigned long) (seg)<<16|(ofs))) + +/*-- PAGE_ADR devuelve un puntero a la pgina fsica X dentro del ----*/ +/*-- Page-Frame de la memoria EMS ----*/ + +#define PAGE_ADR(x) ((void *) MK_FP(ems_frame_seg() + ((x) << 10), 0)) + +/*== Constantes ======================================================*/ + +#define TRUE 1 /*Constantes para el trabajo con BOOL*/ +#define FALSE 0 + +#define EMS_INT 0x67 /*nmero de interrupcin para acceder a la EMM*/ +#define EMS_ERR -1 /*se devuelve en caso de error*/ + +/*== variables globales===============================================*/ + +BYTE emm_ec; /*aqu se guardan los cdigos de error EMM*/ + +/***********************************************************************/ +/* Funcin : E M S _ I N S T */ +/**--------------------------------------------------------------------**/ +/* Tarea : Determina si hay instalada memoria EMS, y un */ +/* driver EMS (EMM) asociado. */ +/* Parmetro entrada: ninguno */ +/* Valor de retorno : TRUE, si hay memoria EMS instalada, sino */ +/* FALSE. */ +/************************************************************************/ + +BOOL ems_inst() + { + static char emm_name[] = { 'E', 'M', 'M', 'X', 'X', 'X', 'X', '0' }; + union REGS regs; /*reg. de proc. para la llamada de interr.*/ + struct SREGS sregs; /*reg. de segm. para la llamada de interr.*/ + + /*-- Construir puntero a nombre en cabecera de un contr. de disp. --*/ + + regs.x.ax = 0x3567; /*n de func.: obtener vector int. 0x67*/ + intdosx(®s, ®s, &sregs); /*llamar la interr. del DOS 0x21*/ + return !memcmp( MK_FP(sregs.es, 10), emm_name, sizeof emm_name ); + } + +/************************************************************************/ +/* Funcin : E M S _ N U M _ P A G E */ +/**--------------------------------------------------------------------**/ +/* Tarea : Obtiene el n total de pginas EMS. */ +/* Parmetro entrada: ninguno */ +/* Valor de retorno : EMS_ERR en caso de error, sino el nmero de */ +/* pginas EMS. */ +/************************************************************************/ +int ems_num_page() + { + union REGS regs; /*reg. de proc. para la llamada de interr.*/ + + regs.h.ah = 0x42; /*nmero de funcin: obtener nmero de pginas*/ + int86(EMS_INT, ®s, ®s); /*llamar EMM*/ + if ((int) (emm_ec = regs.h.ah)) /*ha aparecido un error?*/ + return(EMS_ERR); /*S, mostrar error*/ + else /*no hay error*/ + return( regs.x.dx ); /*devolver nmero total de pginas*/ + } + +/**********************************************************************/ +/* Funcin : E M S _ F R E E _ P A G E */ +/**--------------------------------------------------------------------**/ +/* Tarea : Obtiene la cantidad de pginas EMS libres. */ +/* Parmetro entrada: ninguno */ +/* Valor de retorno : EMS_ERR en caso de error, sino el nmero de */ +/* pginas EMS libres. */ +/***********************************************************************/ + +int ems_free_page() + { + union REGS regs; /*reg. de proc. para la llamada de interr.*/ + + regs.h.ah = 0x42; /*nmero de funcin: obtener nmero de pginas*/ + int86(EMS_INT, ®s, ®s); /*llamar EMM*/ + if ((int) (emm_ec = regs.h.ah)) /*ha aparecido un error?*/ + return(EMS_ERR); /*S, mostrar error*/ + else /*no hay error*/ + return( regs.x.bx ); /*devolver nmero de pginas libres*/ + } + +/**********************************************************************/ +/* Funcin : E M S _ F R A M E _ S E G */ +/**--------------------------------------------------------------------**/ +/* Tarea : Obtiene la dir. de segmento del EMS-Page-Frame */ +/* Parmetro entrada: ninguno */ +/* Valor de retorno : EMS_ERR en caso de error, sino la direccin de */ +/* segmento del Page-Frame. */ +/***********************************************************************/ + +WORD ems_frame_seg() + { + union REGS regs; /*reg. de proc. para la llamada de interr.*/ + + regs.h.ah = 0x41; /*n de funcin: obt.dir.segm. Page-Frame*/ + int86(EMS_INT, ®s, ®s); /*llamar EMM*/ + if ((int) (emm_ec = regs.h.ah)) /*ha aparecido un error?*/ + return(EMS_ERR); /*S, mostrar error*/ + else /*no hay error*/ + return( regs.x.bx ); /*devolver direccin de segmento*/ + } + +/**********************************************************************/ +/* Funcin : E M S _ A L L O C */ +/**--------------------------------------------------------------------**/ +/* Tarea : Aloja el nmero de pginas indicado y devuelve */ +/* un Handle para acceder a estas pginas. */ +/* */ +/* Parmetro entrada: PAGES : el nmero de pginas a alojar */ +/* (de 16 KBytes cada uno) */ +/* Valor de retorno : EMS_ERR en caso de error, sino el Handle EMS. */ +/***********************************************************************/ + +int ems_alloc(int pages) + { + union REGS regs; /*reg. de proc. para la llamada de interr.*/ + + regs.h.ah = 0x43; /*nmero de funcin: aljar pginas*/ + regs.x.bx = pages; /*fijar nmero de pginas a alojar*/ + int86(EMS_INT, ®s, ®s); /*llamar EMM*/ + if ((int) (emm_ec = regs.h.ah)) /*ha aparecido un error?*/ + return(EMS_ERR); /*S, mostrar error*/ + else /*no hay error*/ + return( regs.x.dx ); /*devolver Handle-EMS*/ + } + +/**********************************************************************/ +/* Funcin : E M S _ M A P */ +/**--------------------------------------------------------------------**/ +/* Tarea : Proyecta una de las pginas alojadas bajo */ +/* el Handle indicado, a un pgina fsica del */ +/* del Page-Frame. */ +/* Parmetro entrada: HANDLE: el Handle devuelto por EMS_ALLOC */ +/* LOGP : la pgina lgica (0 a n-1) */ +/* PHYSP : la pgina fsica (0 a 3) */ +/* Valor de retorno : FALSE en caso de error, sino TRUE. */ +/***********************************************************************/ + +BOOL ems_map(int handle, int logp, BYTE physp) + { + union REGS regs; /*reg. de proc. para la llamada de interr.*/ + + regs.h.ah = 0x44; /*nmero de funcin: fijar Maping*/ + regs.h.al = physp; /*fijar pgina fsica*/ + regs.x.bx = logp; /*fijar pgina lgica*/ + regs.x.dx = handle; /*fijar Handle EMS*/ + int86(EMS_INT, ®s, ®s); /*llamar EMM*/ + return (!(emm_ec = regs.h.ah)); + } + +/**********************************************************************/ +/* Funcin : E M S _ F R E E */ +/**--------------------------------------------------------------------**/ +/* Tarea : Devuelve la memoria alojada bajo un Handle */ +/* de nuevo. */ +/* Parmetro entrada: HANDLE: el Handle devuelto por EMS_ALLOC */ +/* Valor de retorno : FALSE en caso de error, sino TRUE. */ +/***********************************************************************/ +BOOL ems_free(int handle) + { + union REGS regs; /*reg. de proc. para la llamada de interr.*/ + + regs.h.ah = 0x45; /*nmero de funcin: liberar pginas*/ + regs.x.dx = handle; /*fijar Handle EMS*/ + int86(EMS_INT, ®s, ®s); /*llamar EMM*/ + return (!(emm_ec = regs.h.ah)); /*si AH contiene 0, todo est ok*/ + } + +/**********************************************************************/ +/* Funcin : E M S _ V E R S I O N */ +/**--------------------------------------------------------------------**/ +/* Tarea : Obtiene el nmero de versin EMM. */ +/* Parmetro entrada: ninguno */ +/* Valor de retorno : EMS_ERR en caso de error, sino el nmero de */ +/* versin EMM. */ +/* Info : En el nmero de versin, 10 est por 1.0, 11 */ +/* por 1.1, 34 por 3.4, etc. */ +/***********************************************************************/ + +BYTE ems_version() + { + union REGS regs; /*reg. de proc. para la llamada de interr.*/ + + regs.h.ah = 0x46; /*nmero de funcin: obtener versin EMS*/ + int86(EMS_INT, ®s, ®s); /*llamar EMM*/ + if ((int) (emm_ec = regs.h.ah)) /*ha aparecido un error?*/ + return(EMS_ERR); /*S, mostrar error*/ + else /*sin error, calcula nmero de versin de cifra BCD*/ + return( (regs.h.al & 15) + (regs.h.al >> 4) * 10); + } + +/**********************************************************************/ +/* Funcin : E M S _ S A V E _ M A P */ +/**--------------------------------------------------------------------**/ +/* Tarea : Guarda la proyeccin (Mapping) entre pginas */ +/* lgicas y fsicas. */ +/* Parmetro entrada: HANDLE: el Handle devuelto por EMS_ALLOC */ +/* Valor de retorno : FALSE en caso de error, sino TRUE. */ +/***********************************************************************/ + +BOOL ems_save_map(int handle) + { + union REGS regs; /*reg. de proc. para la llamada de interr.*/ + + regs.h.ah = 0x47; /*nmero de funcin: guardar Mapping*/ + regs.x.dx = handle; /*fijar Handle EMS*/ + int86(EMS_INT, ®s, ®s); /*llamar EMM*/ + return (!(emm_ec = regs.h.ah)); /*si AH contiene 0, todo est ok*/ + } + +/**********************************************************************/ +/* Funcin : E M S _ R E S T O R E _ M A P */ +/**--------------------------------------------------------------------**/ +/* Tarea : Recupera una proyeccin entre pginas lgicas */ +/* y fsicas guardada anteriormente mediante */ +/* EMS_SAVE_MAP. */ +/* Parmetro entrada: HANDLE: el Handle devuelto por EMS_ALLOC */ +/* Valor de retorno : FALSE en caso de error, sino TRUE. */ +/***********************************************************************/ + +BOOL ems_restore_map(int handle) + { + union REGS regs; /*reg. de proc. para la llamada de interr.*/ + + regs.h.ah = 0x48; /*nmero de funcin: Recuperar Mapping*/ + regs.x.dx = handle; /*fijar Handle EMS*/ + int86(EMS_INT, ®s, ®s); /*llamar EMM*/ + return (!(emm_ec = regs.h.ah)); /*si AH contiene 0, todo est ok*/ + } + +/**********************************************************************/ +/* Funcin : P R I N T _ E R R */ +/**--------------------------------------------------------------------**/ +/* Tarea : Visualiza un mensaje de error EMS en la pantalla */ +/* y termina el programa. */ +/* Parmetro entrada: ninguno */ +/* Valor de retorno : ninguno */ +/* Info : Esta funcin slo se puede llamar si durante */ +/* la llamada anterior de una funcin del EMM */ +/* ha aparecido un error. */ +/***********************************************************************/ + +void print_err() + { + static char nid[] = "no identificable"; + static char *err_vec[] = + { "Error en el driver EMS (EMM destruido)", /*0x80*/ + "Error en el hardware EMS", /*0x81*/ + nid, /*0x82*/ + "Handle EMM no vlido", /*0x83*/ + "funcin EMS llamada no existe", /*0x84*/ + "no quedan Handles EMS disponibles", /*0x85*/ + "Error al guardar o recuperar el Mapping", /*0x86*/ + "ms pginas pedidas de las que existen fsicamente", /*0x87*/ + "ms pginas pedidas de las que quedan libres", /*0x88*/ + "pedidad cero pginas", /*0x89*/ + "pgina lgica no pertenece al Handle", /*0x8A*/ + "nmero de pgina fsico no vlido", /*0x8B*/ + "Zona de memoria mapping est llena", /*0x8C*/ + "Guardado del mapping ya se realiz", /*0x8D*/ + "Recuperar el mapping sin guardarlo previamente" + }; + + printf("\nATENCION! Error al acceder a la memoria EMS!r\n"); + printf(" ... %s\n", (emm_ec<0x80 || emm_ec>0x8E) ? + nid : err_vec[emm_ec-0x80]); + exit( 1 ); /*terminar programa con cdigo de error*/ + } + +/**********************************************************************/ +/* Funcin : V R _ A D R */ +/**------------------------------------------------------------------**/ +/* Tarea : Devuelve un puntero a la RAM de vdeo. */ +/* Parmetro entrada: ninguno */ +/* Valor de retorno : Puntero VOID a la RAM de vdeo. */ +/**********************************************************************/ + +void *vr_adr() + { + union REGS regs; /*reg. de proc. para la llamada de interr.*/ + + regs.h.ah = 0x0f; /*nmero de funcin:obtener modo de vdeo*/ + int86(0x10, ®s, ®s); /*llamar interrupcin de la BIOS de vdeo*/ + return ( MK_FP((regs.h.al==7) ? 0xb000 : 0xb800, 0) ); + } + + +/**********************************************************************/ +/** PROGRAMA PRINCIPAL **/ +/**********************************************************************/ +//// +////void main() +////{ +//// int pagenum, /*nmero de pginas EMS*/ +//// handle, /*Handle para acceder a la memoria EMS*/ +//// i; /*contador de bucle*/ +//// WORD pageseg ; /*direccin de segmento del Page-Frame*/ +//// BYTE emmver; /*nmero de versin de la EMM*/ +//// +//// printf("EMMC - (c) 1988, 92 by MICHAEL TISCHER\n\n"); +//// if ( ems_inst() ) /*Est instalada la memoria EMS?*/ +//// { /*Si*/ +//// /*-- Visualizar informaciones sobre la memoria EMS ----------------*/ +//// +//// if ( (int) (emmver = ems_version()) == EMS_ERR) /*Obten. n versin*/ +//// print_err(); /*Error: visualizar men. error y term. el programa*/ +//// else /*no hay error*/ +//// printf("Nmero de versin EMM : %d.%d\n", +//// emmver/10, emmver%10); +//// +//// if ( (pagenum = ems_num_page()) == EMS_ERR) /*obten. n pginas*/ +//// print_err(); /*Error: vis. men. de error y terminar el programa*/ +//// printf("Nmero de pginas EMS : %d (%d KByte)\n", +//// pagenum, pagenum << 4); +//// +//// if ( (pagenum = ems_free_page()) == EMS_ERR) +//// print_err(); /*Error: vis. men. error y terminar el programa*/ +//// printf("... libres : %d (%d KByte)\n", +//// pagenum, pagenum << 4); +//// +//// if ( (int) (pageseg = ems_frame_seg()) == EMS_ERR) +//// print_err(); /*Error: vis. men. error y terminar el programa*/ +//// printf("Direcc. segmento del Page-Frame: %X\n", pageseg); +//// +//// printf("\nAhora se aloja una pgina de la memoria EMS, y el con-\n"); +//// printf("tenido de la pantalla de la RAM de vdeo se copia a\n"); +//// printf("esta pgina.\n"); +//// printf(" ... por favor pulse una tecla\n"); +//// getch(); /*esperar una tecla*/ +//// +//// /*-- alojar una pgina y poyectar sobre la primera pgina lgica --*/ +//// /*-- en el Page-Frame ---*/ +//// +//// if ( (handle = ems_alloc(1)) == EMS_ERR) +//// print_err(); /*Error: vis. men. error y terminar el programa*/ +//// if ( !ems_map(handle, 0, 0) ) /*fijar Mapping*/ +//// print_err(); /*Error: vis. men. de error y terminar el programa*/ +//// +//// /*-- Copiar 4000 bytes de la RAM de vdeo a la memoria EMS ----*/ +//// +//// memcpy(PAGE_ADR(0), vr_adr(), 4000); +//// +//// for (i=0; i<24; ++i) /*borrar la pantalla*/ +//// printf("\n"); +//// +//// printf("El antiguo contenido de la pantalla ha sido borrado y\n"); +//// printf("con ello se ha perdido. Pero como ha sido guardado en\n"); +//// printf("la memoria EMS, se puede volver a copiar de all a la\n"); +//// printf("RAM de vdeo.\n"); +//// printf(" ... por favor pulse una tecla\n"); +//// getch(); /*esperar una tecla*/ +//// +//// /*-- copiar de nuevo el contenido de la RAM de vdeo de la memo----*/ +//// /*-- ria EMS y devolver la memoria EMS alojada ----*/ +//// +//// memcpy(vr_adr(), PAGE_ADR(0), 4000); /*copiar la V-RAM de vuelta*/ +//// if ( !ems_free(handle) ) /*liberar memoria*/ +//// print_err(); /*Error: vis. men. error y terminar el programa*/ +//// printf("FIN"); +//// } +//// else /*el driver EMS no se descubri*/ +//// printf("ATENCION: No hay memoria EMS instalada.\n"); +////} diff --git a/EMMC.H b/EMMC.H new file mode 100644 index 0000000..30a57a3 --- /dev/null +++ b/EMMC.H @@ -0,0 +1,46 @@ +/*== Typedefs ========================================================*/ + +typedef unsigned char BYTE; /*nos construimos un byte*/ +typedef unsigned int WORD; +typedef BYTE BOOL; /*como BOOLEAN en Pascal*/ + +/*== Macros ==========================================================*/ + +/*-- MK_FP crea de una direccin de segmento y Offset un -------------*/ +/*-- puntero FAR a un objeto -------*/ + +#ifdef MK_FP /*ya se defini MK_FP?*/ + #undef MK_FP +#endif +#define MK_FP(seg, ofs) ((void far *) ((unsigned long) (seg)<<16|(ofs))) + +/*-- PAGE_ADR devuelve un puntero a la pgina fsica X dentro del ----*/ +/*-- Page-Frame de la memoria EMS ----*/ + +#define PAGE_ADR(x) ((void *) MK_FP(ems_frame_seg() + ((x) << 10), 0)) + +/*== Constantes ======================================================*/ + +#define TRUE 1 /*Constantes para el trabajo con BOOL*/ +#define FALSE 0 + +#define EMS_INT 0x67 /*nmero de interrupcin para acceder a la EMM*/ +#define EMS_ERR -1 /*se devuelve en caso de error*/ + +/*== variables globales===============================================*/ + +extern BYTE emm_ec; /*aqu se guardan los cdigos de error EMM*/ + + +BOOL ems_inst(void); +int ems_num_page(void); +int ems_free_page(void); +WORD ems_frame_seg(void); +int ems_alloc(int pages); +BOOL ems_map(int handle, int logp, BYTE physp); +BOOL ems_free(int handle); +BYTE ems_version(void); +BOOL ems_save_map(int handle); +BOOL ems_restore_map(int handle); +void print_err(void); + diff --git a/LIST_COL.H b/LIST_COL.H new file mode 100644 index 0000000..44ca393 --- /dev/null +++ b/LIST_COL.H @@ -0,0 +1,5 @@ +// Aqui se debe poner cual sera el color negro, +// para la utilizacin por Make_Boton... + +#define NEGRO 240 + diff --git a/LITTF.OBJ b/LITTF.OBJ new file mode 100644 index 0000000000000000000000000000000000000000..48fd97bcef048c17a8134719630ea93cceb51e92 GIT binary patch literal 5240 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 X@sk~|_wmQOUEo&-@b9j~N-h5nGci+Y literal 0 HcmV?d00001 diff --git a/PCX16C.CPP b/PCX16C.CPP new file mode 100644 index 0000000..af5f3de --- /dev/null +++ b/PCX16C.CPP @@ -0,0 +1,335 @@ +#include +#include +#include +#include +#include +#include + +#include "..\libs\make_bot\make_bot.h" +#include "..\libs\wavplav\wavplay.h" +extern void Sonido(char Sonido); + +#include "XmsSupp.h" + +/******************************* DEFINICIONES ******************************/ + + +#define GRAFICO 18 /* su nmero en el proceso de compilacin */ + +void reinicializa_raton_grafico(int x1, int y1, int x2, int y2); +/*********************** DECLARACIONES DE FUNCIONES ************************/ +extern char raton; + //**// + //* Cabecera completa de un PCX *// + //**// + +typedef struct { + char indicador; /* constante. Si=10 es un archivo PCX */ + char version; /* version pcx */ + char codificacion; /* Si=1 el PCX esta comprimido */ + char bits_pixel; /* bits por pixel (1,2,4,8) */ + /* los 4 campos que siguen dan el recuadrado de la imagen */ + unsigned int Xmin; + unsigned int Ymin; + unsigned int Xmax; + unsigned int Ymax; + unsigned int Hres; + unsigned int Vres; + char paleta_16[48]; /* si la pcx tiene <=16 colores, aqui paleta */ + char reserv1; /* reservado */ + char nplanos; /* num. de planos usados en la imagen */ + unsigned int bytes_linea; /* bytes necesarios para decodificar una linea */ + unsigned int infopal; /* Si=1 color o blanco y negro. 0=grises */ + unsigned int anchura; /* anchura de la imagen */ + unsigned int altura; /* altura de la imagen */ + char sobrante[54]; /* sobrante de cabecera para futuras ampliaciones */ +} PCX_HEADER; + +void asigna_modo_video(char); +extern "C" void VUELCA_PANTALLA(unsigned char *); +extern "C" void VUELCA_PANTALLA_B(unsigned char *); +int lee_dibujo(char *dibujo); +extern void InicializaSVGA(void); + +extern char dac[256*3]; +char newdac[256*3]; +extern "C" void ENCIENDE_PANTALLA(char *); +extern "C" void CHANGE_BANK(int); + +extern XmsSupp Xms_Image_Bank1, + Xms_Image_Bank2, + Xms_Image_Bank3, + Xms_Image_Bank4, + Xms_Image_Bank5; + +/*************************** VARIABLES GLOBALES ****************************/ + +int Lee_Cabecera(char *dibujo); +void ChkErr(void); + +extern void Inicializa_Dibujo(int L_Imagen, char *N_Imagen2); + +extern char SONIDO; + +void Carga_PCX(char *Imagen) +{ + int col; + char Old_Dac[256*3]; + // Guardamos el contenido de la pantalla + // Asignamos Puntero a Memoria convencional y miramos si + // hay ERROR. + // Movemos a XMS y si hay ERROR lo Visualizamos. + CHANGE_BANK(0); SetConPntr(MK_FP(0xA000, 0), &Xms_Image_Bank1); + ChkErr(); Move2Xms(&Xms_Image_Bank1); ChkErr(); + CHANGE_BANK(1); SetConPntr(MK_FP(0xA000, 0), &Xms_Image_Bank2); + ChkErr(); Move2Xms(&Xms_Image_Bank2); ChkErr(); + CHANGE_BANK(2); SetConPntr(MK_FP(0xA000, 0), &Xms_Image_Bank3); + ChkErr(); Move2Xms(&Xms_Image_Bank3); ChkErr(); + CHANGE_BANK(3); SetConPntr(MK_FP(0xA000, 0), &Xms_Image_Bank4); + ChkErr(); Move2Xms(&Xms_Image_Bank4); ChkErr(); + CHANGE_BANK(4); SetConPntr(MK_FP(0xA000, 0), &Xms_Image_Bank5); + ChkErr(); Move2Xms(&Xms_Image_Bank5); ChkErr(); + + + + // Guardamos los colores originales + for( col = 0; col < 256*3; col++) + Old_Dac[col] = dac[col]; + + + switch( Lee_Cabecera(Imagen) ) { + case 1: // 640x480 16c + case 3: // 640x400 16c + asigna_modo_video(18); + lee_dibujo(Imagen); + PunteroRaton = 1; + Espera_Tecla_o_Raton(); + PunteroRaton = 100; +// getch(); + InicializaSVGA(); + break; + case 2: // 640x480 246c + case 4: // 640x400 246c + cleardevice(); + Inicializa_Dibujo( (-2), Imagen); + + for( col = (256-16)*3; col < (256)*3; col++) + dac[col] = newdac[ col ]; + + ENCIENDE_PANTALLA(dac); + PunteroRaton = 1; + if( SONIDO == 1 ) + { + PlayLongWav( "CD_OUT.cr2", 0, -1 ); + getch(); + } + else + Espera_Tecla_o_Raton(); + PunteroRaton = 100; + + while( kbhit() ) getch(); +// getch(); + break; + } + + // Restauramos el contenido de la pantalla + // Asignamos Puntero a Memoria convencional y miramos si + // hay ERROR. + // Movemos a XMS y si hay ERROR lo Visualizamos. + CHANGE_BANK(0); SetConPntr(MK_FP(0xA000, 0), &Xms_Image_Bank1); + ChkErr(); Move2Con(&Xms_Image_Bank1); ChkErr(); + CHANGE_BANK(1); SetConPntr(MK_FP(0xA000, 0), &Xms_Image_Bank2); + ChkErr(); Move2Con(&Xms_Image_Bank2); ChkErr(); + CHANGE_BANK(2); SetConPntr(MK_FP(0xA000, 0), &Xms_Image_Bank3); + ChkErr(); Move2Con(&Xms_Image_Bank3); ChkErr(); + CHANGE_BANK(3); SetConPntr(MK_FP(0xA000, 0), &Xms_Image_Bank4); + ChkErr(); Move2Con(&Xms_Image_Bank4); ChkErr(); + CHANGE_BANK(4); SetConPntr(MK_FP(0xA000, 0), &Xms_Image_Bank5); + ChkErr(); Move2Con(&Xms_Image_Bank5); ChkErr(); + + // Restauramos los colores originales + for( col = 0; col < 256*3; col++) + dac[col] = Old_Dac[col]; + ENCIENDE_PANTALLA(dac); + + reinicializa_raton_grafico( 0, 0, 618, 460); + + +} + + +void asigna_modo_video(char modo) /* asigna el modo de vdeo indicado */ +{ /* en la variable "modo" */ + union REGS r; + + r.h.al = modo; + r.h.ah = 0; + int86(16, &r, &r); +} + +int Lee_Cabecera(char *dibujo){ + FILE *handle_dibujo; + long ancho, alto; + int col; + PCX_HEADER Cabecera; + + if((handle_dibujo=fopen(dibujo, "rb"))==NULL) { + return -2; + } + + // Saltamos la cabecera + fread( &Cabecera, sizeof(PCX_HEADER), 1, handle_dibujo ); + + ancho= Cabecera.Xmax - Cabecera.Xmin+1; + alto = Cabecera.Ymax - Cabecera.Ymin+1; + + col = ( (Cabecera.bits_pixel<=4) ? 16 : 256 ); + fclose(handle_dibujo); + + if(ancho == 640 && alto == 480 && col == 16) return 1; + if(ancho == 640 && alto == 480 && col ==256) return 2; + if(ancho == 640 && alto == 400 && col == 16) return 3; + if(ancho == 640 && alto == 400 && col ==256) return 4; + if(ancho == 320 && alto == 200 && col ==256) return 5; + + return (-1); +} + +int lee_dibujo(char *dibujo) +{ + int *dir_dibu; + char huge *dir; + PCX_HEADER Cabecera; + struct SREGS seg; + union REGS ent, sal; + int num_color, n; + long int dir2; + unsigned char *dir_col; + unsigned char *dir_planos; + FILE *handle_dibujo; + long ancho, alto; + int filas, columnas, byte, contador; + int colores[16] = { 0, 1, 2, 3, 4, 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63 }; + + if((handle_dibujo=fopen(dibujo, "rb"))==NULL) { + return -2; + } + + // Saltamos la cabecera + fread( &Cabecera, sizeof(PCX_HEADER), 1, handle_dibujo ); + + ancho= Cabecera.Xmax - Cabecera.Xmin+1; + alto = Cabecera.Ymax - Cabecera.Ymin+1; + + + //**// + //* Asigna memoria *// + //**// + if((dir_planos=(unsigned char *)farmalloc( (long)((ancho*alto)/2) ) )==NULL) { + if(fclose(handle_dibujo)!=NULL) { + return -2; + } + return -1; + } + + + dir=(char huge *)dir_planos; + while(!feof(handle_dibujo)) { + + for(filas=alto; filas>0 && !feof(handle_dibujo); filas--) { + columnas=ancho/2; + while( columnas>0 && !feof(handle_dibujo) ) { + byte=getc(handle_dibujo); + if(byte<=192) { *dir++=byte; columnas--; } + else { + contador=byte&0x3F; byte=getc(handle_dibujo); + for(; contador>0; contador--) { + *dir++=byte; columnas--; + } + } + } + } + + } + + + if(fclose(handle_dibujo)!=NULL) { + return -2; + } + + dir_col=Cabecera.paleta_16; /* divide entre 4 */ + for(n=16*3; n>0; n--) { /* los colores */ + *dir_col=(*dir_col) >> 2; dir_col++; + } + + dir2 =(long)Cabecera.paleta_16; /* obtiene el segmento */ + seg.es=(int) (dir2 >> 16); /* donde estan los colores */ + + for(n=0; n<16; n++) { + num_color=colores[n]; + ent.h.al = 18; + ent.h.ah = 16; + ent.x.bx = num_color; + ent.x.cx = 1; + ent.x.dx = (int)dir2; /* offset de los colores */ + int86x(0x10, &ent, &sal, &seg); /* funcin para asignar los colores */ + dir2+=3; + } + + +// if( alto == 400 ) VUELCA_PANTALLA(dir_planos); +// else VUELCA_PANTALLA_B(dir_planos); + VUELCA_PANTALLA(dir_planos); + + + + farfree(dir_planos); + + return 0; + +} + +void reinicializa_raton_grafico(int x1, int y1, int x2, int y2) +{ + + + struct SREGS seg; + union REGS ent, sal; + + 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 */ + } +} +void ChkErr(void) + { + if(Xms_Image_Bank1.lError || Xms_Image_Bank2.lError || + Xms_Image_Bank3.lError || Xms_Image_Bank4.lError || + Xms_Image_Bank5.lError ) + { + closegraph(); + printf("Bank1 %s\n",Xms_Image_Bank1.cError); + printf("Bank2 %s\n",Xms_Image_Bank2.cError); + printf("Bank3 %s\n",Xms_Image_Bank3.cError); + printf("Bank4 %s\n",Xms_Image_Bank4.cError); + printf("Bank5 %s\n",Xms_Image_Bank5.cError); + printf("Cambiando Bancos, Hemos salido con los codigos: %d, %d, %d, %d", + Xms_Image_Bank1.lError, Xms_Image_Bank2.lError, + Xms_Image_Bank3.lError, Xms_Image_Bank4.lError, Xms_Image_Bank5.lError ); + exit(1); + } + } \ No newline at end of file diff --git a/R.BAT b/R.BAT new file mode 100644 index 0000000..28da3d3 --- /dev/null +++ b/R.BAT @@ -0,0 +1 @@ +edit cd_out.img diff --git a/SUPERVGA.ASM b/SUPERVGA.ASM new file mode 100644 index 0000000..f1f963d --- /dev/null +++ b/SUPERVGA.ASM @@ -0,0 +1,163 @@ + + .MODEL COMPACT + .286 + .CODE + +BUFFER_SVGA DB 256 DUP (0) + + PUBLIC _SET_VESA + +_SET_VESA PROC NEAR + PUSH BP + MOV BP,SP + PUSH DI + PUSH ES + +VER_SVGA: MOV AX,CS + MOV ES,AX + MOV DI,OFFSET CS:BUFFER_SVGA + MOV AX,4F00h + INT 10h + MOV AX,2 + CMP WORD PTR CS:[BUFFER_SVGA+0],"EV" + JNE NO_VESA + CMP WORD PTR CS:[BUFFER_SVGA+2],"AS" + JE SI_SVGA +NO_VESA: MOV AX,0 + JMP NO_SVGA + +SI_SVGA: MOV AH,4Fh + MOV AL,02h + MOV BX,[BP+4] + INT 10h + MOV AX,1 + +NO_SVGA: POP ES + POP DI + POP BP + RET +_SET_VESA ENDP + + PUBLIC _CHANGE_BANK + +_CHANGE_BANK PROC NEAR + PUSH BP + MOV BP,SP + + MOV AH,4Fh + MOV AL,05h + MOV BX,0 ;ventana de acceso + MOV DX,[BP+4] ;bank + INT 10h + + POP BP + RET +_CHANGE_BANK ENDP + + PUBLIC _APAGA_PANTALLA + +_APAGA_PANTALLA PROC NEAR + PUSH BP + MOV BP,SP + PUSH SI + PUSH DS + + MOV CH,0 + MOV CL,0 +SIGUE_APAGANDO: MOV DX,3C8h + MOV AL,0 + OUT DX,AL + + MOV DX,3DAh +ESPERA_FIN_RETR:IN AL,DX + TEST AL,00001000b + JNZ ESPERA_FIN_RETR +ESPERA_INI_RETR:IN AL,DX + TEST AL,00001000b + JZ ESPERA_INI_RETR + + MOV DX,3C9h + LDS SI,[BP+4] +OTRO_DAC: MOV AL,[SI] + SUB AL,CH + JGE DEC_ROJO + MOV AL,0 +DEC_ROJO: OUT DX,AL + MOV AL,[SI+1] + SUB AL,CH + JGE DEC_VERDE + MOV AL,0 +DEC_VERDE: OUT DX,AL + MOV AL,[SI+2] + SUB AL,CH + JGE DEC_AZUL + MOV AL,0 +DEC_AZUL: OUT DX,AL + ADD SI,3 + INC CL + JNZ OTRO_DAC + INC CH + CMP CH,00111111b + JL SIGUE_APAGANDO + + POP DS + POP SI + POP BP + RET +_APAGA_PANTALLA ENDP + + PUBLIC _ENCIENDE_PANTALLA + +_ENCIENDE_PANTALLA PROC NEAR + PUSH BP + MOV BP,SP + PUSH SI + PUSH DS + + MOV CH,00111111b + MOV CL,0 +SIGUE_ENCENDIEN:MOV DX,3C8h + MOV AL,0 + OUT DX,AL + + MOV DX,3DAh +ESPERA_FIN_RET: IN AL,DX + TEST AL,00001000b + JNZ ESPERA_FIN_RET +ESPERA_INI_RET: IN AL,DX + TEST AL,00001000b + JZ ESPERA_INI_RET + + MOV DX,3C9h + LDS SI,[BP+4] +OTR_DAC: MOV AL,[SI] + SUB AL,CH + JGE INC_ROJO + MOV AL,0 +INC_ROJO: OUT DX,AL + MOV AL,[SI+1] + SUB AL,CH + JGE INC_VERDE + MOV AL,0 +INC_VERDE: OUT DX,AL + MOV AL,[SI+2] + SUB AL,CH + JGE INC_AZUL + MOV AL,0 +INC_AZUL: OUT DX,AL + ADD SI,3 + DEC CL + JNZ OTR_DAC + CMP CH,00000000b + JZ FIN_ENCENDER + DEC CH + JMP SIGUE_ENCENDIEN + +FIN_ENCENDER: POP DS + POP SI + POP BP + RET +_ENCIENDE_PANTALLA ENDP + + END + diff --git a/SUPERVGA.CPP b/SUPERVGA.CPP new file mode 100644 index 0000000..1143b95 --- /dev/null +++ b/SUPERVGA.CPP @@ -0,0 +1,147 @@ +////////////////////////////////////////////////////////////////////////////// +// // +// MODO SVGA VESA DE 640 X 480 EN 256 COLORES // +// // +// Jos Antonio Acedo Martn-Grande (91)611 72 71 (Madrid) // +// // +////////////////////////////////////////////////////////////////////////////// + +///////////////////////////// FICHEROS A INCLUIR ///////////////////////////// + +#include +#include +#include +#include + +//////////////////////////////// DEFINICIONES //////////////////////////////// + +#define MODO_80x25_16c 0x003 +#define MODO_640x480_256c 0x101 + +////////////////////////////////// VARIABLES ///////////////////////////////// + +char *dir_vga; +int ancho; +int alto; +char bits_pixel; +FILE *handle; + +char dibujo[15]; +char dac[256*3]; + +//////////////////////// DECLARACIONES DE FUNCIONES ////////////////////////// + +void dibujo_640_x_480_256_c(void); +void asigna_modo_video(char); + +extern "C" +{ + int SET_VESA(int); + void CHANGE_BANK(int); + void ENCIENDE_PANTALLA(char *); + void APAGA_PANTALLA(char *); +} + +///////////////////////////////// PROGRAMA /////////////////////////////////// + +int main(int argc, char *argv[]) +{ + int esq_x1, esq_y1, esq_x2, esq_y2; + + if(argc!=2) exit(1); + + if(NULL==SET_VESA(MODO_640x480_256c)) + { + asigna_modo_video(MODO_80x25_16c); + printf("No se encontr el driver VESA"); + exit(1); + } + + if((handle=fopen(argv[1], "rb"))==NULL) + { + asigna_modo_video(MODO_80x25_16c); + printf("No se encontr el archivo especificado"); + exit(1); + } + + if(10!=getc(handle)) + { + asigna_modo_video(MODO_80x25_16c); + printf("El archivo especificado no es un fichero PCX"); + exit(1); + } + + getw(handle); bits_pixel=getc(handle); + + esq_x1=getw(handle); esq_y1=getw(handle); + esq_x2=getw(handle); esq_y2=getw(handle); + + ancho=esq_x2-esq_x1+1; + alto =esq_y2-esq_y1+1; + + if(ancho!=640 || alto!=480 || bits_pixel!=8) + { + asigna_modo_video(MODO_80x25_16c); + printf("El fichero especificado no es un dibujo de 640 x 480 en 256 colores"); + exit(1); + } + + APAGA_PANTALLA(dac); + + dibujo_640_x_480_256_c(); + ENCIENDE_PANTALLA(dac); + + getch(); + + APAGA_PANTALLA(dac); + + asigna_modo_video(MODO_80x25_16c); + + return(0); +} + +void dibujo_640_x_480_256_c(void) +{ + unsigned char byte, contador; + int bank, n; + + fseek(handle, 128, 0); + + bank=0; (long)dir_vga=0xA0000000L; + + for(alto=480; alto>0; alto--) + { + for(ancho=640; ancho>0; ) + { + byte=getc(handle); + if(byte<=0xC0) + { + *dir_vga++=byte; ancho--; + if((long)dir_vga==0xA0000000L) { bank++; CHANGE_BANK(bank); } + } + else + { + contador=byte&0x3F; byte=getc(handle); + for(; contador>0; contador--) + { + *dir_vga++=byte; ancho--; + if((long)dir_vga==0xA0000000L) { bank++; CHANGE_BANK(bank); } + } + } + } + } + getc(handle); + + for(n=0; n<256*3; n++) dac[n]=getc(handle) >> 2; + + fclose(handle); +} + +void asigna_modo_video(char modo) // asigna el modo de vdeo indicado +{ // en la variable "modo" + union REGS ent, sal; + + ent.h.al = modo; + ent.h.ah = 0; + int86(16, &ent, &sal); // funcin para asignar el modo de video +} \ No newline at end of file diff --git a/SUPERVGA.OBJ b/SUPERVGA.OBJ new file mode 100644 index 0000000000000000000000000000000000000000..629a04c6c692ce9d4d0e6471f6baa54da4ddcd82 GIT binary patch literal 1801 zcmbtVYitx%6#l;5**>796w0G5&?3l>1}YDg5P|NnJ1h%jx7`<5D1$(?RS|5vpn+mZ zRfd+w@>+Qc5+5~c1cOKlrpQAn5q}sYh93r^L4|76kQmdn_1+n}wdg;8%*;98ckY?< zow@f+eI_yr3l|5&C0ZcjQ47`J{P9LUfDxf+^|Dp@YE4bW%4N@1ROjbMDynO$Ry~(L zrEt=IV;G!2pUJW3-M_fgunVR*ZUZW%`Nr;e8XS5^TNqMYezz9in~XVjo6XJvCgD~? zsv>XaBmpQ6X2esFA+@+zZ6?Bo1J0Yd zm>L@@Vls5KMD?hNfKp;tB4D5hNY#T{NRMbi6~y`kHCRw-x@(T=^Jw}k)i=*cZ0}(W z1G>wG$RGh?}sA^1r8%sn4&g}MTTkTNSo9#!2vSGUjp$=JOHw`6x;_9i^Os0B0h^B7~_T!dX~I7s}{HIW_3?U@7NdIlWlH zxpD5f8@K=)xeyI}9Gh5%&0K^=F2+`t zV>_2%7j^96QpEWL_Hh{wa5)Zf1rDSxE?L6!)b27r+f*mtjAey#5p$L0$;`#dJD!$|U$$jYH zesuC6x_Jn&y$;$A!)Ci{41x1j|5@SLv$cR86bDpp4&ah8NZ=`vd!RfW4jwQv1(@vf zo7-Dr1-xuwL9e-3ViS2j5hoK$Y&uUGgT>n3!y)#r*kVp&s6hLi3rRQ`l$-O`fS}hC z)~plfbNgkcG9EFq1(l%%#XwQ@*&_V&pEoW9A&g=6gxJss3lKi27Uw5l6xuAwc z7UU-pE|%aPj<#NS-%yYmO1Z$|EDd6^h`}O; zi(Ge{e_8taijY(bGy72YG)StIsa9i!gdPQ#In64|>+4l;mDel<5=$qE0Xa?sO%Z{bKxEX% zIF6P}_G9?9<+{DSIVIX5ZnYgPZT5?6lt!iCVx1C;3AWMAf7rH!-SD}+>$B*!u8Z}Z yMe9%IE$K;H^#9YgMX%L&qBbcO>$-C1BbmD4U^*`J3-Q7*aXk=XTch|{)&33Qm)#Hm literal 0 HcmV?d00001 diff --git a/SVGA256F.OBJ b/SVGA256F.OBJ new file mode 100644 index 0000000000000000000000000000000000000000..ddc90687148c99eec713a0a025c9c67475c3c838 GIT binary patch literal 5494 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 +#include +#include +#include +#include +#include +#include +#include + +#include "XMSSUPP.H" + +void SetVideoMode(unsigned char Mode) +{ + _asm{ + mov ah,0x00; + mov al,Mode; + int 0x10; + } +} +void main() +{ + +XmsSupp TestXms; // Clase de Soporte XMS. +unsigned char *Pantalla; // Puntero a Memoria Convencional. +int Cnt; // Contador para bucle + + while(kbhit()) getch(); + // Errores en Inicializacion XMS. + TestXms.lError=0; // Indicador de Error a cero + InitXms(&TestXms); // Inicializa XMS. + + GetInfo(&TestXms); // Informe de estado. + while(!kbhit()); + getch(); +// Xms_Init(&TestXms); + if(TestXms.lError) + { + printf("%s\n",TestXms.cError); + return; + } + // Reservamos 64K. Si hay Error lo Visualizamos. + AllocXms(64, &TestXms); + if(TestXms.lError) + printf("%s\n",TestXms.cError); + + // Reservamos Memoria Convencional. + if(!(Pantalla=new unsigned char [64000])) + printf("ERROR en Reserva de Memoria Convencional.\n"); + else + { + // Construimos Pantalla + for(Cnt=0;Cnt<200;Cnt++) + memset((Pantalla+(Cnt*320)),Cnt,320); + // Asignamos Puntero a Memoria convencional y miramos si + // hay ERROR. + SetConPntr(Pantalla, &TestXms); + if(TestXms.lError) + printf("%s\n",TestXms.cError); + // Movemos a XMS y si hay ERROR lo Visualizamos. + Move2Xms(&TestXms); + if(TestXms.lError) + printf("%s\n",TestXms.cError); + SetConPntr(MK_FP(0xA000,0), &TestXms); + // Activamos Video MCGA. + SetVideoMode(0x13); + // Movemos a Convencional y si hay ERROR lo Visualizamos. + Move2Con(&TestXms); + if(TestXms.lError) + { + SetVideoMode(0x3); + printf("%s\n",TestXms.cError); + } + getch(); + SetVideoMode(0x3); + // Liberamos XMS si hay ERROR lo Visualizamos. + FreeXms(&TestXms); + if(TestXms.lError) + printf("%s\n",TestXms.cError); + } + // Liberamos Memoria Convencional. + delete Pantalla; +return; +} diff --git a/XMSSUPP.CPP b/XMSSUPP.CPP new file mode 100644 index 0000000..403a87d --- /dev/null +++ b/XMSSUPP.CPP @@ -0,0 +1,939 @@ +#include +#include +#include +#include +#include + +#include "XMSSUPP.H" + +// extern unsigned _stklen = 16000U; + +/* +XmsSupp::XmsSupp() +//////////////////////////////////////////////////////////////////////////// +// Descripcion: Constructor de Clase. +// +// Entradas: Ninguna. +// +// Salidas: Ninguna. +//////////////////////////////////////////////////////////////////////////// +{ + lError=0; // Indicador de Error a cero + InitXms(); // Inicializa XMS. +} + +void XmsSupp::InitXms() +//////////////////////////////////////////////////////////////////////////// +// Descripcion: Inicializa la Clase. +// +// Entradas: Ninguna. +// +// Salidas: 1 Controlador XMS Presente. +// 0 Controlador XMS Ausente. +//////////////////////////////////////////////////////////////////////////// +{ +char Stat; + _asm{ + mov ax,0x04300; + int 0x02f; // Mira si esta el Driver + mov Stat,al; // Guarda valor en Stat + } + if(Stat==(char)0x80) // Stat=80H ? + { + Present=1; // Si, Esta presente + GetXmsDir(); // Donde esta el driver. + GetXmsVer(); // Mira version + GetXmsFree(); // Mira memoria libre + GetInfo(); // Informe de estado. +} + else + { + Present=0; // Si no, no presente + GetXmsErr(0xFF); // Pon error. + } +} + +void XmsSupp::GetInfo() +//////////////////////////////////////////////////////////////////////////// +// Descripcion: Captura Informacion de la XMS. +// +// Entradas: Ninguna. +// +// Salidas: Ninguna. +//////////////////////////////////////////////////////////////////////////// +{ + printf("Ŀ\n"); + printf(" Soporte XMS V 1.0. Fernando Perez Alonso. '95 \n"); + printf(" \n"); + printf(" Ver. XMS. %o.%02o.\t\t\t\t \n",HiVerXms,LoVerXms); + printf(" Rev. XMS. %o.%02o.\t\t\t\t \n",HiVerCtr,LoVerCtr); + if(lHMA) + printf(" HMA Presente. \n"); + else + printf(" HMA Ausente. \n"); + printf(" Memoria Libre %4u Ks.\t\t\t \n",TotXmsFree); + printf(" Tamao Max. Bloque %4u Ks.\t\t\t \n",BigBlock); + printf("\n\n\n"); +} + +void XmsSupp::GetXmsDir() +{ +//////////////////////////////////////////////////////////////////////////// +// Descripcion: Captura la Direccion del Contolador de XMS. +// +// Entradas: Ninguna. +// +// Salidas: Ninguna. +//////////////////////////////////////////////////////////////////////////// +unsigned long XMSDIR; + if(!Present) // No Esta presente ? + { + GetXmsErr(0xFF); // Pon error + return; // y retorna. + } + _asm{ + push es; // guarda ES en la pila + mov ax,0x04310; // capturamos direccion + int 0x02f; // del driver + mov word ptr XMSDIR,bx // y la guardamos + mov word ptr XMSDIR+2,es // en la varibale XMSDIR + pop es; // recupera ES + } + XmsDir=XMSDIR; // actualiza la varibale de clase. +return; +} + +void XmsSupp::GetXmsVer() +//////////////////////////////////////////////////////////////////////////// +// Descripcion: Captura Version, Revision y estado del HMA. +// +// Entradas: Ninguna. +// +// Salidas: Ninguna. +//////////////////////////////////////////////////////////////////////////// +{ +unsigned long XMSDIR=XmsDir; +char HVXMS,LVXMS,HVCTR,LVCTR; +unsigned HMA; + + if(!Present) + { + GetXmsErr(0xFF); + return; + } + + _asm{ + mov ah,0; // Miraremos + call dword ptr XMSDIR; // Informacion del driver + mov HVXMS,ah; // Version + mov LVXMS,al; // + mov HVCTR,bh; // Revision + mov LVCTR,bl; // + mov HMA,dx; // Estado del HMA + } + HiVerXms=HVXMS; // Actualizamos + HiVerCtr=HVCTR; // variables + LoVerXms=LVXMS; // de + LoVerCtr=LVCTR; // Clase + lHMA=HMA; // +} + +void XmsSupp::GetXmsFree() +//////////////////////////////////////////////////////////////////////////// +// Descripcion: Captura Memoria XMS Libre. +// +// Entradas: Ninguna. +// +// Salidas: Ninguna. +//////////////////////////////////////////////////////////////////////////// +{ +unsigned long XMSDIR=XmsDir; +unsigned BIGBLOCK; +unsigned TOTXMSFREE; + + if(!Present) + { + GetXmsErr(0xFF); + return; + } + + _asm{ + mov ah,8; // Campturamos memoria + call dword ptr XMSDIR; // Libre + mov BIGBLOCK,ax; // y el tamao + mov TOTXMSFREE,dx; // del bloque mas grande + } + BigBlock=BIGBLOCK; // Actualizamos + TotXmsFree=TOTXMSFREE; // variables de clase +} + +void XmsSupp::SetConPntr(void far *Puntero) +//////////////////////////////////////////////////////////////////////////// +// Descripcion: Actualiza la Zona de Descarga en Memoria Convencional. +// +// Entradas: Puntero a Bloque de Control XMS. +// Puntero a Memoria reservada en Convencional. +// +// Salidas: Ninguna. +//////////////////////////////////////////////////////////////////////////// +{ + +unsigned long Desp; +unsigned Segm =FP_SEG(Puntero); +unsigned Offst=FP_OFF(Puntero); + _asm{ + mov ax,Offst; // Actualiza el + mov word ptr Desp,ax; // Puntero de Origen + mov ax,Segm; // en la estructura + mov word ptr Desp+2,ax; // XMSBlock + } + ThisXMSBlock.SrcDesp =Desp; // Varble de clase +} + +void XmsSupp::AllocXms(unsigned KLen) +//////////////////////////////////////////////////////////////////////////// +// Descripcion: Reserva memoria XMS. +// +// Entradas: Longitud de memoria a reservar en Kilo Bytes. +// Puntero a Bloque de Control XMS. +// +// Salidas: Ninguna. +//////////////////////////////////////////////////////////////////////////// +{ +unsigned long XMSDIR=XmsDir; +unsigned handle; +unsigned err; +char cerr; + + if(!Present) + { + GetXmsErr(0xFF); + return; + } + + _asm{ + mov ah,9; // reserva memoria + mov dx,KLen; // extendida + call dword ptr XMSDIR; + mov err,ax; // AX=error + mov cerr,bl; // BL=Codigo de error + mov handle,dx; // Hadle de bloque de memo. + } + ThisXMSBlock.Len =KLen*1024L; // Actualiza variables de + ThisXMSBlock.DstHandle=handle; // la clase + ThisXMSBlock.SrcHandle=0; + ThisXMSBlock.DstDesp =0L; + if(err!=1) // si hay error + { + GetXmsErr(cerr); // mira cuales + Reserved=0; // Reservada = falso + } + else + Reserved=1; // sino, reservada = cierto +} + +void XmsSupp::FreeXms() +//////////////////////////////////////////////////////////////////////////// +// Descripcion: Libera memoria XMS. +// +// Entradas: Bloque de Control XMS. +// +// Salidas: Ninguna. +//////////////////////////////////////////////////////////////////////////// +{ +unsigned long XMSDIR=XmsDir; +unsigned handle; +unsigned err; +char cerr; + + if(!Present) + { + GetXmsErr(0xFF); + return; + } + if(!Reserved) + { + GetXmsErr(0xFE); + return; + } + + handle=ThisXMSBlock.DstHandle; + _asm{ + mov ah,10; // Libera memoria + mov dx,handle; // extendida + call dword ptr XMSDIR; + mov err,ax; // y comprueba errores + mov cerr,bl; + } + if(err!=1) + GetXmsErr(cerr); +} + +void XmsSupp::Move2Xms() +//////////////////////////////////////////////////////////////////////////// +// Descripcion: Mueve un Bloque de Memoria Convencional a XMS. +// +// Entradas: Bloque de Control XMS. +// +// Salidas: Ninguna. +//////////////////////////////////////////////////////////////////////////// +{ +unsigned long XMSDIR=XmsDir; +unsigned err; +char cerr; +unsigned Segment=FP_SEG(&ThisXMSBlock); // Segmento y +unsigned Offst =FP_OFF(&ThisXMSBlock); // Offset de la estructura XMSBlock + + if(!Present) + { + GetXmsErr(0xFF); + return; + } + if(!Reserved) + { + GetXmsErr(0xFE); + return; + } + _asm{ + push ds; // Guarda registros en + push si; // la pila + mov ax,Segment; // carga en ds:si la + mov ds,ax; // la direccion de + mov si,Offst; // la estructura + mov ah,0bh; // y mueve el bloque de + call dword ptr XMSDIR; // memoria de Convencional + mov err,ax; // a XMS + mov cerr,bl; // mira si hay errores + pop si; // Recupera registros + pop ds; + } + + if(err!=1) + GetXmsErr(cerr); +} + +void XmsSupp::Move2Con() +//////////////////////////////////////////////////////////////////////////// +// Descripcion: Mueve un Bloque de Memoria XMS a Convencional. +// +// Entradas: Bloque de Control XMS. +// +// Salidas: Ninguna. +//////////////////////////////////////////////////////////////////////////// +{ +unsigned long XMSDIR=XmsDir; +unsigned err; +char cerr; +unsigned long wDesp; +unsigned wHand; +unsigned Segment=FP_SEG(&ThisXMSBlock); +unsigned Offst =FP_OFF(&ThisXMSBlock); + if(!Present) + { + GetXmsErr(0xFF); + return; + } + if(!Reserved) + { + GetXmsErr(0xFE); + return; + } + + wDesp=ThisXMSBlock.SrcDesp; // Intercambia valores de + wHand=ThisXMSBlock.SrcHandle; // Origen y + ThisXMSBlock.SrcDesp =ThisXMSBlock.DstDesp; // Destino + ThisXMSBlock.SrcHandle=ThisXMSBlock.DstHandle; + ThisXMSBlock.DstDesp =wDesp; + ThisXMSBlock.DstHandle=wHand; + _asm{ + push ds; + push si; + mov ax,Segment; + mov ds,ax; + mov si,Offst; // Mueve de Xms a + mov ah,0bh; // convencional + call dword ptr XMSDIR; + mov err,ax; // mira si hay errores + mov cerr,bl; + pop si; + pop ds; + } + if(err!=1) + GetXmsErr(cerr); +} +void XmsSupp::GetXmsErr(char error) +//////////////////////////////////////////////////////////////////////////// +// Descripcion: Actualiza la Variable de Clase cError. +// +// Entradas: Codigo de Error. +// +// Salidas: Ninguna. +//////////////////////////////////////////////////////////////////////////// +{ +char *SysErr; + lError=1; + switch(error) + { + case 0x80: + strcpy(cError,"Funcin no implemetada."); + break; + case 0x81: + strcpy(cError,"VDISK Detectado."); + break; + case 0x82: + strcpy(cError,"Error en lnea A20."); + break; + case 0x8e: + strcpy(cError,"Error general de controlador."); + break; + case 0x8f: + strcpy(cError,"Error irrecuperable."); + break; + case 0x90: + strcpy(cError,"HMA no existe ."); + break; + case 0x91: + strcpy(cError,"HMA en uso."); + break; + case 0x92: + strcpy(cError,"DX menor al parmetro /HMAMIN."); + break; + case 0x93: + strcpy(cError,"HMA no asignado."); + break; + case 0x94: + strcpy(cError,"Lnea A20 activa."); + break; + case 0xa0: + strcpy(cError,"No hay suficente memoria libre."); + break; + case 0xa1: + strcpy(cError,"Handles XMS agotados."); + break; + case 0xa2: + strcpy(cError,"Handle no vlido."); + break; + case 0xa3: + strcpy(cError,"Handle fuente no vlido."); + break; + case 0xa4: + strcpy(cError,"Offset fuente no vlido."); + break; + case 0xa5: + strcpy(cError,"Handle destino no vlido."); + break; + case 0xa6: + strcpy(cError,"Offset destino no vlido."); + break; + case 0xa7: + strcpy(cError,"Tamao para MOVE no vlido ."); + break; + case 0xa8: + strcpy(cError,"Se ha producido Solapamiento en la funcin MOVE."); + break; + case 0xa9: + strcpy(cError,"Se detecto error de paridad."); + break; + case 0xaa: + strcpy(cError,"No se bloqueo el EMB ."); + break; + case 0xab: + strcpy(cError,"EMB ya bloqueado."); + break; + case 0xac: + strcpy(cError,"Bloqueo por desbordamiento del contador."); + break; + case 0xad: + strcpy(cError,"No se bloqueo el EMB."); + break; + case 0xFE: + strcpy(cError,"No se Reservo Memoria XMS."); + break; + case 0xFF: + strcpy(cError,"Controlador XMS ausente."); + break; + default: + strcpy(cError,"OK."); + break; + } +} + +*/ + +void Init_Xms(XmsSupp *XmsBlock) +//////////////////////////////////////////////////////////////////////////// +// Descripcion: Constructor de Clase. +// +// Entradas: Ninguna. +// +// Salidas: Ninguna. +//////////////////////////////////////////////////////////////////////////// +{ + XmsBlock ->lError=0; // Indicador de Error a cero + InitXms(XmsBlock); // Inicializa XMS. +} + +void InitXms(XmsSupp *XmsBlock) +//////////////////////////////////////////////////////////////////////////// +// Descripcion: Inicializa la Clase. +// +// Entradas: Ninguna. +// +// Salidas: 1 Controlador XMS Presente. +// 0 Controlador XMS Ausente. +//////////////////////////////////////////////////////////////////////////// +{ +char Stat; + + _asm{ +// mov ax,0x4300; + mov ax,4300h; + int 0x2f; // Mira si esta el Driver + mov Stat,al; // Guarda valor en Stat + } + + if(Stat==(char)0x80) // Stat=80H ? + { + XmsBlock -> Present=1; // Si, Esta presente + GetXmsDir(XmsBlock); // Donde esta el driver. + GetXmsVer(XmsBlock); // Mira version + GetXmsFree(XmsBlock); // Mira memoria libre + } + else + { + XmsBlock -> Present=0; // Si no, no presente + GetXmsErr(0xFF, XmsBlock ); // Pon error. + } +} + +void GetInfo(XmsSupp *XmsBlock) +//////////////////////////////////////////////////////////////////////////// +// Descripcion: Captura Informacion de la XMS. +// +// Entradas: Ninguna. +// +// Salidas: Ninguna. +//////////////////////////////////////////////////////////////////////////// +{ + printf("Ŀ\n"); + printf(" \n"); + printf(" Ver. XMS. %o.%02o.\t\t\t\t \n",XmsBlock->HiVerXms,XmsBlock->LoVerXms); + printf(" Rev. XMS. %o.%02o.\t\t\t\t \n",XmsBlock->HiVerCtr,XmsBlock->LoVerCtr); + if(XmsBlock->lHMA) + printf(" HMA Presente. \n"); + else + printf(" HMA Ausente. \n"); + printf(" Memoria Libre %4u Ks.\t\t\t \n",XmsBlock->TotXmsFree); + printf(" Tamao Max. Bloque %4u Ks.\t\t\t \n",XmsBlock->BigBlock); + printf("\n\n\n"); +} + +void GetXmsDir(XmsSupp *XmsBlock) +{ +//////////////////////////////////////////////////////////////////////////// +// Descripcion: Captura la Direccion del Contolador de XMS. +// +// Entradas: Ninguna. +// +// Salidas: Ninguna. +//////////////////////////////////////////////////////////////////////////// +unsigned long XMSDIR; + if(!XmsBlock->Present) // No Esta presente ? + { + GetXmsErr(0xFF, XmsBlock ); // Pon error + return; // y retorna. + } + _asm{ + push es; // guarda ES en la pila +// mov ax,0x4310; // capturamos direccion + mov ax,4310h; // capturamos direccion + int 2fh; // del driver +// int 0x2f; // del driver + mov word ptr XMSDIR,bx // y la guardamos + mov word ptr XMSDIR+2,es // en la varibale XMSDIR + ////////// +// xor ax,ax; +// call word ptr XMSDIR; + ////////// + pop es; // recupera ES + } + XmsBlock -> XmsDir=XMSDIR; // actualiza la varibale de clase. +return; +} + +void GetXmsVer(XmsSupp *XmsBlock) +//////////////////////////////////////////////////////////////////////////// +// Descripcion: Captura Version, Revision y estado del HMA. +// +// Entradas: Ninguna. +// +// Salidas: Ninguna. +//////////////////////////////////////////////////////////////////////////// +{ +unsigned long XMSDIR=XmsBlock ->XmsDir; +char HVXMS,LVXMS,HVCTR,LVCTR; +unsigned HMA; + + if(!XmsBlock->Present) + { + GetXmsErr(0xFF, XmsBlock); + return; + } + + _asm{ + mov ah,0; // Miraremos + call dword ptr XMSDIR; // Informacion del driver + mov HVXMS,ah; // Version + mov LVXMS,al; // + mov HVCTR,bh; // Revision + mov LVCTR,bl; // + mov HMA,dx; // Estado del HMA + } + XmsBlock ->HiVerXms=HVXMS; // Actualizamos + XmsBlock ->HiVerCtr=HVCTR; // variables + XmsBlock ->LoVerXms=LVXMS; // de + XmsBlock ->LoVerCtr=LVCTR; // Clase + XmsBlock ->lHMA=HMA; // +} + +void GetXmsFree(XmsSupp *XmsBlock) +//////////////////////////////////////////////////////////////////////////// +// Descripcion: Captura Memoria XMS Libre. +// +// Entradas: Ninguna. +// +// Salidas: Ninguna. +//////////////////////////////////////////////////////////////////////////// +{ +unsigned long XMSDIR=XmsBlock ->XmsDir; +unsigned BIGBLOCK; +unsigned TOTXMSFREE; + + if(!XmsBlock->Present) + { + GetXmsErr(0xFF, XmsBlock); + return; + } + + _asm{ + mov ah,8; // Campturamos memoria + call dword ptr XMSDIR; // Libre + mov BIGBLOCK,ax; // y el tamao + mov TOTXMSFREE,dx; // del bloque mas grande + } + XmsBlock ->BigBlock=BIGBLOCK; // Actualizamos + XmsBlock ->TotXmsFree=TOTXMSFREE; // variables de clase +} + +void SetConPntr(void far *Puntero, XmsSupp *XmsBlock) +//////////////////////////////////////////////////////////////////////////// +// Descripcion: Actualiza la Zona de Descarga en Memoria Convencional. +// +// Entradas: Puntero a Bloque de Control XMS. +// Puntero a Memoria reservada en Convencional. +// +// Salidas: Ninguna. +//////////////////////////////////////////////////////////////////////////// +{ + +unsigned long Desp; +unsigned Segm =FP_SEG(Puntero); +unsigned Offst=FP_OFF(Puntero); + _asm{ + mov ax,Offst; // Actualiza el + mov word ptr Desp,ax; // Puntero de Origen + mov ax,Segm; // en la estructura + mov word ptr Desp+2,ax; // XMSBlock + } + XmsBlock ->ThisXMSBlock.SrcDesp = Desp; // Varble de clase +} + +void AllocXms(unsigned KLen, XmsSupp *XmsBlock) +//////////////////////////////////////////////////////////////////////////// +// Descripcion: Reserva memoria XMS. +// +// Entradas: Longitud de memoria a reservar en Kilo Bytes. +// Puntero a Bloque de Control XMS. +// +// Salidas: Ninguna. +//////////////////////////////////////////////////////////////////////////// +{ +unsigned long XMSDIR=XmsBlock ->XmsDir; +unsigned handle; +unsigned err; +char cerr; + + if(!XmsBlock->Present) + { + GetXmsErr(0xFF, XmsBlock); + return; + } + + _asm{ + mov ah,9; // reserva memoria + mov dx,KLen; // extendida + call dword ptr XMSDIR; + mov err,ax; // AX=error +// mov cerr,bl; // BL=Codigo de error + mov handle,dx; // Hadle de bloque de memo. + mov cerr,bl; // BL=Codigo de error + } + XmsBlock ->ThisXMSBlock.Len =KLen*1024L; // Actualiza variables de + XmsBlock ->ThisXMSBlock.DstHandle=handle; // la clase + XmsBlock ->ThisXMSBlock.SrcHandle=0; + XmsBlock ->ThisXMSBlock.DstDesp =0L; + if(err!=1) // si hay error + { + GetXmsErr(cerr, XmsBlock); // mira cuales + XmsBlock ->Reserved=0; // Reservada = falso + } + else + XmsBlock ->Reserved=1; // sino, reservada = cierto +} + +void FreeXms(XmsSupp *XmsBlock) +//////////////////////////////////////////////////////////////////////////// +// Descripcion: Libera memoria XMS. +// +// Entradas: Bloque de Control XMS. +// +// Salidas: Ninguna. +/////////////////////////////////////////////////////////////////////////// +{ +unsigned long XMSDIR=XmsBlock ->XmsDir; +unsigned handle; +unsigned err; +char cerr; + + if(!XmsBlock->Present) + { + GetXmsErr(0xFF, XmsBlock); + return; + } + if(!XmsBlock ->Reserved) + { + GetXmsErr(0xFE, XmsBlock); + return; + } + + handle=XmsBlock ->ThisXMSBlock.DstHandle; + _asm{ +// mov ah,10; // Libera memoria + mov dx,handle; // extendida + mov ah,10; // Libera memoria +// mov dx,handle; // extendida + call dword ptr XMSDIR; + mov err,ax; // y comprueba errores + mov cerr,bl; + } + if(err!=1) + GetXmsErr(cerr, XmsBlock); +} + +void Move2Xms(XmsSupp *XmsBlock) +//////////////////////////////////////////////////////////////////////////// +// Descripcion: Mueve un Bloque de Memoria Convencional a XMS. +// +// Entradas: Bloque de Control XMS. +// +// Salidas: Ninguna. +//////////////////////////////////////////////////////////////////////////// +{ +unsigned long XMSDIR=XmsBlock ->XmsDir; +unsigned err; +char cerr; + +//unsigned Segment=FP_SEG(XmsBlock ->&ThisXMSBlock); // Segmento y +//unsigned Offst =FP_OFF(XmsBlock ->&ThisXMSBlock); // Offset de la estructura XMSBlock +unsigned Segment=FP_SEG(&(XmsBlock ->ThisXMSBlock)); // Segmento y +unsigned Offst =FP_OFF(&(XmsBlock ->ThisXMSBlock)); // Offset de la estructura XMSBlock + + if(!XmsBlock->Present) + { + GetXmsErr(0xFF, XmsBlock); + return; + } + if(!XmsBlock ->Reserved) + { + GetXmsErr(0xFE, XmsBlock); + return; + } + _asm{ + push ds; // Guarda registros en + push si; // la pila + mov ax,Segment; // carga en ds:si la + mov ds,ax; // la direccion de + mov si,Offst; // la estructura + mov ah,0bh; // y mueve el bloque de + call dword ptr XMSDIR; // memoria de Convencional + mov err,ax; // a XMS + mov cerr,bl; // mira si hay errores + pop si; // Recupera registros + pop ds; + } + + if(err!=1) + GetXmsErr(cerr, XmsBlock); +} + +void Move2Con(XmsSupp *XmsBlock) +//////////////////////////////////////////////////////////////////////////// +// Descripcion: Mueve un Bloque de Memoria XMS a Convencional. +// +// Entradas: Bloque de Control XMS. +// +// Salidas: Ninguna. +//////////////////////////////////////////////////////////////////////////// +{ +unsigned long XMSDIR=XmsBlock ->XmsDir; +unsigned err; +char cerr; +unsigned long wDesp; +unsigned wHand; +//unsigned Segment=FP_SEG(XmsBlock ->&ThisXMSBlock); +//unsigned Offst =FP_OFF(XmsBlock ->&ThisXMSBlock); +unsigned Segment=FP_SEG(&(XmsBlock ->ThisXMSBlock)); +unsigned Offst =FP_OFF(&(XmsBlock ->ThisXMSBlock)); + if(!XmsBlock->Present) + { + GetXmsErr(0xFF, XmsBlock); + return; + } + if(!XmsBlock->Reserved) + { + GetXmsErr(0xFE, XmsBlock); + return; + } + + wDesp=XmsBlock ->ThisXMSBlock.SrcDesp; // Intercambia valores de + wHand=XmsBlock ->ThisXMSBlock.SrcHandle; // Origen y + XmsBlock ->ThisXMSBlock.SrcDesp =XmsBlock ->ThisXMSBlock.DstDesp; // Destino + XmsBlock ->ThisXMSBlock.SrcHandle=XmsBlock ->ThisXMSBlock.DstHandle; + XmsBlock ->ThisXMSBlock.DstDesp =wDesp; + XmsBlock ->ThisXMSBlock.DstHandle=wHand; + _asm{ + push ds; + push si; + mov ax,Segment; + mov ds,ax; + mov si,Offst; // Mueve de Xms a + mov ah,0bh; // convencional + call dword ptr XMSDIR; + mov err,ax; // mira si hay errores + mov cerr,bl; + pop si; + pop ds; + } + if(err!=1) + GetXmsErr(cerr, XmsBlock); + + // Devuelve valores a su origen + wDesp=XmsBlock ->ThisXMSBlock.DstDesp; // Intercambia valores de + wHand=XmsBlock ->ThisXMSBlock.DstHandle; // Origen y + + XmsBlock ->ThisXMSBlock.DstDesp = XmsBlock ->ThisXMSBlock.SrcDesp; // Destino + XmsBlock ->ThisXMSBlock.DstHandle = XmsBlock ->ThisXMSBlock.SrcHandle; + + XmsBlock ->ThisXMSBlock.SrcDesp =wDesp; + XmsBlock ->ThisXMSBlock.SrcHandle=wHand; + + +} +void GetXmsErr(char error,XmsSupp *XmsBlock) +//////////////////////////////////////////////////////////////////////////// +// Descripcion: Actualiza la Variable de Clase cError. +// +// Entradas: Codigo de Error. +// +// Salidas: Ninguna. +//////////////////////////////////////////////////////////////////////////// +{ +char *SysErr; + XmsBlock ->lError=1; + switch(error) + { + case 0x80: + strcpy(XmsBlock ->cError,"Funcin no implemetada."); + break; + case 0x81: + strcpy(XmsBlock ->cError,"VDISK Detectado."); + break; + case 0x82: + strcpy(XmsBlock ->cError,"Error en lnea A20."); + break; + case 0x8e: + strcpy(XmsBlock ->cError,"Error general de controlador."); + break; + case 0x8f: + strcpy(XmsBlock ->cError,"Error irrecuperable."); + break; + case 0x90: + strcpy(XmsBlock ->cError,"HMA no existe ."); + break; + case 0x91: + strcpy(XmsBlock ->cError,"HMA en uso."); + break; + case 0x92: + strcpy(XmsBlock ->cError,"DX menor al parmetro /HMAMIN."); + break; + case 0x93: + strcpy(XmsBlock ->cError,"HMA no asignado."); + break; + case 0x94: + strcpy(XmsBlock ->cError,"Lnea A20 activa."); + break; + case 0xa0: + strcpy(XmsBlock ->cError,"No hay suficente memoria libre."); + break; + case 0xa1: + strcpy(XmsBlock ->cError,"Handles XMS agotados."); + break; + case 0xa2: + strcpy(XmsBlock ->cError,"Handle no vlido."); + break; + case 0xa3: + strcpy(XmsBlock ->cError,"Handle fuente no vlido."); + break; + case 0xa4: + strcpy(XmsBlock ->cError,"Offset fuente no vlido."); + break; + case 0xa5: + strcpy(XmsBlock ->cError,"Handle destino no vlido."); + break; + case 0xa6: + strcpy(XmsBlock ->cError,"Offset destino no vlido."); + break; + case 0xa7: + strcpy(XmsBlock ->cError,"Tamao para MOVE no vlido ."); + break; + case 0xa8: + strcpy(XmsBlock ->cError,"Se ha producido Solapamiento en la funcin MOVE."); + break; + case 0xa9: + strcpy(XmsBlock ->cError,"Se detecto error de paridad."); + break; + case 0xaa: + strcpy(XmsBlock ->cError,"No se bloqueo el EMB ."); + break; + case 0xab: + strcpy(XmsBlock ->cError,"EMB ya bloqueado."); + break; + case 0xac: + strcpy(XmsBlock ->cError,"Bloqueo por desbordamiento del contador."); + break; + case 0xad: + strcpy(XmsBlock ->cError,"No se bloqueo el EMB."); + break; + case 0xFE: + strcpy(XmsBlock ->cError,"No se Reservo Memoria XMS."); + break; + case 0xFF: + strcpy(XmsBlock ->cError,"Controlador XMS ausente."); + break; + default: + unsigned int value = error; + sprintf(XmsBlock ->cError,"OK. %X %u", value, value); +// strcpy(XmsBlock ->cError,"OK."); + break; + } +} diff --git a/XMSSUPP.H b/XMSSUPP.H new file mode 100644 index 0000000..14d8b2d --- /dev/null +++ b/XMSSUPP.H @@ -0,0 +1,82 @@ +// FICHERO DE CABECERA XMSSUPP.H + +#ifndef XMSSUPP_H +#define XMSSUPP_H + + + +// Definicion de Bloque Para el manejo de la Memoria XMS. + +typedef struct _XMSBlock{ + unsigned long Len; + unsigned SrcHandle; + unsigned long SrcDesp; + unsigned DstHandle; + unsigned long DstDesp; +}XMSBlock; + +// Clase para el manejo de la Memoria XMS +/* +class XmsSupp //[ : public ] +{ +public: + XMSBlock ThisXMSBlock; + unsigned lError; + char cError[80]; + unsigned Present; + unsigned Reserved; + unsigned long XmsDir; + char HiVerXms; + char LoVerXms; + char HiVerCtr; + char LoVerCtr; + unsigned lHMA; + unsigned BigBlock; + unsigned TotXmsFree; + + XmsSupp(); + void InitXms(); + void GetInfo(); + void GetXmsDir(); + void GetXmsVer(); + void AllocXms(unsigned); + void GetXmsFree(); + void SetConPntr(void far *); + void FreeXms(); + void Move2Xms(); + void Move2Con(); + void GetXmsErr(char); +}; +*/ +typedef struct { + + XMSBlock ThisXMSBlock; + unsigned lError; + char cError[80]; + unsigned Present; + unsigned Reserved; + unsigned long XmsDir; + char HiVerXms; + char LoVerXms; + char HiVerCtr; + char LoVerCtr; + unsigned lHMA; + unsigned BigBlock; + unsigned TotXmsFree; + +} XmsSupp; + + void Xms_Init(XmsSupp *XmsBlock); + void InitXms(XmsSupp *XmsBlock); + void GetInfo(XmsSupp *XmsBlock); + void GetXmsDir(XmsSupp *XmsBlock); + void GetXmsVer(XmsSupp *XmsBlock); + void AllocXms(unsigned,XmsSupp *XmsBlock); + void GetXmsFree(XmsSupp *XmsBlock); + void SetConPntr(void far *,XmsSupp *XmsBlock); + void FreeXms(XmsSupp *XmsBlock); + void Move2Xms(XmsSupp *XmsBlock); + void Move2Con(XmsSupp *XmsBlock); + void GetXmsErr(char,XmsSupp *XmsBlock); + +#endif diff --git a/XR.BAT b/XR.BAT new file mode 100644 index 0000000..e39c48f --- /dev/null +++ b/XR.BAT @@ -0,0 +1,6 @@ +cd c:\cd_out +rem cd_out +call setb +td +cd c:\things\borlandc\fuentes\cd_out +