From 022e7986198fcec48774b0ce8591311d1f023cfb Mon Sep 17 00:00:00 2001 From: jdg Date: Wed, 8 Sep 2021 21:15:53 +0200 Subject: [PATCH] First commit 10/04/1996 --- CP.BAT | 11 ++ README.md | 9 + REGISTER.DAT | Bin 0 -> 431 bytes TELNET.C | 467 +++++++++++++++++++++++++++++++++++++++++++++++++++ TELNET.EXE | Bin 0 -> 29566 bytes 5 files changed, 487 insertions(+) create mode 100644 CP.BAT create mode 100644 README.md create mode 100644 REGISTER.DAT create mode 100644 TELNET.C create mode 100644 TELNET.EXE diff --git a/CP.BAT b/CP.BAT new file mode 100644 index 0000000..d1cb675 --- /dev/null +++ b/CP.BAT @@ -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. + diff --git a/README.md b/README.md new file mode 100644 index 0000000..465a07c --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +#GALILEO + + +*10/04/1996* + +ToDo: wwtcf? + + +![screenshot](/GALILEO.png "Screenshot") diff --git a/REGISTER.DAT b/REGISTER.DAT new file mode 100644 index 0000000000000000000000000000000000000000..1818bc968ad731c6c40bae1dfe99e01c0c90656d GIT binary patch literal 431 zcmZ{eO%8%U422tGaN!MHv2@G);dREL6v&8S7$otKp2>-B+ctTN_r1RKb2=Pv=WBJT zfVMG4kmfOl=wB${(0kGX1K7w1pNp~yXASHBO>GT1+YWcjg>cVlDZ(*;MonfmwNS4b nt?DAut**PWD~roliUmJ&#hftjLV%w0+eb`1?s}wYa4k>2WPKuF literal 0 HcmV?d00001 diff --git a/TELNET.C b/TELNET.C new file mode 100644 index 0000000..e3a7fa4 --- /dev/null +++ b/TELNET.C @@ -0,0 +1,467 @@ +/* +// Emulador de Telnet para GALILEO +*/ + + +#include +#include +#include +#include +#include + +/* 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 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Є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Єa de inicio de sesiЂn no v lido."); + cprintf( "\r\ninicio sesiЂn: "); + } + + }; + + debuglog(CLOSE); /* PASSWORD HOOKED!!! OH YEAAAA... */ + + cprintf("\r\n"); + for( i=CORTEN; i> 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(); +//лллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл +// cprintf( " Help text do not found !!! " ); +Fin(); +//лллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл + 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; +} diff --git a/TELNET.EXE b/TELNET.EXE new file mode 100644 index 0000000000000000000000000000000000000000..6ce7e928837ea4e604212c56d828ca04a63b2eec GIT binary patch literal 29566 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