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> | ||||||