First commit 11/11/1991
This commit is contained in:
commit
27e54671f3
306
BROWSER.CPP
Normal file
306
BROWSER.CPP
Normal file
@ -0,0 +1,306 @@
|
|||||||
|
#include <ctype.h>
|
||||||
|
#include <direct.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <dir.h>
|
||||||
|
#include <dos.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <alloc.h>
|
||||||
|
#include <conio.h> // Para getch();
|
||||||
|
#include <graphics.h> // Para outtextxy(...); y cleardevice(...);
|
||||||
|
|
||||||
|
#include "..\..\jd_lib\f_lib\make_bot.h" // Fuciones de MAKE_BOTON
|
||||||
|
|
||||||
|
#define __Modulo_Browser
|
||||||
|
#include "compacta.h"
|
||||||
|
|
||||||
|
extern BROWSER far *Browser;
|
||||||
|
|
||||||
|
// ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||||
|
// ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||||
|
// ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||||
|
// ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||||
|
// ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||||
|
// Û F U N C I O N E S p a r a e l B R O W S E R Û
|
||||||
|
// ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||||
|
// ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||||
|
// ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||||
|
// ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||||
|
// ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||||
|
// ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||||
|
|
||||||
|
void ReDraw_Browser(void)
|
||||||
|
{
|
||||||
|
int OLD_Brw = BrowserRow;
|
||||||
|
// 1§ Borramos pantalla de muestreo...
|
||||||
|
setfillstyle( SOLID_FILL, EGA_BLACK );
|
||||||
|
setcolor( EGA_BLACK );
|
||||||
|
// Muestreo de archivos
|
||||||
|
bar( 9, 9, 153, 173 );
|
||||||
|
|
||||||
|
// 3§ Mostramos los nuevos Archivos
|
||||||
|
for ( BrowserRow = 0; BrowserRow < 16; BrowserRow++)
|
||||||
|
if ( ( BrowserRow + BrowserTop ) < maxfiles )
|
||||||
|
ShowHideBrowserRow( HIDE );
|
||||||
|
BrowserRow = OLD_Brw;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Fill_Directory(void)
|
||||||
|
{
|
||||||
|
char Buffer[180];
|
||||||
|
// Recuadro del directorio
|
||||||
|
// 1§ Borramos pantalla de muestreo...
|
||||||
|
setfillstyle( SOLID_FILL, EGA_BLACK );
|
||||||
|
setcolor( EGA_BLACK );
|
||||||
|
bar( 5, 182, 179, 195 );
|
||||||
|
|
||||||
|
setcolor( EGA_YELLOW );
|
||||||
|
getcwd( Buffer, 180 );
|
||||||
|
if ( strlen( Buffer ) > 28 )
|
||||||
|
{
|
||||||
|
// Acorta el Buffer poniendo al principio U:\...[DIRECTORIO]
|
||||||
|
char Buffer1[30];
|
||||||
|
|
||||||
|
// Primero copiamos en Buffer1 los 22 ultimos caracteres de Buffer
|
||||||
|
strncpy( Buffer1, strrev(Buffer), 22 ); Buffer1[22] = NULL;
|
||||||
|
strrev( Buffer1 );
|
||||||
|
// Despues conservamos solo de Buffer [Und][:][\]
|
||||||
|
strrev(Buffer); Buffer[3] = NULL;
|
||||||
|
// Y agregamos [...]
|
||||||
|
strcat( Buffer, "..." );
|
||||||
|
// Ya podemos unirlo todo
|
||||||
|
strcat( Buffer, Buffer1 );
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
|
||||||
|
outtextxy( 7, 184, Buffer );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShowHideBrowserRow( char Hide_Show )
|
||||||
|
{
|
||||||
|
|
||||||
|
char Buffer[80];
|
||||||
|
char Longitud[80];
|
||||||
|
|
||||||
|
settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
|
||||||
|
|
||||||
|
|
||||||
|
if ( Hide_Show == HIDE )
|
||||||
|
{
|
||||||
|
setfillstyle( SOLID_FILL, EGA_BLACK );
|
||||||
|
bar( 9, ( 10 + ( BrowserRow * 10 ) ), 153, ( ( 9 + 10 ) + ( BrowserRow * 10 ) ) );
|
||||||
|
switch( Browser[BrowserTop+BrowserRow].attrs )
|
||||||
|
{
|
||||||
|
case FA_DIREC:
|
||||||
|
setcolor( EGA_CYAN );
|
||||||
|
break;
|
||||||
|
case 255:
|
||||||
|
setcolor( EGA_MAGENTA );
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
setcolor( EGA_WHITE );
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
switch( Browser[BrowserTop+BrowserRow].attrs )
|
||||||
|
{
|
||||||
|
case FA_DIREC:
|
||||||
|
setfillstyle( SOLID_FILL, EGA_CYAN );
|
||||||
|
// setcolor( EGA_CYAN );
|
||||||
|
break;
|
||||||
|
case 255:
|
||||||
|
setfillstyle( SOLID_FILL, EGA_MAGENTA );
|
||||||
|
// setcolor( EGA_MAGENTA );
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
setfillstyle( SOLID_FILL, EGA_WHITE );
|
||||||
|
// setcolor( EGA_WHITE );
|
||||||
|
}
|
||||||
|
bar( 9, ( 10 + ( BrowserRow * 10 ) ), 153, ( ( 9 + 10 ) + ( BrowserRow * 10 ) ) );
|
||||||
|
setcolor( EGA_BLACK );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
outtextxy( 10, ( 9 + ( BrowserRow * 10 ) ), Browser[BrowserTop+BrowserRow].Fichero );
|
||||||
|
formatea_long( Browser[BrowserTop+BrowserRow].Longitud, Longitud );
|
||||||
|
switch( Browser[BrowserTop+BrowserRow].attrs )
|
||||||
|
{
|
||||||
|
case FA_DIREC:
|
||||||
|
sprintf ( Buffer, " DIRECTORIO", Longitud );
|
||||||
|
break;
|
||||||
|
case 255:
|
||||||
|
sprintf ( Buffer, " < UNIDAD >", Longitud );
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
sprintf ( Buffer, " %10s", Longitud );
|
||||||
|
}
|
||||||
|
outtextxy( 10, ( 9 + ( BrowserRow * 10 ) ), Buffer );
|
||||||
|
}
|
||||||
|
|
||||||
|
void DownBrowser(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
// ¨¨ Estoy en la linea fisica 000 ???
|
||||||
|
if ( (BrowserRow + BrowserTop) != (maxfiles - 1) ) {
|
||||||
|
|
||||||
|
// Linea 0, Baja Con retroceso multiple
|
||||||
|
if ( BrowserRow == 15 ) {
|
||||||
|
BrowserTop += 16;
|
||||||
|
if ( (BrowserTop + BrowserRow) > maxfiles ) BrowserRow = 0;
|
||||||
|
while ( (BrowserTop + BrowserRow) > maxfiles ) BrowserTop--;
|
||||||
|
BrowserRow = 0;
|
||||||
|
ReDraw_Browser();
|
||||||
|
ShowHideBrowserRow( SHOW );
|
||||||
|
} else {
|
||||||
|
ShowHideBrowserRow( HIDE );
|
||||||
|
BrowserRow++;
|
||||||
|
ShowHideBrowserRow( SHOW );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpBrowser(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
// ¨¨ Estoy en la linea fisica 000 ???
|
||||||
|
if ( (BrowserRow + BrowserTop) != 0 ) {
|
||||||
|
|
||||||
|
// Linea 0, Baja Con retroceso multiple
|
||||||
|
if ( BrowserRow == 0 ) {
|
||||||
|
BrowserTop -= 16;
|
||||||
|
if ( BrowserTop < 0 ) BrowserTop = 0;
|
||||||
|
BrowserRow = 0;
|
||||||
|
ReDraw_Browser();
|
||||||
|
BrowserRow = 15;
|
||||||
|
ShowHideBrowserRow( SHOW );
|
||||||
|
} else {
|
||||||
|
ShowHideBrowserRow( HIDE );
|
||||||
|
BrowserRow--;
|
||||||
|
ShowHideBrowserRow( SHOW );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int SelectBrowser(void)
|
||||||
|
{
|
||||||
|
int RETURN = 1;
|
||||||
|
|
||||||
|
switch( Browser[BrowserTop+BrowserRow].attrs )
|
||||||
|
{
|
||||||
|
case FA_DIREC:
|
||||||
|
chdir( Browser[BrowserTop+BrowserRow].Fichero );
|
||||||
|
BrowserRow = BrowserTop = 0;
|
||||||
|
// 2§ Realizamos un Scaneo del Directorio
|
||||||
|
BrowserTop = 0; BrowserRow = 0;
|
||||||
|
RasterScan();
|
||||||
|
Fill_Directory();
|
||||||
|
ReDraw_Browser();
|
||||||
|
ShowHideBrowserRow( SHOW );
|
||||||
|
RETURN = 0;
|
||||||
|
break;
|
||||||
|
case 255:
|
||||||
|
erroroccurred=0;
|
||||||
|
olddisk=getdisk();
|
||||||
|
setdisk( (Browser[BrowserTop+BrowserRow].Fichero[0] - 'A') );
|
||||||
|
if (erroroccurred) {
|
||||||
|
setdisk(olddisk);
|
||||||
|
} else {
|
||||||
|
BrowserRow = BrowserTop = 0;
|
||||||
|
// 2§ Realizamos un Scaneo del Directorio
|
||||||
|
BrowserTop = 0; BrowserRow = 0;
|
||||||
|
RasterScan();
|
||||||
|
Fill_Directory();
|
||||||
|
ReDraw_Browser();
|
||||||
|
ShowHideBrowserRow( SHOW );
|
||||||
|
}
|
||||||
|
RETURN = 0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
RETURN = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return RETURN;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int RasterScan(void) {
|
||||||
|
struct ffblk ffblk;
|
||||||
|
char done=0;
|
||||||
|
unsigned int olddisk;
|
||||||
|
maxfiles = 0;
|
||||||
|
unsigned char i;
|
||||||
|
|
||||||
|
// build a disk drive availiable list
|
||||||
|
olddisk=getdisk();
|
||||||
|
for (i=1;i<27;i++) if (_chdrive(i) == 0)
|
||||||
|
{
|
||||||
|
sprintf( Browser[maxfiles].Fichero, "%c:", (char)('A' + i - 1) );
|
||||||
|
Browser[maxfiles].Longitud=0;
|
||||||
|
Browser[maxfiles].attrs=255; // Unidad
|
||||||
|
if (ffblk.ff_attrib & 16) Browser[maxfiles].Longitud=0;
|
||||||
|
maxfiles++;
|
||||||
|
}
|
||||||
|
setdisk(olddisk);
|
||||||
|
|
||||||
|
// drivelist[2]='N'; //stop access to B drive until I sort out pahntom dive probs
|
||||||
|
//Ok, Drive B may be a phantom drive. If you try to access drive B, then
|
||||||
|
//the program looses controll. Bummer!
|
||||||
|
// needs debugging. (always ignores drive b...)
|
||||||
|
// asm int 0x11
|
||||||
|
// asm mov equipmentlist,ax
|
||||||
|
// drivelist[2]='N';
|
||||||
|
// if ((equipmentlist & 16)) drivelist[2]='Y';
|
||||||
|
|
||||||
|
|
||||||
|
done = findfirst("*.*",&ffblk,FA_DIREC);
|
||||||
|
while (!done) {
|
||||||
|
if (ffblk.ff_attrib == 0x10) {
|
||||||
|
strcpy(Browser[maxfiles].Fichero,ffblk.ff_name);
|
||||||
|
Browser[maxfiles].Longitud=ffblk.ff_fsize;
|
||||||
|
Browser[maxfiles].attrs=ffblk.ff_attrib;
|
||||||
|
if (ffblk.ff_attrib & 16) Browser[maxfiles].Longitud=0;
|
||||||
|
maxfiles++;
|
||||||
|
}
|
||||||
|
done = findnext(&ffblk);
|
||||||
|
if (maxfiles==200) done=!done; //stop to prevent internal crashes.
|
||||||
|
}
|
||||||
|
|
||||||
|
done = findfirst(Comodin,&ffblk,FA_DIREC);
|
||||||
|
while (!done) {
|
||||||
|
if (ffblk.ff_attrib != 0x10) {
|
||||||
|
strcpy(Browser[maxfiles].Fichero,ffblk.ff_name);
|
||||||
|
Browser[maxfiles].Longitud=ffblk.ff_fsize;
|
||||||
|
Browser[maxfiles].attrs=ffblk.ff_attrib;
|
||||||
|
if (ffblk.ff_attrib & 16) Browser[maxfiles].Longitud=0;
|
||||||
|
maxfiles++;
|
||||||
|
}
|
||||||
|
done = findnext(&ffblk);
|
||||||
|
if (maxfiles==200) done=!done; //stop to prevent internal crashes.
|
||||||
|
}
|
||||||
|
return maxfiles;
|
||||||
|
}
|
||||||
|
|
||||||
|
void interrupt critical_error_handler(.../*__CPPARGS*/) {
|
||||||
|
asm push ax //preserve only modified register
|
||||||
|
asm mov ax,di //di holds error code ranging from 0 to 0x0c
|
||||||
|
// asm inc ax
|
||||||
|
asm mov erroroccurred,ax //increase erroroccurred for ease of programming
|
||||||
|
asm mov al,0x20
|
||||||
|
asm out 0x20,al //send interrupt clear flag
|
||||||
|
// asm pushf // I think I dont need this line in....
|
||||||
|
asm pop ax //restore ax
|
||||||
|
}
|
||||||
|
|
||||||
|
void startceh() {
|
||||||
|
old_int24 = _dos_getvect( 0x24 );
|
||||||
|
_dos_setvect( 0x24, critical_error_handler);
|
||||||
|
}
|
||||||
|
|
||||||
|
void stopceh() {
|
||||||
|
_dos_setvect(0x24,old_int24);
|
||||||
|
}
|
||||||
|
ƒût÷ë‹„ƒût÷ûˆƒût÷니ƒût÷ûÀ>€ÿtTãRÿ6ž£°SèGQ2À¹èHê€>™t¡š†ÄèêY[&Š"ÀtSQè`þY[CâíXPèê€>™t¡š†Äèäé<C3A4>žÃQèöýèè5Yᮀ
|
BIN
C.EXE
Normal file
BIN
C.EXE
Normal file
Binary file not shown.
942
COMPACTA.CPP
Normal file
942
COMPACTA.CPP
Normal file
@ -0,0 +1,942 @@
|
|||||||
|
#include <ctype.h>
|
||||||
|
#include <direct.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <dir.h>
|
||||||
|
#include <dos.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <alloc.h>
|
||||||
|
#include <conio.h> // Para getch();
|
||||||
|
#include <graphics.h> // Para outtextxy(...); y cleardevice(...);
|
||||||
|
|
||||||
|
#include "make_bot.h" // Fuciones de MAKE_BOTON
|
||||||
|
|
||||||
|
#define __Modulo_Principal
|
||||||
|
#include "compacta.h"
|
||||||
|
#undef __Modulo_Principal
|
||||||
|
|
||||||
|
int InputCadenaG(char *s, int numalp, int lmax, int cc, int cf, int left, int up, int right, int down);
|
||||||
|
void Refresh(void);
|
||||||
|
|
||||||
|
|
||||||
|
BROWSER far *Browser;
|
||||||
|
PROJECT Project;
|
||||||
|
|
||||||
|
int main(void){
|
||||||
|
|
||||||
|
erroroccurred = 0;
|
||||||
|
|
||||||
|
if( ( Browser = (BROWSER far *)farmalloc( 250 * sizeof(BROWSER) ) ) == NULL )
|
||||||
|
{
|
||||||
|
cprintf("\n\r Memoria insuficiente\n\r");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
Initialize( 9, 2 ); // Inicializa el Modo Gr fico
|
||||||
|
carga_botones("Compacta.img"); // Carga botones del fichero "botones.p1"
|
||||||
|
|
||||||
|
|
||||||
|
Imprime_Estaticos( 1, "Compacta.img"); // Imprime botones estaticos 'Seccion 1'
|
||||||
|
|
||||||
|
Borde_Activo = B_Browser;
|
||||||
|
Marca_Bordes();
|
||||||
|
|
||||||
|
startceh();
|
||||||
|
olddrive = getdisk();
|
||||||
|
getcwd( oldpath, 229 );
|
||||||
|
|
||||||
|
strcpy( Comodin, "*.*" );
|
||||||
|
|
||||||
|
LastPosicion=0;
|
||||||
|
/*
|
||||||
|
ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ
|
||||||
|
Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û
|
||||||
|
Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û
|
||||||
|
Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û
|
||||||
|
ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß
|
||||||
|
*/
|
||||||
|
Project.DirectorioExe[0] = NULL;
|
||||||
|
Project.FilesAdded = 0;
|
||||||
|
Project.Selected[0] = 0;
|
||||||
|
LastSelected = 0;
|
||||||
|
Project.ExeInfo.Longitud = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜ
|
||||||
|
Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û
|
||||||
|
Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û
|
||||||
|
Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û±°±Û
|
||||||
|
ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß ßßß
|
||||||
|
*/
|
||||||
|
BrowserTop = 0; BrowserRow = 0;
|
||||||
|
RasterScan();
|
||||||
|
Fill_Directory();
|
||||||
|
ReDraw_Browser();
|
||||||
|
ShowHideBrowserRow( SHOW );
|
||||||
|
|
||||||
|
while(1){ // Bucle infinito
|
||||||
|
|
||||||
|
switch( Comprueba_Secuencia( 1 ) ) { // Iniciamos comprobacion
|
||||||
|
|
||||||
|
case 0: // No se pulso ningun BOTON
|
||||||
|
while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER
|
||||||
|
break;
|
||||||
|
case -2: // Hay una tecla normal en BUFFER
|
||||||
|
switch( getch() )
|
||||||
|
{
|
||||||
|
case 13:
|
||||||
|
if ( Borde_Activo == B_Browser )
|
||||||
|
{
|
||||||
|
if ( SelectBrowser() )
|
||||||
|
AddFile();
|
||||||
|
} else
|
||||||
|
if ( Borde_Activo == Files_Added && Project.FilesAdded != 0 )
|
||||||
|
SelectFile();
|
||||||
|
|
||||||
|
Refresh();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case -1: // Hay una tecla especial en BUFFER
|
||||||
|
switch( getch() )
|
||||||
|
{
|
||||||
|
// Editar nombre del destino.
|
||||||
|
case 32:
|
||||||
|
Borde_Activo = Fichero_EXE ;
|
||||||
|
Marca_Bordes();
|
||||||
|
settextstyle( SMALL_FONT, HORIZ_DIR, 5 );
|
||||||
|
InputCadenaG(Project.DestName, 0, 13, EGA_BLACK, EGA_CYAN, 441, 12, 539, 27);
|
||||||
|
break;
|
||||||
|
// Editar nombre de macro para el C¢digo ID.
|
||||||
|
case 49:
|
||||||
|
if ( Project.FilesAdded != 0 )
|
||||||
|
{
|
||||||
|
Borde_Activo = Info_Fich_Cola ;
|
||||||
|
Marca_Bordes();
|
||||||
|
settextstyle( SMALL_FONT, HORIZ_DIR, 5 );
|
||||||
|
InputCadenaG(Project.Macro[CurrRow], 0, 13, EGA_BLACK, EGA_CYAN, 263, 173, 364, 188);
|
||||||
|
Borde_Activo = Files_Added;
|
||||||
|
Marca_Bordes();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
// Inicio
|
||||||
|
case 71:
|
||||||
|
|
||||||
|
if ( ( Borde_Activo == Files_Added ) && Project.FilesAdded != 0 )
|
||||||
|
{
|
||||||
|
ShowHideSelect( HIDE );
|
||||||
|
ShowInfo(HIDE);
|
||||||
|
CurrRow = 0;
|
||||||
|
ShowHideSelect( SHOW );
|
||||||
|
ShowInfo(HIDE);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
// Fin
|
||||||
|
case 79:
|
||||||
|
if ( ( Borde_Activo == Files_Added ) && Project.FilesAdded != 0 )
|
||||||
|
{
|
||||||
|
ShowHideSelect( HIDE );
|
||||||
|
ShowInfo(HIDE);
|
||||||
|
CurrRow = Project.FilesAdded - 1;
|
||||||
|
ShowHideSelect( SHOW );
|
||||||
|
ShowInfo(HIDE);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
// Flecha Arriba
|
||||||
|
case 72:
|
||||||
|
if ( Borde_Activo == B_Browser )
|
||||||
|
UpBrowser();
|
||||||
|
else
|
||||||
|
if ( ( Borde_Activo == Files_Added || Borde_Activo == Info_Fich_Cola ) && Project.FilesAdded != 0 )
|
||||||
|
UpSelect();
|
||||||
|
break;
|
||||||
|
// Flecha Abajo
|
||||||
|
case 80:
|
||||||
|
if ( Borde_Activo == B_Browser )
|
||||||
|
DownBrowser();
|
||||||
|
else
|
||||||
|
if ( ( Borde_Activo == Files_Added ) && Project.FilesAdded != 0 )
|
||||||
|
DownSelect();
|
||||||
|
break;
|
||||||
|
// Avanzar P gina
|
||||||
|
case 81:
|
||||||
|
if ( Borde_Activo == B_Browser )
|
||||||
|
{
|
||||||
|
BrowserTop += 15;
|
||||||
|
while( (BrowserTop + BrowserRow) >= maxfiles && BrowserTop > 0 ) BrowserTop--;
|
||||||
|
while( (BrowserTop + BrowserRow) >= maxfiles && BrowserRow > 0 ) BrowserRow--;
|
||||||
|
//////// Redibuja Browser
|
||||||
|
ReDraw_Browser();
|
||||||
|
ShowHideBrowserRow( SHOW );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
// Retroceder P gina
|
||||||
|
case 73:
|
||||||
|
if ( Borde_Activo == B_Browser )
|
||||||
|
{
|
||||||
|
BrowserTop -= 15; if ( BrowserTop < 0 ) BrowserTop = 0;
|
||||||
|
while( (BrowserTop + BrowserRow) < 0 ) BrowserRow++;
|
||||||
|
//////// Redibuja Browser
|
||||||
|
ReDraw_Browser();
|
||||||
|
ShowHideBrowserRow( SHOW );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Select_EXE :
|
||||||
|
Borde_Activo = B_Browser;
|
||||||
|
strcpy( Comodin, "*.EXE" );
|
||||||
|
// 2§ Realizamos un Scaneo del Directorio
|
||||||
|
BrowserTop = 0; BrowserRow = 0;
|
||||||
|
RasterScan();
|
||||||
|
Fill_Directory();
|
||||||
|
//////// Redibuja Browser
|
||||||
|
ReDraw_Browser();
|
||||||
|
ShowHideBrowserRow( SHOW );
|
||||||
|
//////// Espera hasta seleccionar un .EXE
|
||||||
|
char Done_Exe = 0;
|
||||||
|
while( !Done_Exe )
|
||||||
|
{
|
||||||
|
switch( Comprueba_Secuencia( 1 ) )
|
||||||
|
{
|
||||||
|
case 0: // No se pulso ningun BOTON
|
||||||
|
while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER
|
||||||
|
break;
|
||||||
|
case -2:
|
||||||
|
switch( getch() )
|
||||||
|
{
|
||||||
|
case 13:
|
||||||
|
if ( SelectBrowser() )
|
||||||
|
{
|
||||||
|
Project.ExeInfo = Browser[BrowserRow + BrowserTop];
|
||||||
|
getcwd(Project.DirectorioExe, 200);
|
||||||
|
}
|
||||||
|
Done_Exe = 1;
|
||||||
|
break;
|
||||||
|
case 27:
|
||||||
|
Done_Exe = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case -1: // Hay una tecla especial en BUFFER
|
||||||
|
switch( getch() )
|
||||||
|
{
|
||||||
|
// Flecha Arriba
|
||||||
|
case 72:
|
||||||
|
UpBrowser();
|
||||||
|
break;
|
||||||
|
// Flecha Abajo
|
||||||
|
case 80:
|
||||||
|
DownBrowser();
|
||||||
|
break;
|
||||||
|
// Avanzar P gina
|
||||||
|
case 81:
|
||||||
|
BrowserTop += 15;
|
||||||
|
while( (BrowserTop + BrowserRow) >= maxfiles && BrowserTop > 0 ) BrowserTop--;
|
||||||
|
while( (BrowserTop + BrowserRow) >= maxfiles && BrowserRow > 0 ) BrowserRow--;
|
||||||
|
//////// Redibuja Browser
|
||||||
|
ReDraw_Browser();
|
||||||
|
ShowHideBrowserRow( SHOW );
|
||||||
|
break;
|
||||||
|
// Retroceder P gina
|
||||||
|
case 73:
|
||||||
|
BrowserTop -= 15; if ( BrowserTop < 0 ) BrowserTop = 0;
|
||||||
|
while( (BrowserTop + BrowserRow) < 0 ) BrowserRow++;
|
||||||
|
//////// Redibuja Browser
|
||||||
|
ReDraw_Browser();
|
||||||
|
ShowHideBrowserRow( SHOW );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Subir_Browser :
|
||||||
|
Borde_Activo = B_Browser;
|
||||||
|
UpBrowser();
|
||||||
|
break;
|
||||||
|
case Select_Browser :
|
||||||
|
Borde_Activo = B_Browser;
|
||||||
|
if ( SelectBrowser() )
|
||||||
|
{
|
||||||
|
Project.ExeInfo = Browser[BrowserRow + BrowserTop];
|
||||||
|
getcwd(Project.DirectorioExe, 200);
|
||||||
|
}
|
||||||
|
Done_Exe = 1;
|
||||||
|
break;
|
||||||
|
case Bajar_Browser :
|
||||||
|
Borde_Activo = B_Browser;
|
||||||
|
DownBrowser();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//////// Miramos si el EXE ya ha sido tratado y ense¤amos los
|
||||||
|
//////// ficheros que contiene....
|
||||||
|
Check_EXE();
|
||||||
|
strcpy( Comodin, "*.*" );
|
||||||
|
// 2§ Realizamos un Scaneo del Directorio
|
||||||
|
BrowserTop = 0; BrowserRow = 0;
|
||||||
|
RasterScan();
|
||||||
|
Fill_Directory();
|
||||||
|
ReDraw_Browser();
|
||||||
|
ShowHideBrowserRow( SHOW );
|
||||||
|
Refresh();
|
||||||
|
break;
|
||||||
|
case Load_PRJ :
|
||||||
|
Load_Project();
|
||||||
|
// Refresh_all();
|
||||||
|
break;
|
||||||
|
case Save_PRJ :
|
||||||
|
Save_Project();
|
||||||
|
break;
|
||||||
|
case Make_H :
|
||||||
|
Make_Header();
|
||||||
|
break;
|
||||||
|
case Ins :
|
||||||
|
if ( Borde_Activo == Files_Added )
|
||||||
|
{
|
||||||
|
Borde_Activo = B_Browser;
|
||||||
|
Marca_Bordes();
|
||||||
|
Refresh();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Supr :
|
||||||
|
if ( Borde_Activo == Files_Added )
|
||||||
|
Delete_Added();
|
||||||
|
Refresh();
|
||||||
|
break;
|
||||||
|
case Join_Files :
|
||||||
|
Start_Join();
|
||||||
|
break;
|
||||||
|
case Sort_Cola :
|
||||||
|
FSort_Cola();
|
||||||
|
break;
|
||||||
|
case SWAP :
|
||||||
|
switch( Borde_Activo )
|
||||||
|
{
|
||||||
|
case Fichero_EXE :
|
||||||
|
Borde_Activo = Info_Fich_Cola ;
|
||||||
|
Marca_Bordes();
|
||||||
|
break;
|
||||||
|
case Info_Fich_Cola :
|
||||||
|
Borde_Activo = B_Browser ;
|
||||||
|
Marca_Bordes();
|
||||||
|
break;
|
||||||
|
case B_Browser :
|
||||||
|
if ( EXE_is_JD )
|
||||||
|
Borde_Activo = Files_Already_Added ;
|
||||||
|
else
|
||||||
|
Borde_Activo = Files_Added ;
|
||||||
|
Marca_Bordes();
|
||||||
|
break;
|
||||||
|
case Files_Already_Added :
|
||||||
|
Borde_Activo = Files_Added ;
|
||||||
|
Marca_Bordes();
|
||||||
|
break;
|
||||||
|
case Files_Added :
|
||||||
|
Borde_Activo = Fichero_EXE ;
|
||||||
|
Marca_Bordes();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Subir_Browser :
|
||||||
|
Borde_Activo = B_Browser;
|
||||||
|
UpBrowser();
|
||||||
|
break;
|
||||||
|
case Select_Browser :
|
||||||
|
Borde_Activo = B_Browser;
|
||||||
|
if ( SelectBrowser() )
|
||||||
|
AddFile();
|
||||||
|
break;
|
||||||
|
case Bajar_Browser :
|
||||||
|
Borde_Activo = B_Browser;
|
||||||
|
DownBrowser();
|
||||||
|
break;
|
||||||
|
case Exit:
|
||||||
|
farfree(Browser);
|
||||||
|
stopceh();
|
||||||
|
restorecrtmode();
|
||||||
|
setdisk(olddrive);
|
||||||
|
chdir(oldpath);
|
||||||
|
return 0;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Marca_Bordes( void )
|
||||||
|
{
|
||||||
|
/// Primero los ponemos todos en verde
|
||||||
|
Imprime_Bordes(2, Fichero_EXE, -1);
|
||||||
|
Imprime_Bordes(2, Info_Fich_Cola, -1);
|
||||||
|
Imprime_Bordes(2, B_Browser, -1);
|
||||||
|
Imprime_Bordes(2, Files_Already_Added, -1);
|
||||||
|
Imprime_Bordes(2, Files_Added, -1);
|
||||||
|
|
||||||
|
/// Luego marcamos el borde seleccionado
|
||||||
|
Imprime_Bordes(2, Borde_Activo, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||||
|
// ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||||
|
// ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||||
|
// ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||||
|
// ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||||
|
// Û F U N C I O N E S S E L E C C I O N A R I N F O A R C H . Û
|
||||||
|
// ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||||
|
// ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||||
|
// ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||||
|
// ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||||
|
// ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||||
|
// ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||||
|
|
||||||
|
void UpSelect( void )
|
||||||
|
{
|
||||||
|
if ( CurrRow != 0 )
|
||||||
|
{
|
||||||
|
ShowHideSelect( HIDE );
|
||||||
|
CurrRow--;
|
||||||
|
ShowHideSelect( SHOW );
|
||||||
|
ShowInfo(HIDE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DownSelect( void )
|
||||||
|
{
|
||||||
|
if ( CurrRow < (Project.FilesAdded - 1) )
|
||||||
|
{
|
||||||
|
ShowHideSelect( HIDE );
|
||||||
|
CurrRow++;
|
||||||
|
ShowHideSelect( SHOW );
|
||||||
|
ShowInfo(HIDE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShowHideSelect( char Hide_Show )
|
||||||
|
{
|
||||||
|
char VirRow, VirCol;
|
||||||
|
char Buffer[80];
|
||||||
|
|
||||||
|
settextstyle( SMALL_FONT, HORIZ_DIR, 5 );
|
||||||
|
|
||||||
|
VirCol = CurrRow / 17;
|
||||||
|
VirRow = CurrRow - ( VirCol * 17 );
|
||||||
|
|
||||||
|
if ( Hide_Show == HIDE )
|
||||||
|
{
|
||||||
|
setfillstyle( SOLID_FILL, EGA_BLACK );
|
||||||
|
bar( 131 + (VirCol*130), 215 + 3 + (VirRow*15), 131 + 130 + (VirCol*130), 215 + 3 + 10 + (VirRow*15) );
|
||||||
|
setcolor( EGA_WHITE );
|
||||||
|
} else {
|
||||||
|
setfillstyle( SOLID_FILL, EGA_CYAN );
|
||||||
|
bar( 131 + (VirCol*130), 215 + 3 + (VirRow*15), 131 + 130 + (VirCol*130), 215 + 3 + 10 + (VirRow*15) );
|
||||||
|
setcolor( EGA_BLACK );
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Project.Selected[CurrRow]!=0)
|
||||||
|
{
|
||||||
|
sprintf( Buffer, "% 3d", Project.Selected[CurrRow] );
|
||||||
|
outtextxy( 131 + (VirCol*130), 215 + (VirRow*15), Buffer );
|
||||||
|
}
|
||||||
|
|
||||||
|
sprintf( Buffer, " %s", Project.Cola[CurrRow].Fichero );
|
||||||
|
outtextxy( 131 + (VirCol*130), 215 + (VirRow*15), Buffer );
|
||||||
|
}
|
||||||
|
|
||||||
|
void SelectFile(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
if ( Project.FilesAdded != 0 )
|
||||||
|
{
|
||||||
|
if ( !Project.Selected[ CurrRow ] )
|
||||||
|
{
|
||||||
|
LastSelected++;
|
||||||
|
Project.Selected[ CurrRow ] = LastSelected;
|
||||||
|
} else {
|
||||||
|
char OldRow = CurrRow;
|
||||||
|
CurrRow = 0;
|
||||||
|
while( CurrRow < Project.FilesAdded )
|
||||||
|
{
|
||||||
|
if ( Project.Selected[ CurrRow ] != 0 && Project.Selected[ CurrRow ] > Project.Selected[ OldRow ] )
|
||||||
|
{
|
||||||
|
Project.Selected[ CurrRow ] --;
|
||||||
|
ShowHideSelect( HIDE );
|
||||||
|
}
|
||||||
|
CurrRow++;
|
||||||
|
}
|
||||||
|
LastSelected--;
|
||||||
|
CurrRow = OldRow;
|
||||||
|
Project.Selected[ CurrRow ] = 0;
|
||||||
|
ShowHideSelect( HIDE );
|
||||||
|
}
|
||||||
|
if ( CurrRow + 1 < Project.FilesAdded ) {
|
||||||
|
ShowHideSelect( HIDE );
|
||||||
|
CurrRow++;
|
||||||
|
}
|
||||||
|
|
||||||
|
ShowHideSelect( SHOW );
|
||||||
|
ShowInfo( HIDE );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void AddFile(void)
|
||||||
|
{
|
||||||
|
if ( Project.FilesAdded != 51 )
|
||||||
|
{
|
||||||
|
ShowHideSelect( HIDE );
|
||||||
|
Project.FilesAdded++;
|
||||||
|
CurrRow = Project.FilesAdded - 1;
|
||||||
|
strcpy( Project.Cola[ CurrRow ].Fichero, Browser[ BrowserRow + BrowserTop ].Fichero );
|
||||||
|
Project.Cola[ CurrRow ]. Longitud = Browser[ BrowserRow + BrowserTop ]. Longitud;
|
||||||
|
Project.Cola[ CurrRow ]. Posicion = LastPosicion;
|
||||||
|
LastPosicion += Project.Cola[ CurrRow ]. Longitud;
|
||||||
|
Project.Selected[ CurrRow ] = 0;
|
||||||
|
getcwd( Project.Directorio[ CurrRow ], 200 );
|
||||||
|
strcpy( Project.Macro[ CurrRow ] , "\0" );
|
||||||
|
ShowHideSelect( SHOW );
|
||||||
|
ShowInfo(HIDE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Make_Header(void)
|
||||||
|
{
|
||||||
|
char Avance = 0;
|
||||||
|
FILE *handle_h;
|
||||||
|
|
||||||
|
fprintf(handle_h, " /*****************\ \n");
|
||||||
|
fprintf(handle_h, "|* C O M P A C T A *| \n");
|
||||||
|
fprintf(handle_h, "|* À------------------------------*|\n");
|
||||||
|
fprintf(handle_h, "|* Programa realizado por JOSE DAVID GUILLEN *|\n");
|
||||||
|
fprintf(handle_h, "|* *|\n");
|
||||||
|
fprintf(handle_h, "|* *|\n");
|
||||||
|
fprintf(handle_h, "|* Cuando tenga que referirse a un fichero interno *|\n");
|
||||||
|
fprintf(handle_h, "|* solo tiene *|\n");
|
||||||
|
fprintf(handle_h, "|* *|\n");
|
||||||
|
fprintf(handle_h, "|* *|\n");
|
||||||
|
fprintf(handle_h, "|* *|\n");
|
||||||
|
fprintf(handle_h, " \*************************************************/ \n");
|
||||||
|
|
||||||
|
while( Avance < Project.FilesAdded+1 )
|
||||||
|
{
|
||||||
|
if( strlen( Project.Macro[ Avance ] ) )
|
||||||
|
{
|
||||||
|
fprintf(handle_h, "#define %15s % 3d\n", Project.Macro[ Avance ], (int)Avance );
|
||||||
|
}
|
||||||
|
Avance++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Delete_Added(void)
|
||||||
|
{
|
||||||
|
if ( Project.FilesAdded != 0 )
|
||||||
|
{
|
||||||
|
Project.FilesAdded--;
|
||||||
|
|
||||||
|
LastPosicion -= Project.Cola[ CurrRow ].Longitud;
|
||||||
|
|
||||||
|
char Avance = 0;
|
||||||
|
if ( Project.Selected[ CurrRow ] )
|
||||||
|
{
|
||||||
|
while( Avance < Project.FilesAdded+1 )
|
||||||
|
{
|
||||||
|
if ( Project.Selected[ Avance ] != 0 && Project.Selected[ Avance ] > Project.Selected[ CurrRow ] )
|
||||||
|
Project.Selected[ Avance ] --;
|
||||||
|
Avance++;
|
||||||
|
}
|
||||||
|
LastSelected--;
|
||||||
|
Project.Selected[ CurrRow ] = 0;
|
||||||
|
}
|
||||||
|
Avance = CurrRow;
|
||||||
|
while( Avance < 51 )
|
||||||
|
{
|
||||||
|
Project.Cola[ Avance ] = Project.Cola[ Avance + 1 ];
|
||||||
|
// LastPosicion = Project.Cola[ Avance /*- 1*/]. Longitud;
|
||||||
|
Project.Cola[ Avance ]. Posicion = ( (Avance==0) ?
|
||||||
|
Project.ExeInfo.Longitud
|
||||||
|
:
|
||||||
|
( Project.Cola[ Avance - 1 ].Posicion + Project.Cola[ Avance - 1].Longitud )
|
||||||
|
);
|
||||||
|
Project.Selected[ Avance ] = Project.Selected[ Avance + 1] ;
|
||||||
|
strcpy( Project.Directorio[ Avance ], Project.Directorio[ Avance + 1 ] );
|
||||||
|
Avance++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( CurrRow > Project.FilesAdded - 1 ) CurrRow = Project.FilesAdded - 1;
|
||||||
|
if ( Project.FilesAdded == 0 ) {
|
||||||
|
CurrRow = 0;
|
||||||
|
LastPosicion = 0;
|
||||||
|
}
|
||||||
|
All_Screen();
|
||||||
|
if ( CurrRow != 0 || Project.FilesAdded > 0 )
|
||||||
|
{
|
||||||
|
ShowHideSelect( SHOW );
|
||||||
|
ShowInfo(HIDE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
strcpy( Project.Cola[0].Fichero , "\0" );
|
||||||
|
strcpy( Project.Directorio[0] , "\0" );
|
||||||
|
strcpy( Project.Macro[0] , "\0" );
|
||||||
|
ShowInfo(HIDE);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FSort_Cola(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
if ( Project.FilesAdded != 0 )
|
||||||
|
{
|
||||||
|
char Avance = Project.FilesAdded - 1;
|
||||||
|
char Pos = Project.FilesAdded - 1;
|
||||||
|
|
||||||
|
COLA Cola;
|
||||||
|
char Directorio[200];
|
||||||
|
char Selected;
|
||||||
|
char Macro[15];
|
||||||
|
|
||||||
|
// 1§ Vemos cuantos archivos tenemos que ordenar y dejamos los que no
|
||||||
|
// tenemos que ordenar al final ( pero sin alterar su orden ).
|
||||||
|
while( Avance >= 0 )
|
||||||
|
{
|
||||||
|
if ( Project.Selected[ Avance ] == 0 )
|
||||||
|
{
|
||||||
|
strcpy( Macro, Project.Macro[ Pos ] );
|
||||||
|
strcpy( Directorio, Project.Directorio[ Pos ] );
|
||||||
|
Cola= Project.Cola[ Pos ] ;
|
||||||
|
Selected = Project.Selected[ Pos ] ;
|
||||||
|
// 1 arc001 arc001
|
||||||
|
strcpy( Project.Macro[ Pos ], //
|
||||||
|
Project.Macro[ Avance ] ); // arc002 >ÄÄÄ¿ arc003
|
||||||
|
// ³
|
||||||
|
strcpy( Project.Directorio[ Pos ], // 2 arc003 ³ arc007
|
||||||
|
Project.Directorio[ Avance ] ); // ³
|
||||||
|
// arc004 >ÄÄ¿³ arc006
|
||||||
|
Project.Cola[ Pos ] = // ³³
|
||||||
|
Project.Cola[ Avance ]; // arc005 >Ä¿³ÀÄÄ> arc002
|
||||||
|
// ³³
|
||||||
|
Project.Selected[ Pos ] = // 4 arc006 ³ÀÄÄÄ> arc004
|
||||||
|
Project.Selected[ Avance ]; // ³
|
||||||
|
// 3 arc007 ÀÄÄÄÄ> arc005
|
||||||
|
|
||||||
|
strcpy( Project.Macro[ Avance ], Macro );
|
||||||
|
strcpy( Project.Directorio[ Avance ], Directorio );
|
||||||
|
Project.Cola[ Avance ] = Cola;
|
||||||
|
Project.Selected[ Avance ] = Selected;
|
||||||
|
|
||||||
|
Pos--;
|
||||||
|
}
|
||||||
|
|
||||||
|
Avance--;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ahora procederemos a la ordenacion de los ficheros seleccionados
|
||||||
|
|
||||||
|
/*******************************************************************\ // |\
|
||||||
|
|* El bucle se debe a que he observado unos fallos en el sistema de *| // | \
|
||||||
|
|* ordenanci¢n y dado que me sobra la velocidad, y falta memoria *| // || \
|
||||||
|
|* prefiero realizar un proceso "recursivo" varias veces... *| // || J \
|
||||||
|
\*******************************************************************/ // ||__D_\
|
||||||
|
/* ||
|
||||||
|
__ __ __ __ :____|_|____:
|
||||||
|
__ / \__ / \__ / \__ / \__ / \__ Ultimamente me estoy \ \|\\\^///|/
|
||||||
|
\ __/ \ __ / \ __ / \ __/ \ __ / aficionando a realizar \ __--__- \\\^/// --__-___-_---
|
||||||
|
__ / \__ / \__ / \__ / \__ / \__ dibujitos en los comentarios \ \_/
|
||||||
|
/ \ / \ / \ / \ / \ / \ \ ___
|
||||||
|
| JD | | JD | | JD | | JD | | JD | | JD | Estoy aburrido de realizar cosas \__
|
||||||
|
\ / \ / \ / \ / \ / \ / peque¤as y sin otro valor mas que'l mio. \
|
||||||
|
ùù ùù ùù ùù ùù ùù
|
||||||
|
*/
|
||||||
|
for( char i=0; i <= Project.FilesAdded; i++ )
|
||||||
|
{
|
||||||
|
Avance = 0;
|
||||||
|
while( Avance < 51 )
|
||||||
|
{
|
||||||
|
if ( Project.Selected[ Avance ] != 0 )
|
||||||
|
{
|
||||||
|
if( (Pos = Project.Selected[ Avance ] - 1) != Avance )
|
||||||
|
{
|
||||||
|
strcpy( Macro, Project.Macro[ Pos ] );
|
||||||
|
strcpy( Directorio, Project.Directorio[ Pos ] );
|
||||||
|
Cola= Project.Cola[ Pos ];
|
||||||
|
Selected = Project.Selected[ Pos ];
|
||||||
|
|
||||||
|
// 1 arc001 >------> arc001
|
||||||
|
strcpy( Project.Macro[ Pos ], //
|
||||||
|
Project.Macro[ Avance ] ); // arc002 Ú----> arc003
|
||||||
|
// |
|
||||||
|
strcpy( Project.Directorio[ Pos ], // 2 arc003 >-Ù Ú--> arc007
|
||||||
|
Project.Directorio[ Avance ] ); // |
|
||||||
|
// arc004 |Ú-> arc006
|
||||||
|
Project.Cola[ Pos ] = // ||
|
||||||
|
Project.Cola[ Avance ]; // arc005 || arc002
|
||||||
|
// ||
|
||||||
|
Project.Selected[ Pos ] = // 4 arc006 >---ÅÙ arc004
|
||||||
|
Project.Selected[ Avance ]; // |
|
||||||
|
// 3 arc007 >---Ù arc005
|
||||||
|
|
||||||
|
strcpy( Project.Macro[ Avance ], Macro );
|
||||||
|
strcpy( Project.Directorio[ Avance ], Directorio );
|
||||||
|
Project.Cola[ Avance ] = Cola;
|
||||||
|
Project.Selected[ Avance ] = Selected;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Avance++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Antes de irnos no debemos olvidar de recalcular las posiciones de cola
|
||||||
|
Avance = 0;
|
||||||
|
long LastSize = Project.ExeInfo.Longitud;
|
||||||
|
while( Avance < Project.FilesAdded + 1 )
|
||||||
|
{
|
||||||
|
Project.Cola[Avance].Posicion = LastSize;
|
||||||
|
LastSize += Project.Cola[Avance].Longitud;
|
||||||
|
Avance++;
|
||||||
|
}
|
||||||
|
|
||||||
|
All_Screen();
|
||||||
|
ShowHideSelect( SHOW );
|
||||||
|
ShowInfo(HIDE);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ShowInfo( int Hide_Show )
|
||||||
|
{
|
||||||
|
settextstyle( SMALL_FONT, HORIZ_DIR, 5 );
|
||||||
|
|
||||||
|
char Buffer[80];
|
||||||
|
char Buffer1[80];
|
||||||
|
|
||||||
|
if ( Hide_Show == HIDE )
|
||||||
|
{
|
||||||
|
setfillstyle( SOLID_FILL, EGA_BLACK );
|
||||||
|
bar ( 263, 97, 364, 112);
|
||||||
|
bar ( 441, 97, 539, 112);
|
||||||
|
bar ( 441, 117, 539, 132);
|
||||||
|
bar ( 263, 153, 539, 168);
|
||||||
|
bar ( 263, 173, 364, 188); bar ( 441, 175, 539, 188);
|
||||||
|
|
||||||
|
setcolor( EGA_WHITE );
|
||||||
|
} else {
|
||||||
|
setfillstyle( SOLID_FILL, EGA_CYAN );
|
||||||
|
bar ( 263, 97, 364, 112);
|
||||||
|
bar ( 441, 97, 539, 112);
|
||||||
|
bar ( 441, 117, 539, 132);
|
||||||
|
bar ( 263, 153, 539, 168);
|
||||||
|
bar ( 263, 173, 364, 188); bar ( 441, 175, 539, 188);
|
||||||
|
setcolor( EGA_BLACK );
|
||||||
|
}
|
||||||
|
|
||||||
|
outtextxy( 265, 97, Project.Cola[CurrRow].Fichero );
|
||||||
|
formatea_long( Project.Cola[CurrRow].Longitud, Buffer );
|
||||||
|
sprintf( Buffer1, "%12s", Buffer);
|
||||||
|
outtextxy( 441, 97, Buffer1 );
|
||||||
|
formatea_long( Project.Cola[CurrRow].Posicion, Buffer );
|
||||||
|
sprintf( Buffer1, "%12s", Buffer);
|
||||||
|
outtextxy( 441, 117, Buffer1 );
|
||||||
|
|
||||||
|
// Aunque guardo el directorio completo, prevengo de salirme de mi campo.
|
||||||
|
strcpy( Buffer, Project.Directorio[CurrRow] );
|
||||||
|
|
||||||
|
if ( strlen(Buffer) > 35 )
|
||||||
|
{
|
||||||
|
|
||||||
|
// Acorta el Buffer poniendo al principio U:\...[DIRECTORIO]
|
||||||
|
char Buffer1[80];
|
||||||
|
|
||||||
|
// Primero copiamos en Buffer1 los 31 ultimos caracteres de Buffer
|
||||||
|
strncpy( Buffer1, strrev(Buffer), 31 ); Buffer1[30] = NULL;
|
||||||
|
strrev( Buffer1 );
|
||||||
|
// Despues conservamos solo de Buffer [Und][:][\]
|
||||||
|
strrev(Buffer); Buffer[3] = NULL;
|
||||||
|
// Y agregamos [...]
|
||||||
|
strcat( Buffer, "..." );
|
||||||
|
// Ya podemos unirlo todo
|
||||||
|
strcat( Buffer, Buffer1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
outtextxy( 264, 153, Buffer );
|
||||||
|
outtextxy( 263, 173, Project.Macro[CurrRow] );
|
||||||
|
sprintf( Buffer, "%12d", CurrRow );
|
||||||
|
outtextxy( 441, 175, Buffer );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void All_Screen(void)
|
||||||
|
{
|
||||||
|
char OldRow = CurrRow;
|
||||||
|
char VirCol, VirRow;
|
||||||
|
|
||||||
|
for ( CurrRow = 0; CurrRow < Project.FilesAdded; CurrRow++ )
|
||||||
|
ShowHideSelect( HIDE );
|
||||||
|
|
||||||
|
for ( CurrRow ; CurrRow < 51 ; CurrRow++ )
|
||||||
|
{
|
||||||
|
VirCol = CurrRow / 17;
|
||||||
|
VirRow = CurrRow - ( VirCol * 17 );
|
||||||
|
setfillstyle( SOLID_FILL, EGA_BLACK );
|
||||||
|
bar( 131 + (VirCol*130), 215 + 3 + (VirRow*15), 131 + 130 + (VirCol*130), 215 + 3 + 10 + (VirRow*15) );
|
||||||
|
}
|
||||||
|
|
||||||
|
CurrRow = OldRow;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Refresh(void)
|
||||||
|
{
|
||||||
|
char Buffer[80];
|
||||||
|
|
||||||
|
setfillstyle( SOLID_FILL, 0 );
|
||||||
|
// Exe Origen
|
||||||
|
bar( 263, 12, 364, 27 );
|
||||||
|
// Exe Destino
|
||||||
|
bar( 441, 12, 539, 27 );
|
||||||
|
// Long1
|
||||||
|
bar( 346, 42, 439, 57 );
|
||||||
|
// Long2
|
||||||
|
bar( 461, 42, 505, 57 );
|
||||||
|
|
||||||
|
settextstyle( SMALL_FONT, HORIZ_DIR, 5 );
|
||||||
|
|
||||||
|
outtextxy( 441, 12, Project.DestName );
|
||||||
|
outtextxy( 263, 12, Project.ExeInfo.Fichero );
|
||||||
|
|
||||||
|
char Buf1[80];
|
||||||
|
formatea_long( LastPosicion, Buf1 );
|
||||||
|
sprintf( Buffer, "% 11s", Buf1 );
|
||||||
|
outtextxy( 346, 42, Buffer );
|
||||||
|
|
||||||
|
sprintf( Buffer, "% 5u", (unsigned int)(sizeof(COLA)*Project.FilesAdded + 18 ) );
|
||||||
|
outtextxy( 461, 42, Buffer );
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// ÜÜÜÜ ÜÜÜÜÜ ÜÜÜÜ Ü Ü ÜÜÜ ÜÜÜÜÜ ÜÜÜÜ ÜÜÜ Ü ÜÜÜÜ Ü Ü ÜÜÜÜÜ
|
||||||
|
// Û Û Û Û Û ÛßÜßÛ Û Û Û Û Û Û Û Û Û ÛÛ Û Û
|
||||||
|
// Ûßß Û Û ÛßÛß Û Û ÛßßßÛ Û Ûßß ÛßßßÛ Û Û Û Û Û Û Û ÜÜÜ
|
||||||
|
// Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û ÛÛ Û Û
|
||||||
|
// ß ßßßßß ß ß ß ß ß ß ß ßßßß ß ß ßßßß ßßßß ß ß ßßßßß
|
||||||
|
|
||||||
|
void /*char **/formatea_long( long Numero, char *Inter_Chg ) {
|
||||||
|
|
||||||
|
char Buffer1[80];
|
||||||
|
char Buffer2[80];
|
||||||
|
int c;
|
||||||
|
|
||||||
|
sprintf(Buffer1, "%ld", Numero);
|
||||||
|
strcpy(Buffer2, "\0");
|
||||||
|
strrev(Buffer1);
|
||||||
|
c = strlen( Buffer1 );
|
||||||
|
while( c >= 3 ){
|
||||||
|
c -= 3;
|
||||||
|
strncat( Buffer2, Buffer1, 3);
|
||||||
|
strrev(Buffer1);
|
||||||
|
Buffer1[c] = '\0';
|
||||||
|
strrev(Buffer1);
|
||||||
|
if(strlen(Buffer1)!=0)
|
||||||
|
strcat( Buffer2, "." );
|
||||||
|
}
|
||||||
|
strcat( Buffer2, Buffer1);
|
||||||
|
|
||||||
|
strrev(Buffer2);
|
||||||
|
strcpy(Inter_Chg, Buffer2);
|
||||||
|
|
||||||
|
//return Buffer2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
int InputCadenaG(char *s, int numalp, int lmax, int cc, int cf, int left, int up, int right, int down)
|
||||||
|
{
|
||||||
|
|
||||||
|
int ls; // longitud cadena
|
||||||
|
char *s1; // puntero a cadena inicial
|
||||||
|
int c, ok = 0;
|
||||||
|
|
||||||
|
s1 = s; // inicio cadena
|
||||||
|
ls = strlen ( s ); // Longitud de actual
|
||||||
|
s += ls; // se coloca en el final
|
||||||
|
|
||||||
|
setfillstyle(SOLID_FILL, cf);
|
||||||
|
do{
|
||||||
|
bar(left, up, right, down);
|
||||||
|
setcolor(cc);
|
||||||
|
outtextxy( left, up-2, s1 );
|
||||||
|
if ( ls < lmax ) {
|
||||||
|
setcolor(4);
|
||||||
|
outtextxy( left+textwidth( s1 ), up-2, "<");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
switch( c = getch() ) // obtiene tecla
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
case 13:
|
||||||
|
ok = 1; // 13 = INTRO || Especiales
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
if ( ls > 0 ) { // 8 = Back Space
|
||||||
|
ls--;
|
||||||
|
s--;
|
||||||
|
*s = '\0';
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 27:
|
||||||
|
*s='\0';
|
||||||
|
ok = 1;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if ( !numalp && c >= 32 && c <= 254 && ls < lmax)
|
||||||
|
{
|
||||||
|
*s++ = toupper(c);
|
||||||
|
ls++;
|
||||||
|
*s = '\0';
|
||||||
|
} else
|
||||||
|
if ( numalp && isdigit(c) && ls < lmax) {
|
||||||
|
*s++ = c;
|
||||||
|
ls++;
|
||||||
|
*s = '\0';
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}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;
|
||||||
|
}
|
215
COMPACTA.H
Normal file
215
COMPACTA.H
Normal file
@ -0,0 +1,215 @@
|
|||||||
|
//////////////// Recuadros de Selecci¢n
|
||||||
|
#define Fichero_EXE 1
|
||||||
|
#define Info_Fich_Cola 2
|
||||||
|
#define B_Browser 3
|
||||||
|
#define Files_Already_Added 4
|
||||||
|
#define Files_Added 5
|
||||||
|
|
||||||
|
//////////////// Botones
|
||||||
|
#define Select_EXE 1
|
||||||
|
#define Load_PRJ 2
|
||||||
|
#define Save_PRJ 3
|
||||||
|
#define Make_H 4
|
||||||
|
#define Sort_Cola 5
|
||||||
|
#define Join_Files 6
|
||||||
|
#define Ins 7
|
||||||
|
#define Supr 8
|
||||||
|
#define SWAP 9
|
||||||
|
#define Exit 10
|
||||||
|
#define Subir_Browser 11
|
||||||
|
#define Select_Browser 12
|
||||||
|
#define Bajar_Browser 13
|
||||||
|
|
||||||
|
|
||||||
|
/////
|
||||||
|
#define HIDE 0
|
||||||
|
#define SHOW 1
|
||||||
|
|
||||||
|
/************************************************************************\
|
||||||
|
³±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±³
|
||||||
|
\************************************************************************/
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
char Fichero[13];
|
||||||
|
long Longitud;
|
||||||
|
unsigned char attrs;
|
||||||
|
} BROWSER;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
char Fichero[13];
|
||||||
|
long Longitud;
|
||||||
|
long Posicion;
|
||||||
|
} COLA;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
BROWSER ExeInfo;
|
||||||
|
char DirectorioExe[200];
|
||||||
|
char DestName[13];
|
||||||
|
char FilesAdded;
|
||||||
|
COLA Cola[51];
|
||||||
|
char Directorio[51][200];
|
||||||
|
char Selected[51];
|
||||||
|
char Macro[51][15];
|
||||||
|
} PROJECT;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
char ID_Code; // Debe contener una constante de comprobacion 'J'
|
||||||
|
char ID_check; // igual que el anterior pero conteniendo 'D'
|
||||||
|
char JD_string[11]; // aqui debe haber escrito "Jos‚ David" + NULL
|
||||||
|
long Org_Long; // Longitud original del EXE...
|
||||||
|
char N_Files_Added;
|
||||||
|
} EXE_COLA;
|
||||||
|
|
||||||
|
/************************************************************************\
|
||||||
|
³±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±³
|
||||||
|
\************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/************************************************************************\
|
||||||
|
³±±±±±±±±±±±±F±U±N±C±I±O±N±E±S±±±D±E±L±±±S±E±L±E±C±T±±±F±I±L±E±S±±±±±±±±±±±³
|
||||||
|
\************************************************************************/
|
||||||
|
|
||||||
|
#ifndef __Modulo_Principal
|
||||||
|
#define JD_ch extern
|
||||||
|
#else
|
||||||
|
#define JD_ch
|
||||||
|
#endif
|
||||||
|
|
||||||
|
JD_ch void formatea_long( long Numero, char *Inter_Chg );
|
||||||
|
JD_ch void ShowHideSelect( char Hide_Show ) ;
|
||||||
|
JD_ch void Delete_Added( void ) ;
|
||||||
|
JD_ch void Marca_Bordes( void ) ;
|
||||||
|
JD_ch void All_Screen( void ) ;
|
||||||
|
JD_ch void DownSelect( void ) ;
|
||||||
|
JD_ch void UpSelect( void ) ;
|
||||||
|
JD_ch void AddFile( void ) ;
|
||||||
|
JD_ch void ShowInfo( int Hide_Show ) ;
|
||||||
|
JD_ch void SelectFile( void ) ;
|
||||||
|
|
||||||
|
JD_ch void Start_Join(void) ;
|
||||||
|
JD_ch void Load_Project(void) ;
|
||||||
|
JD_ch void Save_Project(void) ;
|
||||||
|
JD_ch void Make_Header(void) ;
|
||||||
|
JD_ch void Check_EXE(void) ;
|
||||||
|
|
||||||
|
#ifdef __Modulo_Principal
|
||||||
|
void Start_Join(void) {}
|
||||||
|
void Load_Project(void) {}
|
||||||
|
void Save_Project(void) {}
|
||||||
|
void Make_Header(void) ;
|
||||||
|
void Check_EXE(void) {}
|
||||||
|
void FSort_Cola(void) ;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#undef JD_ch
|
||||||
|
|
||||||
|
/************************************************************************\
|
||||||
|
³±±±±±±±±±±±±±±F±U±N±C±I±O±N±E±S±±±D±E±L±±±B±R±O±W±S±E±R±±±±±±±±±±±±±±±±±±±³
|
||||||
|
\************************************************************************/
|
||||||
|
|
||||||
|
#ifndef __Modulo_Browser
|
||||||
|
#define JD_ch extern
|
||||||
|
#else
|
||||||
|
#define JD_ch
|
||||||
|
#endif
|
||||||
|
|
||||||
|
JD_ch unsigned int RasterScan( void ) ;
|
||||||
|
JD_ch void ShowHideBrowserRow( char Hide_Show ) ;
|
||||||
|
JD_ch void ReDraw_Browser( void ) ;
|
||||||
|
JD_ch void Fill_Directory( void ) ;
|
||||||
|
JD_ch int SelectBrowser( void ) ;
|
||||||
|
JD_ch void DownBrowser( void ) ;
|
||||||
|
JD_ch void UpBrowser( void ) ;
|
||||||
|
|
||||||
|
#undef JD_ch
|
||||||
|
|
||||||
|
/**************************************************************************\
|
||||||
|
³ ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± ³
|
||||||
|
\**************************************************************************/
|
||||||
|
/*
|
||||||
|
|
||||||
|
,
|
||||||
|
\
|
||||||
|
\ !
|
||||||
|
___________________________\___ ÚÄ¿
|
||||||
|
/ / ³ ÚÄ¿\ ÀÂÙ
|
||||||
|
/ / ³ ÀÂÙ \ ÚÅÙ
|
||||||
|
/__/ ³__Ã-_ÿ \ ÚÁ¿ ÚÄ¿
|
||||||
|
----- ³ ____ ____ \____\___ ---------ÀÂÙ----
|
||||||
|
/ / __ \ / __ \ ³# ------ÚÅ¿
|
||||||
|
³/ / \ \ ________________ / / \ \ \¿ -------|ß|
|
||||||
|
ÚÙ | JD | ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ | JD | ÀÄÄÄÄÄÄÄÙ ________
|
||||||
|
À \ / \ / ________
|
||||||
|
______________ùù____________________________ùù_______________________________
|
||||||
|
|
||||||
|
|
||||||
|
|||||||||======
|
||||||
|
/ ___ \====
|
||||||
|
/ ___ / __
|
||||||
|
/ / __/ ³ \
|
||||||
|
| / ³ \ ÀÄÄ|
|
||||||
|
\ | ÀÄÄ| /
|
||||||
|
| \ / ù-------\
|
||||||
|
\ ùù ---------/
|
||||||
|
\ \======/ |
|
||||||
|
\_________/
|
||||||
|
|
||||||
|
*/
|
||||||
|
#ifndef __Modulo_Principal
|
||||||
|
#define JD_ch extern
|
||||||
|
#else
|
||||||
|
#define JD_ch
|
||||||
|
#endif
|
||||||
|
|
||||||
|
JD_ch char Borde_Activo; // Indica el recuadro actualmente activo
|
||||||
|
JD_ch char Comodin[13]; // Comodin de rastreo para el Browser
|
||||||
|
|
||||||
|
JD_ch char EXE_is_JD; // El EXE cargado ha sido tratado por JD
|
||||||
|
JD_ch char FilesAdded; // Numero de Ficheros a¤adidos a la cola
|
||||||
|
JD_ch char CurrRow; // Linea actual en la cola..............
|
||||||
|
JD_ch char BrowserRow;
|
||||||
|
JD_ch int BrowserTop;
|
||||||
|
JD_ch int maxfiles;
|
||||||
|
JD_ch char oldpath[229]; //internal. do not change
|
||||||
|
JD_ch unsigned char olddrive; //impossible drive name
|
||||||
|
JD_ch char olddisk, key;
|
||||||
|
JD_ch long LastPosicion; // Esta variable guarda la ultima posici¢n dentro
|
||||||
|
JD_ch char LastSelected; // del ejecutable y la siguiente, el £ltimo se¤alado
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////
|
||||||
|
/***************************************************************************\
|
||||||
|
| Critical Disk Error handling routines (C) 1995 Jason Speight. |
|
||||||
|
| void interrupt critical_error_handler(__CPPARGS) is the interrupt which |
|
||||||
|
| captures disk io errors. (int 0x24, if you're interested!) Such errors |
|
||||||
|
| are : Disk not inserted in drive, seek error reading from a drive, general|
|
||||||
|
| disk failure etc. The only things the interrupt does is : |
|
||||||
|
| Suppress the dos ABORT,RETRY,FAIL,IGNORE statement |
|
||||||
|
| Sets a variable erroroccurred to the dos error statement. (!=0) |
|
||||||
|
| |
|
||||||
|
| StartCEH() and StopCEH() start and stop the error handler. YOU MUST |
|
||||||
|
| STOPCEH BEFORE THE EXIT OF THE PROGRAM. or else when you get a disk |
|
||||||
|
| error, the int 24 issued bu DOS points to the middle of nowhere! *HANG* |
|
||||||
|
| |
|
||||||
|
| diskerror() is my routine to display a disk IO error. It also sets the |
|
||||||
|
| global variable erroroccurred to 0 for future use. This procedure also |
|
||||||
|
| needs access to "SCRNHNDL.H" and "BOXES.H" |
|
||||||
|
| |
|
||||||
|
| BTW, anybody know how to trap the message "PLEASE INSERT DISK FOR DRIVE x"|
|
||||||
|
\***************************************************************************/
|
||||||
|
//for interrupt handlers
|
||||||
|
|
||||||
|
JD_ch void interrupt critical_error_handler(...) ; // interrupt prototype
|
||||||
|
JD_ch void interrupt (*old_int24)(...) ; // interrupt function pointer
|
||||||
|
JD_ch void startceh() ;
|
||||||
|
JD_ch void stopceh() ;
|
||||||
|
|
||||||
|
JD_ch int erroroccurred;
|
||||||
|
|
||||||
|
#undef JD_ch
|
287
COMPACTA.IMG
Normal file
287
COMPACTA.IMG
Normal file
@ -0,0 +1,287 @@
|
|||||||
|
1
|
||||||
|
|
||||||
|
|
||||||
|
******* Fichero .EXE **********************
|
||||||
|
& 189, 0, 555, 80, 7, 63, 56, -2, 1
|
||||||
|
& 192, 3, 552, 77, 7, 2, 2, -3, 1
|
||||||
|
& 196, 7, 548, 73, 7, 56, 63, 2, 1
|
||||||
|
|
||||||
|
**** Cuadro para Origen
|
||||||
|
& 262, 11, 365, 28, 0, 63, 56, 0, 1
|
||||||
|
| 200, 11, 2, 5, 0, 63, Origen,
|
||||||
|
| 201, 12, 2, 5, 0, 0, Origen,
|
||||||
|
| 200, 12, 2, 5, 0, 63, _,
|
||||||
|
| 201, 13, 2, 5, 0, 4, _,
|
||||||
|
|
||||||
|
**** Cuadro para Destino
|
||||||
|
& 440, 11, 540, 28, 0, 63, 56, 0, 1
|
||||||
|
| 360, 11, 2, 5, 0, 63, Destino,
|
||||||
|
| 361, 12, 2, 5, 0, 0, Destino,
|
||||||
|
| 360, 12, 2, 5, 0, 63, _,
|
||||||
|
| 361, 13, 2, 5, 0, 4, _,
|
||||||
|
|
||||||
|
**** Cuadro para tam¤o de la cola + Indice
|
||||||
|
& 345, 41, 440, 58, 0, 63, 56, 0, 1
|
||||||
|
|
||||||
|
& 460, 41, 506, 58, 0, 63, 56, 0, 1
|
||||||
|
*| 460, 41, 2, 5, 0, 63, 1234567890,
|
||||||
|
|
||||||
|
| 200, 41, 2, 5, 0, 63, Tama¤o de la cola,
|
||||||
|
| 201, 42, 2, 5, 0, 0, Tama¤o de la cola,
|
||||||
|
| 200, 42, 2, 5, 0, 63, _,
|
||||||
|
| 201, 43, 2, 5, 0, 4, _,
|
||||||
|
|
||||||
|
| 447, 41, 2, 5, 0, 63, +,
|
||||||
|
| 448, 42, 2, 5, 0, 0, +,
|
||||||
|
|
||||||
|
| 501, 41, 2, 5, 0, 63, Bytes,
|
||||||
|
| 502, 42, 2, 5, 0, 0, Bytes,
|
||||||
|
|
||||||
|
|
||||||
|
**** Cuadro para DATOS EXTENDIDOS SOBRE INCLUSIàN
|
||||||
|
& 189, 85, 555, 200, 7, 63, 56, -2, 1
|
||||||
|
& 192, 88, 552, 197, 7, 2, 2, -3, 1
|
||||||
|
& 196, 92, 548, 193, 7, 56, 63, 2, 1
|
||||||
|
|
||||||
|
**** Cuadro para Nombre_Extendido
|
||||||
|
& 262, 96, 365, 113, 0, 63, 56, 0, 1
|
||||||
|
| 195, 96, 2, 5, 0, 63, Nombre,
|
||||||
|
| 196, 97, 2, 5, 0, 0, Nombre,
|
||||||
|
|
||||||
|
**** Cuadro para Longitud
|
||||||
|
& 440, 96, 540, 113, 0, 63, 56, 0, 1
|
||||||
|
| 360, 96, 2, 5, 0, 63, Longitud,
|
||||||
|
| 361, 97, 2, 5, 0, 0, Longitud,
|
||||||
|
**** Cuadro para Posici¢n
|
||||||
|
& 440, 116, 540, 133, 0, 63, 56, 0, 1
|
||||||
|
| 360, 116, 2, 5, 0, 63, Posici¢n,
|
||||||
|
| 361, 117, 2, 5, 0, 0, Posici¢n,
|
||||||
|
|
||||||
|
**** Cuadro para Localizaci¢n
|
||||||
|
& 262, 152, 540, 169, 0, 63, 56, 0, 1
|
||||||
|
| 195, 154, 2, 4, 0, 63, Directorio,
|
||||||
|
| 196, 155, 2, 4, 0, 0, Directorio,
|
||||||
|
|
||||||
|
******* CUADROS PARA MACRO ****************
|
||||||
|
**** Cuadro para Posici¢n
|
||||||
|
& 262, 172, 365, 189, 0, 63, 56, 0, 1
|
||||||
|
| 195, 174, 2, 4, 0, 63, Nombre ID,
|
||||||
|
| 196, 175, 2, 4, 0, 0, Nombre ID,
|
||||||
|
| 195, 175, 2, 4, 0, 63, _,
|
||||||
|
| 196, 176, 2, 4, 0, 4, _,
|
||||||
|
& 440, 174, 540, 189, 0, 63, 56, 0, 1
|
||||||
|
| 360, 174, 2, 4, 0, 63, N£mero ID,
|
||||||
|
| 361, 175, 2, 4, 0, 0, N£mero ID,
|
||||||
|
|
||||||
|
|
||||||
|
******* BOTONES ***************************
|
||||||
|
************ Cuadro Para Botones **********
|
||||||
|
& 560, 0, 640, 480, 7, 63, 56, -2, 1
|
||||||
|
& 568, 8, 632, 472, 7, 56, 63, 2, 1
|
||||||
|
|
||||||
|
& 564, 4, 636, 476, 1, 2, 2, -3, 1
|
||||||
|
|
||||||
|
****** Botones:
|
||||||
|
* Seleccionar Fichero Ejecutable
|
||||||
|
& 570, 10, 629, 45, 7, 63, 56, 2, 1
|
||||||
|
| 574, 13, 2, 5, 0, 63, Fichero,
|
||||||
|
| 575, 14, 2, 5, 0, 0, Fichero,
|
||||||
|
| 574, 25, 2, 5, 0, 63, .EXE,
|
||||||
|
| 575, 26, 2, 5, 0, 0, .EXE,
|
||||||
|
| 574, 14, 2, 5, 0, 63, _,
|
||||||
|
| 575, 15, 2, 5, 0, 4, _,
|
||||||
|
*
|
||||||
|
*& 570, 46, 629, 81, 7, 63, 56, 2, 1
|
||||||
|
|
||||||
|
* Cargar .PRJ
|
||||||
|
& 570, 62, 629, 98, 7, 63, 56, 2, 1
|
||||||
|
| 574, 65, 2, 5, 0, 63, Cargar,
|
||||||
|
| 575, 66, 2, 5, 0, 0, Cargar,
|
||||||
|
| 574, 77, 2, 5, 0, 63, .PRJ,
|
||||||
|
| 575, 78, 2, 5, 0, 0, .PRJ,
|
||||||
|
| 574, 66, 2, 5, 0, 63, _,
|
||||||
|
| 575, 67, 2, 5, 0, 4, _,
|
||||||
|
* Salvar .PRJ
|
||||||
|
& 570, 99, 629, 134, 7, 63, 56, 2, 1
|
||||||
|
| 574, 102, 2, 5, 0, 63, Salvar,
|
||||||
|
| 575, 103, 2, 5, 0, 0, Salvar,
|
||||||
|
| 574, 114, 2, 5, 0, 63, .PRJ,
|
||||||
|
| 575, 115, 2, 5, 0, 0, .PRJ,
|
||||||
|
| 574, 103, 2, 5, 0, 63, _,
|
||||||
|
| 575, 104, 2, 5, 0, 4, _,
|
||||||
|
*
|
||||||
|
*& 570, 155, 629, 190, 7, 63, 56, 2, 1
|
||||||
|
* Crear Cabecera
|
||||||
|
& 570, 151, 629, 186, 7, 63, 56, 2, 1
|
||||||
|
| 574, 154, 2, 5, 0, 63, Crear,
|
||||||
|
| 575, 155, 2, 5, 0, 0, Crear,
|
||||||
|
| 574, 170, 2, 4, 0, 63, Cabecera,
|
||||||
|
| 575, 171, 2, 4, 0, 0, Cabecera,
|
||||||
|
| 574, 155, 2, 5, 0, 63, _,
|
||||||
|
| 575, 156, 2, 5, 0, 4, _,
|
||||||
|
* Ordenar Ficheros de Cola
|
||||||
|
& 570, 187, 629, 222, 7, 63, 56, 2, 1
|
||||||
|
| 574, 187, 2, 4, 0, 63, Ordenar,
|
||||||
|
| 575, 188, 2, 4, 0, 0, Ordenar,
|
||||||
|
| 574, 197, 2, 4, 0, 63, Ficheros,
|
||||||
|
| 575, 198, 2, 4, 0, 0, Ficheros,
|
||||||
|
| 574, 198, 2, 4, 0, 63, _,
|
||||||
|
| 575, 199, 2, 4, 0, 4, _,
|
||||||
|
| 574, 207, 2, 4, 0, 63, de Cola,
|
||||||
|
| 575, 208, 2, 4, 0, 0, de Cola,
|
||||||
|
* Encolar Ficheros
|
||||||
|
& 570, 223, 629, 258, 7, 63, 56, 2, 1
|
||||||
|
| 574, 226, 2, 4, 0, 63, Encolar,
|
||||||
|
| 575, 227, 2, 4, 0, 0, Encolar,
|
||||||
|
| 576, 239, 2, 4, 0, 63, Ficheros,
|
||||||
|
| 577, 240, 2, 4, 0, 0, Ficheros,
|
||||||
|
| 574, 227, 2, 4, 0, 63, _,
|
||||||
|
| 575, 228, 2, 4, 0, 4, _,
|
||||||
|
* Insertar
|
||||||
|
& 570, 269, 629, 294, 7, 63, 56, 2, 1
|
||||||
|
| 577, 274, 2, 4, 0, 63, Insertar,
|
||||||
|
| 578, 275, 2, 4, 0, 0, Insertar,
|
||||||
|
| 577, 275, 2, 4, 0, 63, ___,
|
||||||
|
| 578, 276, 2, 4, 0, 4, ___,
|
||||||
|
* Suprimir
|
||||||
|
& 570, 295, 629, 320, 7, 63, 56, 2, 1
|
||||||
|
| 577, 300, 2, 4, 0, 63, Suprimir,
|
||||||
|
| 578, 301, 2, 4, 0, 0, Suprimir,
|
||||||
|
| 577, 303, 2, 4, 0, 63, ____,
|
||||||
|
| 578, 304, 2, 4, 0, 4, ____,
|
||||||
|
*
|
||||||
|
*& 570, 321, 629, 356, 7, 63, 56, 2, 1
|
||||||
|
|
||||||
|
* SWAP
|
||||||
|
& 570, 377, 629, 412, 7, 63, 56, 2, 1
|
||||||
|
| 577, 382, 2, 7, 0, 63, SWAP,
|
||||||
|
| 578, 383, 2, 7, 0, 0, SWAP,
|
||||||
|
|
||||||
|
* Salir
|
||||||
|
& 570, 443, 629, 469, 7, 63, 56, 2, 1
|
||||||
|
| 571, 446, 2, 5, 0, 63, SALIR,
|
||||||
|
| 572, 447, 2, 5, 0, 0, SALIR,
|
||||||
|
| 571, 447, 2, 5, 0, 63, _,
|
||||||
|
| 572, 448, 2, 5, 0, 4, _,
|
||||||
|
|
||||||
|
|
||||||
|
******* BROWSER ***************************
|
||||||
|
& 0, 0, 184, 200, 7, 56, 63, -2, 1
|
||||||
|
& 7, 7, 155, 175, 0, 63, 56, 1, 1
|
||||||
|
& 3, 180, 181, 197, 0, 63, 56, 1, 1
|
||||||
|
|
||||||
|
*| 7, 184, 2, 4, 0, 63, MMMMMMMMM-MMMMMMMMM-MMMMMM7,
|
||||||
|
|
||||||
|
|
||||||
|
& 3, 3, 181, 179, 7, 2, 2, -3, 1
|
||||||
|
**** Botones: Subir, Seleccionar, Bajar
|
||||||
|
& 156, 7, 177, 63, 7, 56, 63, 1, 2
|
||||||
|
& 156, 63, 177, 119, 7, 56, 63, 1, 2
|
||||||
|
& 156, 119, 177, 175, 7, 56, 63, 1, 2
|
||||||
|
|
||||||
|
| 158, 65, 2, 5, 1, 63, A¤adir,
|
||||||
|
| 159, 66, 2, 5, 1, 0, A¤adir,
|
||||||
|
| 158, 66, 2, 5, 1, 63, _ ,
|
||||||
|
| 159, 67, 2, 5, 1, 4, _ ,
|
||||||
|
|
||||||
|
| 158, 15, 2, 5, 1, 63, Subir,
|
||||||
|
| 159, 16, 2, 5, 1, 0, Subir,
|
||||||
|
|
||||||
|
| 158, 124, 2, 5, 1, 63, Bajar,
|
||||||
|
| 159, 125, 2, 5, 1, 0, Bajar,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*| 10, 27, 2, 4, 0, 63, B: <Unidad> ,
|
||||||
|
*| 10, 37, 2, 4, 0, 63, C: <Unidad> ,
|
||||||
|
*| 10, 47, 2, 4, 0, 63, . <Dir> ,
|
||||||
|
*| 10, 57, 2, 4, 0, 63, .. <Dir> ,
|
||||||
|
*| 10, 67, 2, 4, 0, 63, CD_OUT0F.PCX 12.345.678,
|
||||||
|
*| 10, 77, 2, 4, 0, 63, CD_OUT0A.PCX 556.313,
|
||||||
|
*| 10, 87, 2, 4, 0, 63, CD_OUT .EXE 345.678,
|
||||||
|
*| 10, 97, 2, 4, 0, 63, BROWSER .EXE 5.621.128,
|
||||||
|
*| 10, 117, 2, 4, 0, 63, LEEME .TXT 678,
|
||||||
|
* & 573, 3, 637, 477, 4, 4, 4, -2, 1
|
||||||
|
|
||||||
|
|
||||||
|
* x y fuente tama¤o orientacion color texto
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
******* Archivos ya incluidos y nuevos a¤adidos
|
||||||
|
******* Archivos ya incluidos
|
||||||
|
& 0, 205, 115, 480, 7, 63, 56, -2, 1
|
||||||
|
& 3, 208, 112, 477, 7, 2, 2, -3, 1
|
||||||
|
& 7, 211, 108, 473, 0, 56, 63, 2, 1
|
||||||
|
|
||||||
|
***** Archivos a¤adidos
|
||||||
|
& 120, 205, 555, 480, 7, 63, 56, -2, 1
|
||||||
|
& 123, 208, 552, 477, 7, 2, 2, -3, 1
|
||||||
|
& 127, 211, 548, 473, 0, 56, 63, 2, 1
|
||||||
|
*| 13, 211, 2, 5, 0, 63, NNNNNNNN.EEE,
|
||||||
|
|
||||||
|
*| 15, 220, 2, 5, 0, 63, XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE,
|
||||||
|
*| 15, 235, 2, 5, 0, 63, XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE,
|
||||||
|
*| 15, 250, 2, 5, 0, 63, XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE,
|
||||||
|
*| 15, 265, 2, 5, 0, 63, XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE,
|
||||||
|
*| 15, 280, 2, 5, 0, 63, XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE,
|
||||||
|
*| 15, 295, 2, 5, 0, 63, XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE,
|
||||||
|
*| 15, 310, 2, 5, 0, 63, XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE,
|
||||||
|
*| 15, 325, 2, 5, 0, 63, XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE,
|
||||||
|
*| 15, 340, 2, 5, 0, 63, XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE,
|
||||||
|
*| 15, 355, 2, 5, 0, 63, XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE,
|
||||||
|
*| 15, 370, 2, 5, 0, 63, XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE,
|
||||||
|
*| 15, 385, 2, 5, 0, 63, XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE,
|
||||||
|
*| 15, 400, 2, 5, 0, 63, XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE,
|
||||||
|
*| 15, 415, 2, 5, 0, 63, XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE,
|
||||||
|
*| 15, 430, 2, 5, 0, 63, XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE,
|
||||||
|
*| 15, 445, 2, 5, 0, 63, XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE,
|
||||||
|
*| 15, 460, 2, 5, 0, 63, XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE XXX NNNNNNNN.EEE,
|
||||||
|
|
||||||
|
|
||||||
|
#1
|
||||||
|
|
||||||
|
!1,13
|
||||||
|
|
||||||
|
***************************************************
|
||||||
|
* BOTONES DEL CUADRO DE BOTONES Y BROWSER *
|
||||||
|
***************************************************
|
||||||
|
****** Botones:
|
||||||
|
* Seleccionar Fichero Ejecutable
|
||||||
|
$ 570, 10, 629, 45, 7, 63, 56, 2, 1, 00, 23
|
||||||
|
* Cargar .PRJ
|
||||||
|
$ 570, 62, 629, 98, 7, 63, 56, 2, 1, 00, 46
|
||||||
|
* Salvar .PRJ
|
||||||
|
$ 570, 99, 629, 134, 7, 63, 56, 2, 1, 00, 38
|
||||||
|
* Crear Cabecera
|
||||||
|
$ 570, 151, 629, 186, 7, 63, 56, 2, 1, 00, 19
|
||||||
|
* Ordenar Ficheros de Cola
|
||||||
|
$ 570, 187, 629, 222, 7, 63, 56, 2, 1, 00, 33
|
||||||
|
* Encolar Ficheros
|
||||||
|
$ 570, 223, 629, 258, 7, 63, 56, 2, 1, 00, 18
|
||||||
|
* Insertar
|
||||||
|
$ 570, 269, 629, 294, 7, 63, 56, 2, 1, 00, 82
|
||||||
|
* Suprimir
|
||||||
|
$ 570, 295, 629, 320, 7, 63, 56, 2, 1, 00, 83
|
||||||
|
* SWAP
|
||||||
|
$ 570, 377, 629, 412, 7, 63, 56, 2, 1, 00, 64
|
||||||
|
* Salir
|
||||||
|
$ 570, 443, 629, 469, 7, 63, 56, 2, 1, 00, 31
|
||||||
|
**** Botones: Subir, Seleccionar, Bajar ( BROWSER )
|
||||||
|
$ 156, 7, 177, 63, 7, 56, 63, 1, 2, 00, 00
|
||||||
|
$ 156, 63, 177, 119, 7, 56, 63, 1, 2, 00, 30
|
||||||
|
$ 156, 119, 177, 175, 7, 56, 63, 1, 2, 00, 00
|
||||||
|
|
||||||
|
|
||||||
|
!2,5
|
||||||
|
************** Recuadros Selecci¢n de etapa
|
||||||
|
******* Fichero .EXE
|
||||||
|
$ 192, 3, 552, 77, 7, 2, 2, -3, 1, 00, 33
|
||||||
|
**** Cuadro para DATOS EXTENDIDOS SOBRE INCLUSIàN
|
||||||
|
$ 192, 88, 552, 197, 7, 2, 2, -3, 1, 00, 00
|
||||||
|
**** BROWSER
|
||||||
|
$ 3, 3, 181, 179, 7, 2, 2, -3, 1, 00, 00
|
||||||
|
**** Archivos ya incluidos
|
||||||
|
$ 3, 208, 112, 477, 7, 2, 2, -3, 1, 00, 00
|
||||||
|
**** Archivos a¤adidos
|
||||||
|
$ 123, 208, 552, 477, 7, 2, 2, -3, 1, 00, 00
|
BIN
COMPACTA.PRJ
Normal file
BIN
COMPACTA.PRJ
Normal file
Binary file not shown.
305
C_FILE.CPP
Normal file
305
C_FILE.CPP
Normal file
@ -0,0 +1,305 @@
|
|||||||
|
#include <ctype.h>
|
||||||
|
#include <direct.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <dir.h>
|
||||||
|
#include <dos.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <alloc.h>
|
||||||
|
#include <conio.h> // Para getch();
|
||||||
|
#include <graphics.h> // Para outtextxy(...); y cleardevice(...);
|
||||||
|
|
||||||
|
#include "make_bot.h" // Fuciones de MAKE_BOTON
|
||||||
|
|
||||||
|
#define __Modulo_Browser
|
||||||
|
#include "compacta.h"
|
||||||
|
|
||||||
|
extern BROWSER far *Browser;
|
||||||
|
|
||||||
|
// ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||||
|
// ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||||
|
// ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||||
|
// ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||||
|
// ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||||
|
// Û F U N C I O N E S p a r a e l B R O W S E R Û
|
||||||
|
// ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||||
|
// ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||||
|
// ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||||
|
// ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||||
|
// ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||||
|
// ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||||
|
|
||||||
|
void ReDraw_Browser(void)
|
||||||
|
{
|
||||||
|
int OLD_Brw = BrowserRow;
|
||||||
|
// 1§ Borramos pantalla de muestreo...
|
||||||
|
setfillstyle( SOLID_FILL, EGA_BLACK );
|
||||||
|
setcolor( EGA_BLACK );
|
||||||
|
// Muestreo de archivos
|
||||||
|
bar( 9, 9, 153, 173 );
|
||||||
|
|
||||||
|
// 3§ Mostramos los nuevos Archivos
|
||||||
|
for ( BrowserRow = 0; BrowserRow < 16; BrowserRow++)
|
||||||
|
if ( ( BrowserRow + BrowserTop ) < maxfiles )
|
||||||
|
ShowHideBrowserRow( HIDE );
|
||||||
|
BrowserRow = OLD_Brw;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Fill_Directory(void)
|
||||||
|
{
|
||||||
|
char Buffer[180];
|
||||||
|
// Recuadro del directorio
|
||||||
|
// 1§ Borramos pantalla de muestreo...
|
||||||
|
setfillstyle( SOLID_FILL, EGA_BLACK );
|
||||||
|
setcolor( EGA_BLACK );
|
||||||
|
bar( 5, 182, 179, 195 );
|
||||||
|
|
||||||
|
setcolor( EGA_YELLOW );
|
||||||
|
getcwd( Buffer, 180 );
|
||||||
|
if ( strlen( Buffer ) > 28 )
|
||||||
|
{
|
||||||
|
// Acorta el Buffer poniendo al principio U:\...[DIRECTORIO]
|
||||||
|
char Buffer1[30];
|
||||||
|
|
||||||
|
// Primero copiamos en Buffer1 los 22 ultimos caracteres de Buffer
|
||||||
|
strncpy( Buffer1, strrev(Buffer), 22 ); Buffer1[22] = NULL;
|
||||||
|
strrev( Buffer1 );
|
||||||
|
// Despues conservamos solo de Buffer [Und][:][\]
|
||||||
|
strrev(Buffer); Buffer[3] = NULL;
|
||||||
|
// Y agregamos [...]
|
||||||
|
strcat( Buffer, "..." );
|
||||||
|
// Ya podemos unirlo todo
|
||||||
|
strcat( Buffer, Buffer1 );
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
|
||||||
|
outtextxy( 7, 184, Buffer );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShowHideBrowserRow( char Hide_Show )
|
||||||
|
{
|
||||||
|
|
||||||
|
char Buffer[80];
|
||||||
|
char Longitud[80];
|
||||||
|
|
||||||
|
settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
|
||||||
|
|
||||||
|
|
||||||
|
if ( Hide_Show == HIDE )
|
||||||
|
{
|
||||||
|
setfillstyle( SOLID_FILL, EGA_BLACK );
|
||||||
|
bar( 9, ( 10 + ( BrowserRow * 10 ) ), 153, ( ( 9 + 10 ) + ( BrowserRow * 10 ) ) );
|
||||||
|
switch( Browser[BrowserTop+BrowserRow].attrs )
|
||||||
|
{
|
||||||
|
case FA_DIREC:
|
||||||
|
setcolor( EGA_CYAN );
|
||||||
|
break;
|
||||||
|
case 255:
|
||||||
|
setcolor( EGA_MAGENTA );
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
setcolor( EGA_WHITE );
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
switch( Browser[BrowserTop+BrowserRow].attrs )
|
||||||
|
{
|
||||||
|
case FA_DIREC:
|
||||||
|
setfillstyle( SOLID_FILL, EGA_CYAN );
|
||||||
|
// setcolor( EGA_CYAN );
|
||||||
|
break;
|
||||||
|
case 255:
|
||||||
|
setfillstyle( SOLID_FILL, EGA_MAGENTA );
|
||||||
|
// setcolor( EGA_MAGENTA );
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
setfillstyle( SOLID_FILL, EGA_WHITE );
|
||||||
|
// setcolor( EGA_WHITE );
|
||||||
|
}
|
||||||
|
bar( 9, ( 10 + ( BrowserRow * 10 ) ), 153, ( ( 9 + 10 ) + ( BrowserRow * 10 ) ) );
|
||||||
|
setcolor( EGA_BLACK );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
outtextxy( 10, ( 9 + ( BrowserRow * 10 ) ), Browser[BrowserTop+BrowserRow].Fichero );
|
||||||
|
formatea_long( Browser[BrowserTop+BrowserRow].Longitud, Longitud );
|
||||||
|
switch( Browser[BrowserTop+BrowserRow].attrs )
|
||||||
|
{
|
||||||
|
case FA_DIREC:
|
||||||
|
sprintf ( Buffer, " DIRECTORIO", Longitud );
|
||||||
|
break;
|
||||||
|
case 255:
|
||||||
|
sprintf ( Buffer, " < UNIDAD >", Longitud );
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
sprintf ( Buffer, " %10s", Longitud );
|
||||||
|
}
|
||||||
|
outtextxy( 10, ( 9 + ( BrowserRow * 10 ) ), Buffer );
|
||||||
|
}
|
||||||
|
|
||||||
|
void DownBrowser(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
// ¨¨ Estoy en la linea fisica 000 ???
|
||||||
|
if ( (BrowserRow + BrowserTop) != (maxfiles - 1) ) {
|
||||||
|
|
||||||
|
// Linea 0, Baja Con retroceso multiple
|
||||||
|
if ( BrowserRow == 15 ) {
|
||||||
|
BrowserTop += 16;
|
||||||
|
if ( (BrowserTop + BrowserRow) > maxfiles ) BrowserRow = 0;
|
||||||
|
while ( (BrowserTop + BrowserRow) > maxfiles ) BrowserTop--;
|
||||||
|
BrowserRow = 0;
|
||||||
|
ReDraw_Browser();
|
||||||
|
ShowHideBrowserRow( SHOW );
|
||||||
|
} else {
|
||||||
|
ShowHideBrowserRow( HIDE );
|
||||||
|
BrowserRow++;
|
||||||
|
ShowHideBrowserRow( SHOW );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpBrowser(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
// ¨¨ Estoy en la linea fisica 000 ???
|
||||||
|
if ( (BrowserRow + BrowserTop) != 0 ) {
|
||||||
|
|
||||||
|
// Linea 0, Baja Con retroceso multiple
|
||||||
|
if ( BrowserRow == 0 ) {
|
||||||
|
BrowserTop -= 16;
|
||||||
|
if ( BrowserTop < 0 ) BrowserTop = 0;
|
||||||
|
BrowserRow = 0;
|
||||||
|
ReDraw_Browser();
|
||||||
|
BrowserRow = 15;
|
||||||
|
ShowHideBrowserRow( SHOW );
|
||||||
|
} else {
|
||||||
|
ShowHideBrowserRow( HIDE );
|
||||||
|
BrowserRow--;
|
||||||
|
ShowHideBrowserRow( SHOW );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int SelectBrowser(void)
|
||||||
|
{
|
||||||
|
int RETURN = 1;
|
||||||
|
|
||||||
|
switch( Browser[BrowserTop+BrowserRow].attrs )
|
||||||
|
{
|
||||||
|
case FA_DIREC:
|
||||||
|
chdir( Browser[BrowserTop+BrowserRow].Fichero );
|
||||||
|
BrowserRow = BrowserTop = 0;
|
||||||
|
// 2§ Realizamos un Scaneo del Directorio
|
||||||
|
BrowserTop = 0; BrowserRow = 0;
|
||||||
|
RasterScan();
|
||||||
|
Fill_Directory();
|
||||||
|
ReDraw_Browser();
|
||||||
|
ShowHideBrowserRow( SHOW );
|
||||||
|
RETURN = 0;
|
||||||
|
break;
|
||||||
|
case 255:
|
||||||
|
erroroccurred=0;
|
||||||
|
olddisk=getdisk();
|
||||||
|
setdisk( (Browser[BrowserTop+BrowserRow].Fichero[0] - 'A') );
|
||||||
|
if (erroroccurred) {
|
||||||
|
setdisk(olddisk);
|
||||||
|
} else {
|
||||||
|
BrowserRow = BrowserTop = 0;
|
||||||
|
// 2§ Realizamos un Scaneo del Directorio
|
||||||
|
BrowserTop = 0; BrowserRow = 0;
|
||||||
|
RasterScan();
|
||||||
|
Fill_Directory();
|
||||||
|
ReDraw_Browser();
|
||||||
|
ShowHideBrowserRow( SHOW );
|
||||||
|
}
|
||||||
|
RETURN = 0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
RETURN = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return RETURN;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int RasterScan(void) {
|
||||||
|
struct ffblk ffblk;
|
||||||
|
char done=0;
|
||||||
|
unsigned int olddisk;
|
||||||
|
maxfiles = 0;
|
||||||
|
unsigned char i;
|
||||||
|
|
||||||
|
// build a disk drive availiable list
|
||||||
|
olddisk=getdisk();
|
||||||
|
for (i=1;i<27;i++) if (_chdrive(i) == 0)
|
||||||
|
{
|
||||||
|
sprintf( Browser[maxfiles].Fichero, "%c:", (char)('A' + i - 1) );
|
||||||
|
Browser[maxfiles].Longitud=0;
|
||||||
|
Browser[maxfiles].attrs=255; // Unidad
|
||||||
|
if (ffblk.ff_attrib & 16) Browser[maxfiles].Longitud=0;
|
||||||
|
maxfiles++;
|
||||||
|
}
|
||||||
|
setdisk(olddisk);
|
||||||
|
|
||||||
|
// drivelist[2]='N'; //stop access to B drive until I sort out pahntom dive probs
|
||||||
|
//Ok, Drive B may be a phantom drive. If you try to access drive B, then
|
||||||
|
//the program looses controll. Bummer!
|
||||||
|
// needs debugging. (always ignores drive b...)
|
||||||
|
// asm int 0x11
|
||||||
|
// asm mov equipmentlist,ax
|
||||||
|
// drivelist[2]='N';
|
||||||
|
// if ((equipmentlist & 16)) drivelist[2]='Y';
|
||||||
|
|
||||||
|
|
||||||
|
done = findfirst("*.*",&ffblk,FA_DIREC);
|
||||||
|
while (!done) {
|
||||||
|
if (ffblk.ff_attrib == 0x10) {
|
||||||
|
strcpy(Browser[maxfiles].Fichero,ffblk.ff_name);
|
||||||
|
Browser[maxfiles].Longitud=ffblk.ff_fsize;
|
||||||
|
Browser[maxfiles].attrs=ffblk.ff_attrib;
|
||||||
|
if (ffblk.ff_attrib & 16) Browser[maxfiles].Longitud=0;
|
||||||
|
maxfiles++;
|
||||||
|
}
|
||||||
|
done = findnext(&ffblk);
|
||||||
|
if (maxfiles==200) done=!done; //stop to prevent internal crashes.
|
||||||
|
}
|
||||||
|
|
||||||
|
done = findfirst(Comodin,&ffblk,FA_DIREC);
|
||||||
|
while (!done) {
|
||||||
|
if (ffblk.ff_attrib != 0x10) {
|
||||||
|
strcpy(Browser[maxfiles].Fichero,ffblk.ff_name);
|
||||||
|
Browser[maxfiles].Longitud=ffblk.ff_fsize;
|
||||||
|
Browser[maxfiles].attrs=ffblk.ff_attrib;
|
||||||
|
if (ffblk.ff_attrib & 16) Browser[maxfiles].Longitud=0;
|
||||||
|
maxfiles++;
|
||||||
|
}
|
||||||
|
done = findnext(&ffblk);
|
||||||
|
if (maxfiles==200) done=!done; //stop to prevent internal crashes.
|
||||||
|
}
|
||||||
|
return maxfiles;
|
||||||
|
}
|
||||||
|
|
||||||
|
void interrupt critical_error_handler(.../*__CPPARGS*/) {
|
||||||
|
asm push ax //preserve only modified register
|
||||||
|
asm mov ax,di //di holds error code ranging from 0 to 0x0c
|
||||||
|
// asm inc ax
|
||||||
|
asm mov erroroccurred,ax //increase erroroccurred for ease of programming
|
||||||
|
asm mov al,0x20
|
||||||
|
asm out 0x20,al //send interrupt clear flag
|
||||||
|
// asm pushf // I think I dont need this line in....
|
||||||
|
asm pop ax //restore ax
|
||||||
|
}
|
||||||
|
|
||||||
|
void startceh() {
|
||||||
|
old_int24 = _dos_getvect( 0x24 );
|
||||||
|
_dos_setvect( 0x24, critical_error_handler);
|
||||||
|
}
|
||||||
|
|
||||||
|
void stopceh() {
|
||||||
|
_dos_setvect(0x24,old_int24);
|
||||||
|
}
|
BIN
EGAVGA.BGI
Normal file
BIN
EGAVGA.BGI
Normal file
Binary file not shown.
32
KEY.CPP
Normal file
32
KEY.CPP
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
#include <alloc.h>
|
||||||
|
#include <conio.h>
|
||||||
|
#include <dos.h>
|
||||||
|
#include <mem.h>
|
||||||
|
|
||||||
|
void *Pantalla;
|
||||||
|
int x,y;
|
||||||
|
|
||||||
|
void main(void)
|
||||||
|
{
|
||||||
|
int key = 0, key1 = 1;
|
||||||
|
|
||||||
|
if ( ( Pantalla = malloc( 4096 ) ) == NULL ) return;
|
||||||
|
// Guardamos el contenido de la pantalla
|
||||||
|
memcpy( Pantalla, MK_FP(0xB800,0), 4096 );
|
||||||
|
x = wherex(); y = wherey();
|
||||||
|
|
||||||
|
clrscr();
|
||||||
|
|
||||||
|
cprintf( "Para Salir pulse ESC ( sc.27 )\n\r" );
|
||||||
|
cprintf( "------------------------------\n\r" );
|
||||||
|
while( key != 27 )
|
||||||
|
{
|
||||||
|
if ( ( key = getch() ) ==0 ) key1 = getch(); else key1 = 0;
|
||||||
|
cprintf( " % 3d % 3d \n\r", key, key1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Restauramos el contenido
|
||||||
|
memcpy( MK_FP(0xB800,0), Pantalla, 4096 );
|
||||||
|
gotoxy( x, y );
|
||||||
|
free( Pantalla );
|
||||||
|
}
|
BIN
KEY.EXE
Normal file
BIN
KEY.EXE
Normal file
Binary file not shown.
BIN
LITT.CHR
Normal file
BIN
LITT.CHR
Normal file
Binary file not shown.
163
MAKE_BOT.H
Normal file
163
MAKE_BOT.H
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
// ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||||
|
// Û Errores devueltos por las Funciones Û
|
||||||
|
// ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||||
|
|
||||||
|
#define OK 1
|
||||||
|
#define SIN_MEMORIA 5
|
||||||
|
#define ERROR_ABRIENDO 6
|
||||||
|
#define ERROR_CERRANDO 7
|
||||||
|
|
||||||
|
#define ON 1
|
||||||
|
#define OFF 0
|
||||||
|
|
||||||
|
#define EOL 10 // Fin de linea
|
||||||
|
|
||||||
|
#define MB_TeclaPulsada() ( *(unsigned *) MK_FP(0x40,0x1A) != *(unsigned *) MK_FP(0x40,0x1C) )
|
||||||
|
// ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||||
|
// Û Funciones propias de MAKE_BOTON Û
|
||||||
|
// ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||||
|
|
||||||
|
// ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||||
|
// ± Carga los botones del fichero *f_datos, devolviendo los ±
|
||||||
|
// ± errores indicados en #define xxxxx X ±
|
||||||
|
// ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||||
|
int carga_botones(char *f_datos);
|
||||||
|
|
||||||
|
// ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||||
|
// ± Despliega los datos que fueron cargados. ±
|
||||||
|
// ± ±
|
||||||
|
// ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||||
|
void despliega_datos(void);
|
||||||
|
|
||||||
|
// ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||||
|
// ± Imprime los botones estaticos de la secuencia Sec_st, en el ±
|
||||||
|
// ± fichero file. ±
|
||||||
|
// ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||||
|
int Imprime_Estaticos(int Sec_st, char *file);
|
||||||
|
|
||||||
|
// ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||||
|
// ± Imprime los botones din micos de la secuencia Sec_num. ±
|
||||||
|
// ± ±
|
||||||
|
// ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||||
|
void Imprime_Secuencia(int Sec_num);
|
||||||
|
|
||||||
|
// ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||||
|
// ± ±
|
||||||
|
// ± Imprime un borde completo de color Color sobre el boton Boton, ±
|
||||||
|
// ± de la secuencia n£mero Sec_num. ±
|
||||||
|
// ± ±
|
||||||
|
// ± NOTA: ±
|
||||||
|
// ± Si color es negativo se imprimiran los bordes normales. ±
|
||||||
|
// ± ±
|
||||||
|
// ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||||
|
void Imprime_Bordes(int Sec_num, int Boton, int Color);
|
||||||
|
|
||||||
|
// ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||||
|
// ± Comprueba la pulsaci¢n de los botones de la secuencia Sec_num ±
|
||||||
|
// ± ±
|
||||||
|
// ± Devuelve el n£mero de boton pulsado, 0 si no se pulso ninguno ±
|
||||||
|
// ± y deja en el buffer las teclas pulsadas si no corresponden con ±
|
||||||
|
// ± con las teclas asignadas a los botones. ±
|
||||||
|
// ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||||
|
int Comprueba_Secuencia(int Sec_num);
|
||||||
|
|
||||||
|
// ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||||
|
// ± Libera la memoria que ha sido asignada por Make_Boton. ±
|
||||||
|
// ± ±
|
||||||
|
// ± NOTA: ±
|
||||||
|
// ± DESPUES DE LIBERAR TODA LA MEMORIA DE M_B, NO SE DEBE ±
|
||||||
|
// ± UTILIZAR NINGUNA FUNCION SIN RECARGAR PRIMERO LOS BOTONES DE ±
|
||||||
|
// ± DE UN ARCHIVO CON ESTOS... ±
|
||||||
|
// ± ±
|
||||||
|
// ± FUNCION EXTRAIDA PARA USO COMUN, ESPECIALMENTE POR CD_out ±
|
||||||
|
// ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||||
|
void Libera_Memoria(void);
|
||||||
|
|
||||||
|
// ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||||
|
// ± ±
|
||||||
|
// ± Si True_Push se pone a ON, cuando se pulse un boton se hundira ±
|
||||||
|
// ± realmente, pero solo si hay suficiente memoria. ±
|
||||||
|
// ± ±
|
||||||
|
// ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||||
|
extern char True_Push;
|
||||||
|
|
||||||
|
// ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||||
|
// Û Funciones para el control de la Pantalla Û
|
||||||
|
// ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||||
|
// ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||||
|
// ± ±
|
||||||
|
// ± Sirve para averiguar el tama¤o necesitado por GetImage para ±
|
||||||
|
// ± obtener una imagen 256c, para los BGI no compatibles KERNEL. ±
|
||||||
|
// ± ±
|
||||||
|
// ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||||
|
unsigned long JD_imagesize(int left, int top, int right, int bottom);
|
||||||
|
|
||||||
|
// ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||||
|
// ± ±
|
||||||
|
// ± Igual a InitGraph, pero realiza un mayor numero de comproba_ ±
|
||||||
|
// ± ciones, saliendo si ocurre algun error y mostrandolo... ±
|
||||||
|
// ± ±
|
||||||
|
// ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||||
|
void Initialize(int GraphDriver, int GraphMode); // Inicializa el Modo Gr fico
|
||||||
|
|
||||||
|
// ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||||
|
// Û Funciones para el control del Raton Û
|
||||||
|
// ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||||
|
|
||||||
|
// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
|
||||||
|
// ° °
|
||||||
|
// ° Muestra el cursor del Raton. - No sirve con el raton animado °
|
||||||
|
// ° °
|
||||||
|
// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
|
||||||
|
void activa_raton(void);
|
||||||
|
|
||||||
|
// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
|
||||||
|
// ° °
|
||||||
|
// ° Desactiva el cursor del Raton. No sirve con el raton animado °
|
||||||
|
// ° °
|
||||||
|
// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
|
||||||
|
void desactiva_raton(void);
|
||||||
|
|
||||||
|
// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
|
||||||
|
// ° °
|
||||||
|
// ° Regresa con una pulsaci¢n de tecla o la posici¢n en la cual °
|
||||||
|
// ° se pulso el raton. °
|
||||||
|
// ° °
|
||||||
|
// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
|
||||||
|
int Espera_Tecla_o_Raton(void); // <->
|
||||||
|
|
||||||
|
// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
|
||||||
|
// ° °
|
||||||
|
// ° Sostiene el raton hasta que se suelte el boton presionado... °
|
||||||
|
// ° °
|
||||||
|
// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
|
||||||
|
void Anclar_Raton(void);
|
||||||
|
|
||||||
|
// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
|
||||||
|
// ° °
|
||||||
|
// ° Libera la memoria asignada al Raton Animado. °
|
||||||
|
// ° °
|
||||||
|
// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
|
||||||
|
void Libera_Raton_Animado(void);
|
||||||
|
|
||||||
|
// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
|
||||||
|
// ° °
|
||||||
|
// ° Inicializa el Raton en el modo Gr fico... °
|
||||||
|
// ° °
|
||||||
|
// ° x1, y1, x2, y2. Son los topes del RATON °
|
||||||
|
// ° °
|
||||||
|
// ° °
|
||||||
|
// ° °
|
||||||
|
// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
|
||||||
|
void inicializa_raton_grafico(int x1, int y1, // Inicializa el Raton
|
||||||
|
int x2, int y2); // devolviendo raton = 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
extern char Push;
|
||||||
|
extern char raton; // Indica si hay un Raton = 1
|
||||||
|
extern char PunteroRaton; // ¨ Se modifica el puntero ?
|
||||||
|
extern int x_raton, y_raton; // Tras Espera_Tecla_o_Raton(); devuelve
|
||||||
|
// extern int boton_izq, boton_der; // las coordenadas y botones pulsados...
|
||||||
|
|
||||||
|
extern unsigned char BLANCO, GRIS_CLARO, NEGRO, UNKNOW, AZUL;
|
BIN
MAKE_BOT.OBJ
Normal file
BIN
MAKE_BOT.OBJ
Normal file
Binary file not shown.
BIN
MAKE_B_C.OBJ
Normal file
BIN
MAKE_B_C.OBJ
Normal file
Binary file not shown.
BIN
P.EXE
Normal file
BIN
P.EXE
Normal file
Binary file not shown.
1
R.BAT
Normal file
1
R.BAT
Normal file
@ -0,0 +1 @@
|
|||||||
|
edit compacta.img
|
Loading…
x
Reference in New Issue
Block a user