From 89c34dd4164db8f905ee75b18f87cfe2bb9388c9 Mon Sep 17 00:00:00 2001 From: jdg Date: Fri, 3 Sep 2021 17:40:35 +0200 Subject: [PATCH] First commit 02/07/1999 --- AUTODOS.DSK | Bin 0 -> 8302 bytes B-T.h | 99 ++++++++++ B-Tmain.cpp | 525 ++++++++++++++++++++++++++++++++++++++++++++++++++++ B-UT.cpp | 278 ++++++++++++++++++++++++++++ M.BAT | 1 + autodos.prj | Bin 0 -> 5642 bytes sn.exe | Bin 0 -> 47830 bytes 7 files changed, 903 insertions(+) create mode 100644 AUTODOS.DSK create mode 100644 B-T.h create mode 100644 B-Tmain.cpp create mode 100644 B-UT.cpp create mode 100644 M.BAT create mode 100644 autodos.prj create mode 100644 sn.exe diff --git a/AUTODOS.DSK b/AUTODOS.DSK new file mode 100644 index 0000000000000000000000000000000000000000..d8853bdf1e39f0f4c0ef503f25a8937e6e35ef93 GIT binary patch literal 8302 zcmds6+inv_7#>HI221X_LPZt*F(NnzJGO&!PK4tauyE|)tf3Nyuvt%%B|dd`T@pdw zp=z&sSM`d^s(pbzMPH$PfR-C7(SK(4ZPg(Ksd~+z z`v%-lD-OJAo||WcYOn`$z-{TJ3BIh+0!B%`zo<{&q+%;IK2~BMu` zzdwvT3R-uZ@?!U%Ap#deY>bZ$Vq-Smzkc?|E7!j|L(UWFy>V<^BcE-dF&vm`O!}u z@0j#c@)w%(k1i&Cj&09>7SUyY!Ble|(4JjcwCA+>UZkLSFa^U#i;>g2&5Cv1u3u zjT%j@7Vv}XGdb4!J~r9<{$v+3NeK3~c2y%ZibQs(q3ni67XT(FA*)s!s$8w>(5UO` zR)y+dP^BX4Kx?p4ym2F42>1*6dpfO9#X!nyv?^hKs^15@b!;{|7Kd?|VYdgc1XmZY z_K#dR5opX}HGH)f1MwEFfBChpsgqUiOSLuqFBsy`#e3OUHH_XT#8ZgR@q>thiqchRO_f%FO7&%*V;zK z`--H;hA#}f@l6c2%fq4Ab7qqoofDZ z5q1>1hs)?=F5&}twgjP6KASJZMo{%PMnwcU*pBsgu$=X-(okOv14~$5NSoW9NIPTp zMB3?+Bi*S-qqJsda#?0>kDRHv!tC2iv`W5hYlMU{i_X zlBFNPZCUye+?M6nc3E%*!=Ms%H-y-Ie0=oE42xPT?8cWcY8A6GF+-76Cy6=S4Pg%k zc{nDrt2+r;)jbbghR5Ru3qQ{AN~NysZ5p8CfrT-F8>TWg@)xAYJ8_rA*b@mN9*suD zJ0e>U4Gpu(b|@(AQZUpig(tE;4_CHJwcrGV7&L!AlA z;`I3Vx@?}_ESBqfWOvz8N*L===tv<)rw_h+3JKdTv;Eb`hzC@g7 z;y#1dj&OT_hK!kfSV3W7%(NeyfM8Ne=Tez`4vi8_SJbLnleM3qS%U)IQFTMBvkvsY zZB;`XQh`v^Ig3;R|nk7(He_2?Prt|8d`lv zldCeGPkhs)np)`VdIMXhPb^GsKL@Mdcc-Q5upL~Q;ag*?Lg zw(MA4+^ts>S%Z6Xvk+c}Tj&pVFJGjlL|V5Sy&NJ{Zye0cMply2X>kJ=M@JdoicMQW zw^9<_m2z!Rr6f+BQUph@p_HP8C%LQ1)%3>O(GC9ZaLOFU6@f$Q0LsPP8Y#WF5R8D09(s}v&wK? zScVMvgI#-EsRar0L?SB+)%DN`Eg4<8Jj(3m>8e{5y%pg`ce8z`N%~QpwS8=_Bi`O( z>S(50{os@!Z3}6Kh;I1<{`5Xong;%VfSzEl+s;&7lC|kFooaF~L#=-GE|tSM_Rgdo zDrx1`t&)?en;iX1=?w{s>{3a>`ij+w{o9!dwIbc0dJx&iA~HU`V7?u|QVb6pv7S{L zc&Z^F{4XC2vmo5fXH&@njJVbmNUesKZ>>TQ|5Fn1%<85TL#ne#$Z3gV3*VQqws_0D z_{QeN<4V`O*yzm5+;W78o6f^(It%GL#msu1JF7V_!tHsl@p;Xblb+YC*IXJi%Qow9 yK7X6Z5p_=M(}hC5fSXdMML-ya_o4C1^jp+t$HuiKN1KKD1S{_Cg#GFjA^!n(vjBMj literal 0 HcmV?d00001 diff --git a/B-T.h b/B-T.h new file mode 100644 index 0000000..1201ce7 --- /dev/null +++ b/B-T.h @@ -0,0 +1,99 @@ +#include + +#define DIBUJA 1 +#define DEPRIME 2 +#define Dibuja_Todos 3 +#define COMPRUEBA 4 +#define STD_BY 5 + +#define NORMAL 0 +#define INTENSO 1 + +#define ATRAS -1 +#define NUEVA_BUSQUEDA 0 +#define ADELANTE 1 + +#define SEC_OPTAR 5 +#define ENCUADRE 3 + +// Niveles de acceso al programa +#define TOTAL 0 +#define USUARIO 1 +#define NINGUNO 2 + + +typedef struct +{ + char FillBgS, FillBgC; + char NumFg, NumBg, NumLn; + char TxtBgN, TxtBgI, TxtFgN, TxtFgI; + char Printer, PrintTo[80]; +} CONFIG; + + +typedef struct +{ + long Codigo; + char NIF[10+1]; + char Nombre[45+1]; + + char Direccion[40+1]; + char Num[4+1]; + char Piso[4+1]; + + char Localidad[25+1]; + char Provincia[15+1]; + + long CodPostal; + + char Cod1; + char Cod2; + char Cod3; +} MAILINGS; + + + + + + + +int Optar( int optar, ... ); +void ponicono(int x,int y,char matriz[18][18], char pos); +void formatea_u_long( unsigned long Numero, char *Inter_Chg); +int InputCadenaG(char *s, int numalp, int lmax, int cc, int cf, int X0, int Y0, int X1, int Y1); +void Error( int code ); + + +// M¢dulo de referencias +void InfoProductos(void); + +// M¢dulo de Compras +void ComprasDiarias( int NivelAcceso ); + +// Informacion de los proveedores +void InfoProveedores(void); + +//ÛÛ +void espera_soltar(void); +void espera_pulsar(void); +void activa_raton(void); +void desactiva_raton(void); +void inicializa_raton_texto(void); +struct Boton_Texto{ + char x; char y; + char Texto[80]; + + int ID_T1; + int ID_T2; +}; + + + +int Funcion_Botones(int Funcion, int nBotones, struct Boton_Texto *Boton_Texto); + +extern int boton_izq, boton_der; +extern int x_raton, y_raton, RATON; + +//ÛÛ + +extern int AnoActual; diff --git a/B-Tmain.cpp b/B-Tmain.cpp new file mode 100644 index 0000000..d012631 --- /dev/null +++ b/B-Tmain.cpp @@ -0,0 +1,525 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "B-T.h" + +#define OFF 0 +#define ON 1 + +#ifdef __cplusplus + #define __CPPARGS ... +#else + #define __CPPARGS +#endif + +char far *MemTexto = (char far *)0xB8000000; +char ROWselect = 6, notENABLED; + + + +int MenuPrincipal(void); +void Installer(void); + +int boton_izq; int boton_der; +int x_raton, y_raton, RATON = 1; + +int Execute( char *program ) +{ + if ( access( program, 0 ) != 0 ) + { + Optar( 1, "ATENCION", "No se encontr¢ el programa requerido", "asegurese que esta en la ruta:", program, NULL ); + } else { + system( program ); + MenuPrincipal(); + } +}; + + +int main(void) +{ + inicializa_raton_texto(); + if( RATON ) desactiva_raton(); + + MenuPrincipal(); +// sleep( 5 ); + + Installer(); + + textcolor( WHITE ); + textbackground( BLACK ); + clrscr(); + cprintf( "\nSol Negro (c) | 1999" ); + cprintf( "\n" ); + + _setcursortype(_NORMALCURSOR); + +return 0; + +} + + +void SN(void) +{ + static int columna = 15, inc = 1, cont; + static clock_t start=clock(); + int i, j; + + // fila -^ ^--- columna + if ( notENABLED ) return; + + MemTexto[ ROWselect*80*2 + 60*2 +1 ] = 0x0E; + MemTexto[ ROWselect*80*2 + 61*2 +1 ] = 0x0E; + MemTexto[ ROWselect*80*2 + 62*2 +1 ] = 0x0E; + MemTexto[ ROWselect*80*2 + 63*2 +1 ] = 0x0E; + if ( ( cont >= 0 && cont < 17 ) || cont >= 68 ) + { + MemTexto[ ROWselect*80*2 + 60*2 ] = '<'; + MemTexto[ ROWselect*80*2 + 61*2 ] = '-'; + MemTexto[ ROWselect*80*2 + 62*2 ] = '-'; + MemTexto[ ROWselect*80*2 + 63*2 ] = '³'; + } else + if ( ( cont < 35 ) || cont >= 52 ) + { + MemTexto[ ROWselect*80*2 + 60*2 ] = ' '; + MemTexto[ ROWselect*80*2 + 61*2 ] = '<'; + MemTexto[ ROWselect*80*2 + 62*2 ] = '-'; + MemTexto[ ROWselect*80*2 + 63*2 ] = '°'; + } else { + MemTexto[ ROWselect*80*2 + 60*2 ] = ' '; + MemTexto[ ROWselect*80*2 + 61*2 ] = ' '; + MemTexto[ ROWselect*80*2 + 62*2 ] = '<'; + MemTexto[ ROWselect*80*2 + 63*2 ] = '²'; + } + + if ( ( clock() - start ) > .05 ) + start = clock(); + else + return; + cont++; + cont = (cont++)%70; + columna+= inc; if ( columna == 59 ) inc = -1; + if ( columna == 15 ) inc = +1; + + // GRADIENTE SN + for ( i=1; i < 4; i++ ) + { + MemTexto[ i*80*2 + columna *2 + 1] = ( inc==1 ? 0x00 : 0x0F ); + MemTexto[ i*80*2 + (columna+1)*2 + 1] = ( inc==1 ? 0x08 : 0x07 ); + MemTexto[ i*80*2 + (columna+2)*2 + 1] = ( inc==1 ? 0x08 : 0x07 ); + MemTexto[ i*80*2 + (columna+3)*2 + 1] = ( inc==1 ? 0x07 : 0x07 ); + MemTexto[ i*80*2 + (columna+4)*2 + 1] = ( inc==1 ? 0x07 : 0x08 ); + MemTexto[ i*80*2 + (columna+5)*2 + 1] = ( inc==1 ? 0x07 : 0x08 ); + MemTexto[ i*80*2 + (columna+6)*2 + 1] = ( inc==1 ? 0x0F : 0x00 ); + } + + // GRADIENTE (SOL) + j = (columna-15)/3; + for ( i=0; i < 18; i++ ) // Filas + // Columnas + { + MemTexto[ i*80*2 + j *2 + 1] = ( inc==1 ? 0x00 : 0x0F ); + MemTexto[ i*80*2 + (j+1)*2 + 1] = ( inc==1 ? 0x08 : 0x07 ); + MemTexto[ i*80*2 + (j+2)*2 + 1] = ( inc==1 ? 0x08 : 0x07 ); + MemTexto[ i*80*2 + (j+3)*2 + 1] = ( inc==1 ? 0x07 : 0x07 ); + MemTexto[ i*80*2 + (j+4)*2 + 1] = ( inc==1 ? 0x07 : 0x08 ); + MemTexto[ i*80*2 + (j+5)*2 + 1] = ( inc==1 ? 0x07 : 0x08 ); + MemTexto[ i*80*2 + (j+6)*2 + 1] = ( inc==1 ? 0x0F : 0x00 ); + } + + +} + +int MenuPrincipal(void) +{ + _setcursortype(_NOCURSOR); + textcolor( DARKGRAY ); + textbackground( BLACK ); + clrscr(); + + cprintf("| _ \n\r"); + cprintf(" / / ÜÜ Ü Ü Ü Ü Ü ÜÜÜ ÜÜ Ü\n\r"); + cprintf(" øøø / _/ ßÜ Û Û Û ÛßÜÛ ÛÜ Û Ü ÛÜß Û Û\n\r"); + cprintf(" ýýøø _/ ÜÜß ßÜß ÛÜ Û ßÛ ßÜ ßÜÜß Û Û ßÜß\n\r"); + cprintf(" ýýýøø / \n\r"); + cprintf(" êêêýøø __/ \n\r"); + cprintf(" êêêêýøø \n\r"); + cprintf(" êêêêýøø ----__- \n\r"); + cprintf(" êêêêýøø \n\r"); + cprintf(" êêêêýøø __--_ \n\r"); + cprintf(" êêêýøø \\ \n\r"); + cprintf(" ýýýøø \\_ \n\r"); + cprintf(" ýýøø \\_ \n\r"); + cprintf(" øøø \\_ \n\r"); + cprintf(" øø \\ \\_ \n\r"); + cprintf(" | \\ \n\r"); + cprintf(" | | \\ \n\r"); + cprintf(" | \n\r"); + + textcolor( RED ); + cprintf(" \n\r"); + + return 0; +} + + +int Funcion_Botones(int Funcion, int nBotones, struct Boton_Texto *Boton_Texto) +{ + + char i; + int DEVOLVER = -1; + int longitud, key, key2; + + switch( Funcion ) { + case DIBUJA: + highvideo(); + textcolor(BLACK); + textbackground(11); + gotoxy(Boton_Texto[nBotones].x, Boton_Texto[nBotones].y); + DEVOLVER = 0; + longitud = strlen( Boton_Texto[nBotones].Texto ); + while( DEVOLVER <= longitud ) { + if( Boton_Texto[nBotones].Texto[DEVOLVER] == '&' ) { + DEVOLVER ++; + textcolor(RED); + cprintf("%c", Boton_Texto[nBotones].Texto[DEVOLVER]); + textcolor(BLACK); + } else cprintf("%c", Boton_Texto[nBotones].Texto[DEVOLVER]); + DEVOLVER ++; + } + + // cprintf("%s", Texto); + + textbackground(7); // ±SALIR±Ü + cprintf("ß"); // ßßßßßßß + gotoxy(Boton_Texto[nBotones].x+1, Boton_Texto[nBotones].y+1); + for(i = 0; i < longitud; i ++ ) // ±±±±±±±Ü + cprintf("Ü"); // ßßßßßßß + break; + case DEPRIME: + highvideo(); + textcolor(BLACK); + textbackground(11); + gotoxy(Boton_Texto[nBotones].x, Boton_Texto[nBotones].y); + DEVOLVER = 0; + longitud = strlen( Boton_Texto[nBotones].Texto ); + //////////////// + textbackground(BLACK); + while( DEVOLVER <= (longitud+1) ) { + if( Boton_Texto[nBotones].Texto[DEVOLVER] == '&' ) { + DEVOLVER ++; + } + cprintf(" "); + DEVOLVER ++; + } + textbackground(11); + gotoxy(Boton_Texto[nBotones].x+1, Boton_Texto[nBotones].y+1); + DEVOLVER = 0; + while( DEVOLVER <= longitud ) { + + if( Boton_Texto[nBotones].Texto[DEVOLVER] == '&' ) { + DEVOLVER ++; + textcolor(RED); + cprintf("%c", Boton_Texto[nBotones].Texto[DEVOLVER]); + textcolor(BLACK); + } else cprintf("%c", Boton_Texto[nBotones].Texto[DEVOLVER]); + DEVOLVER ++; + } +// cprintf("%s", Texto); // + // ±±±±±±± + break; + case Dibuja_Todos: + for( i=0; i < nBotones; i++) + Funcion_Botones( DIBUJA, i, Boton_Texto); + break; + case COMPRUEBA: + if( bioskey(1)!=0 ) { + key = toupper( getch() ); DEVOLVER = -2; + if ( key == 0 ) { key2 = toupper( getch() ); DEVOLVER = -1; } + for( i=0; i < nBotones && DEVOLVER <= -1; i++){ + if( key == Boton_Texto[i].ID_T1 ) { + if( key == 0 ) { + if( key2 == Boton_Texto[i].ID_T2 ){ + DEVOLVER = (i + 1); + Funcion_Botones( DEPRIME, (DEVOLVER-1), Boton_Texto); + delay(150); + //sleep(1); + Funcion_Botones( DIBUJA, (DEVOLVER-1), Boton_Texto); + } + } else + { DEVOLVER = (i + 1); + Funcion_Botones( DEPRIME, (DEVOLVER-1), Boton_Texto); + delay(150); + //sleep(1); + Funcion_Botones( DIBUJA, (DEVOLVER-1), Boton_Texto); + } + } + } + + if( DEVOLVER == -2 ) + { ungetch(key); } + + if( DEVOLVER == -1 ) + { ungetch(key2); } + + + } else if( RATON ) { + DEVOLVER = 0; + for( i=0; i < nBotones && DEVOLVER == 0; i++) { + longitud = strlen( Boton_Texto[i].Texto ); + if ( (x_raton+1) >= Boton_Texto[i].x && (x_raton+1) <= ( Boton_Texto[i].x + longitud -1) && + y_raton == (Boton_Texto[i].y-1) ) { DEVOLVER = (i + 1); + Funcion_Botones( DEPRIME, (DEVOLVER-1), Boton_Texto); + if( RATON ) activa_raton(); + espera_soltar(); + if( RATON ) desactiva_raton(); +// delay(150); + Funcion_Botones( DIBUJA, (DEVOLVER-1), Boton_Texto); + } + } + } + break; + case STD_BY: + Funcion_Botones(Dibuja_Todos, nBotones, Boton_Texto); + do{ + if( RATON ) activa_raton(); + if( RATON ) espera_pulsar(); else while( bioskey(1)==0 ); + if( RATON ) desactiva_raton(); + DEVOLVER = Funcion_Botones(COMPRUEBA, nBotones, Boton_Texto); + }while(DEVOLVER==0 && bioskey(1)==0 ); + + } + return DEVOLVER; +} + +void inicializa_raton_texto(void) +{ + union REGS ent, sal; + + ent.x.ax = 0; + int86(0x33, &ent, &sal); /* averigua si hay rat¢n conectado */ + + if(sal.x.ax==0) { RATON = 0; return; } + + ent.x.ax = 15; + ent.x.cx = 8; + ent.x.dx = 16; + int86(0x33, &ent, &sal); /* fija la raz¢n mickey/pixel */ + + ent.x.ax = 7; + ent.x.cx = 0; + ent.x.dx = 639; + int86(0x33, &ent, &sal); /* fija la posici¢n m x. y m¡n. horizontal */ + + ent.x.ax = 8; + ent.x.cx = 0; + ent.x.dx = 199; + int86(0x33, &ent, &sal); /* fija la posici¢n m x. y m¡n. vertical */ + + ent.x.ax = 4; + ent.x.cx = 320; + ent.x.dx = 100; + int86(0x33, &ent, &sal); /* fija la posici¢n del rat¢n */ + + ent.x.ax = 1; + int86(0x33, &ent, &sal); /* muestra el puntero del rat¢n */ +} +void activa_raton(void) +{ + union REGS ent, sal; + + ent.x.ax = 1; + int86(0x33, &ent, &sal); +} + +void desactiva_raton(void) +{ + union REGS ent, sal; + + ent.x.ax = 2; + int86(0x33, &ent, &sal); +} + +void espera_pulsar(void) +{ + union REGS ent, sal; + + do{ + if(bioskey(1)!=0) break; + ent.x.ax = 3; + int86(0x33, &ent, &sal); /* lee posici¢n y estados del bot¢n */ + + SN(); + }while((sal.x.bx & 3)==0); + boton_izq=sal.x.bx & 1; + boton_der=(sal.x.bx >> 1) & 1; + x_raton= (sal.x.cx >> 1) / 4; // / 8 + y_raton= (sal.x.dx)/8; // /8 +} + +void espera_soltar(void) +{ + union REGS ent, sal; + + do{ + ent.x.ax = 3; + int86(0x33, &ent, &sal); /* lee posici¢n y estados del bot¢n */ + }while((sal.x.bx & 3)!=0); + boton_izq=sal.x.bx & 1; + boton_der=(sal.x.bx >> 1) & 1; + x_raton=sal.x.cx >> 1; + y_raton=sal.x.dx; +} + + + +///////////////////////////////////////////////////////////////////////////// +void Installer(void) +{ + struct Boton_Texto BT[6]; +/* +23456789-123456789-123456789- + { Preparar DISCO DURO } + + { VOLCAR WINDOWS 98 CD->HD } + { VOLCAR WINDOWS 95 CD->HD } + + { VOLCAR UTILIDADES CD->HD } + { TESTEO DEL EQUIPO } + + { SALIR } +*/ + + BT[0].x = 26; BT[0].y = 20; strcpy( BT[0].Texto, " &SALIR "); BT[0].ID_T1 = 83; BT[0].ID_T2 = 0; + + BT[1].x = 26; BT[1].y = 7; strcpy( BT[1].Texto, " &Preparar DISCO DURO "); BT[1].ID_T1 = 80; BT[1].ID_T2 = 0; + + BT[2].x = 26; BT[2].y =10; strcpy( BT[2].Texto, " &TESTEO DEL EQUIPO "); BT[2].ID_T1 = 84; BT[2].ID_T2 = 0; + BT[3].x = 26; BT[3].y =12; strcpy( BT[3].Texto, " VOLCAR &UTILIDADES CD->HD "); BT[3].ID_T1 = 85; BT[3].ID_T2 = 0; + + BT[4].x = 26; BT[4].y =15; strcpy( BT[4].Texto, " VOLCAR &WINDOWS 98 CD->HD "); BT[4].ID_T1 = 87; BT[4].ID_T2 = 0; + BT[5].x = 26; BT[5].y =17; strcpy( BT[5].Texto, " VOLCAR WINDOWS 9&5 CD->HD "); BT[5].ID_T1 = 53; BT[5].ID_T2 = 0; + + + char ok = 0; + int BPush, key; + char nBT = 2; + char reentrada = 0; + + _setcursortype( _NOCURSOR ); +// DibujaPantallaArticulos(); + do { + notENABLED = OFF; + if ( reentrada == 0 ) + BPush = Funcion_Botones(STD_BY, 6, BT); + else + reentrada = 0; + notENABLED = ON; + switch ( BPush ) + { + case 0: // No se pulso ningun BOTON + while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER + break; + case -2: // Hay una tecla normal en BUFFER +/* + if ( ( key = getch() ) != 13 && key != 27 ) + ungetch( key ); +*/ + if ( ( key = getch() ) == 13 ) + { + reentrada = 1; BPush = nBT; + } + while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER + break; + case -1: // Hay una tecla especial en BUFFER + switch( getch() ) + { + // Flecha Izquierda + case 75: + case 15: + break; + // Flecha Derecha + case 77: + case 9: + break; + // Flecha Arriba + case 72: +MemTexto[ ROWselect*80*2 + 60*2 ] = ' '; +MemTexto[ ROWselect*80*2 + 61*2 ] = ' '; +MemTexto[ ROWselect*80*2 + 62*2 ] = ' '; +MemTexto[ ROWselect*80*2 + 63*2 ] = ' '; + + nBT--; if ( nBT == 0 ) nBT = 6; + switch(nBT) + { + case 1: ROWselect = 19; break; + case 2: ROWselect = 6; break; + case 3: ROWselect = 9; break; + case 4: ROWselect = 11; break; + case 5: ROWselect = 14; break; + case 6: ROWselect = 16; break; + } + break; + // Flecha Abajo + case 80: +MemTexto[ ROWselect*80*2 + 60*2 ] = ' '; +MemTexto[ ROWselect*80*2 + 61*2 ] = ' '; +MemTexto[ ROWselect*80*2 + 62*2 ] = ' '; +MemTexto[ ROWselect*80*2 + 63*2 ] = ' '; + + nBT++; if ( nBT == 7 ) nBT = 1; + switch(nBT) + { + case 1: ROWselect = 19; break; + case 2: ROWselect = 6; break; + case 3: ROWselect = 9; break; + case 4: ROWselect = 11; break; + case 5: ROWselect = 14; break; + case 6: ROWselect = 16; break; + } + break; + // Inicio + case 71: + break; + // Fin + case 79: + break; + } + while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER + break; + case 1: + ok = 1; + break; + // Preparar DISCO DURO + case 2: + Execute( "UT_systm\\PMAGIC\\PQMAGIC.EXE" ); + break; + // Volcar W98 -> HD + case 5: + Execute( "UT_systm\\C98.BAT" ); + break; + // Volcar W95 -> HD + case 6: + Execute( "UT_systm\\C95.BAT" ); + break; + // Volcar UTILIDADES -> HD + case 4: + Execute( "UT_systm\\CUT.BAT" ); + break; + // TESTEO + case 3: + Execute( "UT_systm\\TESTdos\\Test.exe" ); + break; + } + } while(!ok); +} + + diff --git a/B-UT.cpp b/B-UT.cpp new file mode 100644 index 0000000..b38a04d --- /dev/null +++ b/B-UT.cpp @@ -0,0 +1,278 @@ +#include +#include +#include +#include +#include +#include +#include + +#define BLANCO EGA_WHITE +#define ENCUADRE 3 +#define SEC_OPTAR 5 + +#include "B-T.h" + +void BEEP(void); + + /**************************************************************************\ +|* *| +|* InputCadenaG *| +|* *| +|* Descripci¢n: *| +|* Edita una cadena en formato gr fico *| +|* *| +|* Entradas: *| +|* Puntero a los datos editados *| +|* 0 alfanumerico 1 numerico *| +|* longitud de la cadena (TEXTO/NUMERO) *| +|* color del texto *| +|* color de fondo *| +|* Limites de acotacion *| +|* *| +|* Salidas: (ninguna) *| +|* *| +|* *| + \**************************************************************************/ +int InputCadenaG(char *s, int numalp, int lmax, int cc, int cf, int X0, int Y0, int X1, int Y1) +{ + // A todas las y les sumaba antes +RoW*12 parametro que indica la linea + + int ls; // longitud cadena + char Status = 0; + char *s1; // puntero a cadena inicial + int c, ok, i; + + s1 = s; // inicio cadena + + textbackground( cf ); + + gotoxy( X0, Y0 ); + for ( i = 0; i < X1; i++ ) + putch( 32 ); + textcolor( cc ); + gotoxy( X0, Y0 ); + cprintf( "%s", s1 ); + + _setcursortype( _SOLIDCURSOR ); + + ls = strlen ( s ); // Longitud de actual + + s += ls; // se coloca en el final + + do{ + c = getch(); // obtiene tecla + + if ( c == 27 ) Status = 1; + + ok = ( c == 27 || c == 13 || c == 0); // 13 = INTRO || Especiales + + if ( c == 8 && ls > 0 && !ok ) { // 8 = Back Space + ls--; + s--; + + *s = '\0'; + + gotoxy( X0, Y0 ); + for ( i = 0; i < X1; i++ ) + putch( 32 ); + textcolor( cc ); + gotoxy( X0, Y0 ); + cprintf( "%s", s1 ); + + + } else { + if ( !numalp && c >= 32 && c <= 254 && ls < lmax) { + + *s++ = c; + ls++; + + *s = '\0'; + + gotoxy( X0, Y0 ); + for ( i = 0; i < X1; i++ ) + putch( 32 ); + textcolor( cc ); + gotoxy( X0, Y0 ); + cprintf( "%s", s1 ); + + } else { + if ( numalp && isdigit(c) && ls < lmax) { + *s++ = c; + ls++; + + *s = '\0'; // Cero final + + gotoxy( X0, Y0 ); + for ( i = 0; i < X1; i++ ) + putch( 32 ); + textcolor( cc ); + gotoxy( X0, Y0 ); + cprintf( "%s", s1 ); + + } + /*ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ*/ + else if( c == 27 ) {*s='\0'; ok = 1; } + /*ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ*/ + else BEEP(); + } + } + + }while(!ok); + + _setcursortype( _NOCURSOR ); + + ok = 1; + *s = ' '; + while( ok && ls >= 0 ) { + if(*s==' ') { *s = '\0'; s--; ls--; + } else { s++; ok = 0; } + } + + *s = '\0'; + + while(kbhit()) getch(); // Vacia Buffer impidiendo falsas + // pulsaciones... + + return ( (Status<<8) + (ls&0x00FF) ); +} + +void BEEP(void) +{ + + sound(440); + delay(50); + nosound(); + +} + + +void formatea_u_long( unsigned long Numero, char *Inter_Chg) +{ + char Buffer1[80]; + + int c; + + sprintf(Buffer1, "%lu", Numero); + + Inter_Chg[0]='\0'; + + strrev(Buffer1); + + c = strlen( Buffer1 ); + + while( c >= 3 ) + { + + c -= 3; + strncat( Inter_Chg, Buffer1, 3); + + strrev(Buffer1); + + Buffer1[c] = '\0'; + + strrev(Buffer1); + + if(strlen(Buffer1)!=0) + strcat( Inter_Chg, "." ); + } + + strcat( Inter_Chg, Buffer1); + strrev(Inter_Chg); + + +/*// return Buffer2;*/ +} + + +int Optar( int optar, ... ) +{ +struct Boton_Texto BT[6]; +int devolver = 0; + +BT[0].x = 22; BT[0].y = 15; strcpy( BT[0].Texto, " acep&Tar "); BT[0].ID_T1 = 84; BT[0].ID_T2 = 20; +BT[1].x = 51; BT[1].y = 15; strcpy( BT[1].Texto, " &Cancelar"); BT[1].ID_T1 = 67; BT[1].ID_T2 = 46; + + static char fondo[4096]; + static char Memoria = 0; + + int DEV = 0, ok = 0, linea = 0; + int Center; char *buff; + + va_list ap; + va_start( ap, &optar ); + + if ( Memoria == 1 ) + { + puttext( 21, 5, 63, 17, (void *)fondo ); Memoria = 0; + if ( optar == ENCUADRE ) return DEV; + } + + Memoria = 1; + + gettext( 21, 5, 63, 17, (void *)fondo ); + +textbackground( BLACK ); +textcolor( CYAN ); +gotoxy( 21, 5 ); cprintf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿"); +gotoxy( 21, 6 ); cprintf("³ ³"); +gotoxy( 21, 7 ); cprintf("ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"); +gotoxy( 21, 8 ); cprintf("³ ³"); +gotoxy( 21, 9 ); cprintf("³ ³"); +gotoxy( 21, 10 ); cprintf("³ ³"); +gotoxy( 21, 11 ); cprintf("³ ³"); +gotoxy( 21, 12 ); cprintf("³ ³"); +gotoxy( 21, 13 ); cprintf("³ ³"); +gotoxy( 21, 14 ); cprintf("³ ³"); +gotoxy( 21, 15 ); cprintf("³ ³"); +gotoxy( 21, 16 ); cprintf("³ ³"); +gotoxy( 21, 17 ); cprintf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ"); + + + + textcolor( RED ); + linea = 0; + while ( (buff = va_arg(ap, char *)) != NULL ) + { + Center = (42 - strlen( buff ) ) / 2; + gotoxy( 21+Center+1, ( (linea == 0 ) ? 6 : 8 + linea ) ); + cprintf( "%s", buff ); + linea++; + } + + va_end(ap); + + if ( optar != ENCUADRE ) + { + ok = 0; while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER + if ( optar == 1 ) + do { + switch( Funcion_Botones(STD_BY, 2, BT) ) + { + case 0: + // No se pulso ningun BOTON + case -2: + case -1: + while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER + if ( optar == 0 ) ok = 1; + break; + case 1: + DEV = 1; ok = 1; + break; + case 2: + DEV = 0; ok = 1; + break; + } + }while( !ok ); + else { espera_pulsar(); espera_soltar(); } + + puttext( 21, 5, 63, 17, (void *)fondo ); + + Memoria = 0; + + } + + return DEV; +} + + + diff --git a/M.BAT b/M.BAT new file mode 100644 index 0000000..3de38e8 --- /dev/null +++ b/M.BAT @@ -0,0 +1 @@ +autodos \ No newline at end of file diff --git a/autodos.prj b/autodos.prj new file mode 100644 index 0000000000000000000000000000000000000000..d00f1da5a4efe2bafa60be760e86477a6ee5c96e GIT binary patch literal 5642 zcmeI0X-r&I6vxkf?87!d%T|TgGGa@^z|gW37Z_#+m}Iuh46)j&SYV1+VCVqF6;P`+ zZgKgliTl2^wwjn|P5fYDTWaG%7r*&Izq)VLj^}^J5>hg}p-kJv_#XV`ym$Ziob%4R z_ig_1a8F3JsGe}>mSFFg+CDHCR7*)@=NAe7Nvk7o`lqCjphHZe!_qz?IV1NRmG%dj zX#G&~pyWqPL7&UkFC@QYCebXjm5$3jCnQfYDd`kQKX4!V5%>xCnIV3G^(!S4O%wfw zjo*PkfIrbo-J8r*zLy?mGkN!M;DpTMB+OH6>gj7{GMz@h1G$X9*i!z+<{2OYkl={C zkVs-sGLQnKGL$q%Njjr1gQ4melnG=3*+33MV9`5^ER@Cfi2@Hp@U@Fb9|XQTkBKpKz^R0}ItaQTZ-Op~QK;PJXUyk=*h&FyuV zT~&Q_-xcxJpxTwWi`4O~tjEiWW^pD-T>63r_^cCW2x7 zFM5tHOr!bI4^OK|=eg6^(8xz4TQZ>%aYRwIH zwZ^R)674&Yd20DO5}{}XC#}Jr@&5kU6{N8~EoVz>H`q4YTxRFRxz8^xwI!)%=1Ryf z6WjScBKDrYc(( zU8`!&TG_gKvhv$!seJr-Ur%(9U&?d%UA(Q@?=;(8@=?ia>9)Fk0dtq%jo-F9SIPz6G)VZHhY(3w4yiQTQOHXIivY6Dzi~ z6gO{`$~@B<)4qc9SsSQ4X%)xj(K@$0MNf;5#kWGo-=2z<3Z+9CR4PO#ztI1zGR-HUNToQhd$ZgxjGVopZR*k z$dZ+hdW^=1`i=I?l>MVoqkeVsyk{)%zECd@+-MB&-?^U+0)D&GX6%fXCx*o5xAGNG zL)2z>`!pnW_gTUGkt!<^JF?l^fnF$E43XL4a9cDqdbvYbb!Q8HBri%pQ$*$q0+tqG&Xyx2(wY9@hBN-^?oGDU9<)qST OT0<37#%)+|z5fU5c_YjK literal 0 HcmV?d00001 diff --git a/sn.exe b/sn.exe new file mode 100644 index 0000000000000000000000000000000000000000..56009b4b532132b3139c2741c1c14e735c1a9e3b GIT binary patch literal 47830 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 Q3Y2@?Zj{ws?GM8EFKL(`IRF3v literal 0 HcmV?d00001