CD_OUT_SRC/CD_EDIT.CPP
2021-09-03 17:50:32 +02:00

839 lines
21 KiB
C++
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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 );
}