First commit 11/11/1991
This commit is contained in:
		
							
								
								
									
										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;
 | 
			
		||||
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
// <20>   F U N C I O N E S    p a r a    e l    B R O W S E R                 <20>
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
 | 
			
		||||
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)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
 // <20><> 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)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
 // <20><> 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);
 | 
			
		||||
	}
 | 
			
		||||
<EFBFBD><EFBFBD>t<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD><EFBFBD>Ë<EFBFBD><EFBFBD><EFBFBD>t<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD><EFBFBD>À><EFBFBD><EFBFBD>tT<EFBFBD>R<EFBFBD>6<EFBFBD> | ||||