#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, /*n£mero de p ginas EMS*/ handle, /*Handle para acceder a la memoria EMS*/ i; /*contador de bucle*/ extern WORD pageseg ; /*direcci¢n de segmento del Page-Frame*/ extern BYTE emmver; /*n£mero de versi¢n 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; */ // ReP g 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; // AvP g 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 creaci¢n... Û// //ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß// 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 ); }