839 lines
21 KiB
C++
839 lines
21 KiB
C++
#include <alloc.h>
|
||
#include <dos.h>
|
||
#include <string.h>
|
||
#include <stdio.h>
|
||
#include <stdlib.h>
|
||
#include <conio.h> // Para getch();
|
||
#include <graphics.h> // 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 );
|
||
|
||
}
|