PROGRAM BARRA; {A+,S+,B-,E+,N+} {$M 16384, 270000, 270000} USES CRT,GRAPH,DOS,ERR,VISUAL; LABEL 1,2,3,4,5; TYPE PUNTEROV2=^V2; V2=RECORD TIEMPOS : DOUBLE; TENSIONES : ARRAY[1..25] OF DOUBLE; SIG : PUNTEROV2 END; PUNTERONUDO=^NUDO; NUDO=RECORD CARACTERN : CHAR; SIG : PUNTERONUDO END; PUNTEROV=^V; V=RECORD Vmuestras : DOUBLE; NUMNUDO : INTEGER; SIG : PUNTEROV END; CONST EJECUTAR : BOOLEAN=FALSE; MEMDINAMICA : BOOLEAN=FALSE; SALIDADOS : BOOLEAN=FALSE; NOMPSP : STRING[100]='Ninguno'; {se¤ala el numero de errores producidos} NO_DE_ERRORES: INTEGER=0; {se¤ala n§ de valores con valor >10} CONTADOR3 : INTEGER=0; DATOS_PCLAB : BOOLEAN=FALSE; VAR DRIVER : INTEGER; MODO : INTEGER; VALOX : INTEGER; VALOY : INTEGER; ERRORDIRECTORIO : INTEGER; SALTO : INTEGER; RESALTO : INTEGER; MARGEN : INTEGER; BAX : INTEGER; BAX2 : INTEGER; BAX3 : INTEGER; BAX4 : INTEGER; MES : INTEGER; DIA : INTEGER; ANO : INTEGER; MAXCADENUDOS1 : INTEGER; MAXCADENUDOS2 : INTEGER; PUNTERO1 : POINTER; PUNTERO2 : POINTER; PUNTERO3 : POINTER; PUNTERO4 : POINTER; PUNTERO5 : POINTER; PUNTERO6 : POINTER; PUNTERO7 : POINTER; PUNTERO8 : POINTER; PUNTEROPAN : POINTER; DIMENSION1 : WORD; DIMENSION2 : WORD; DIMENSION3 : WORD; DIMENSION4 : WORD; DIMENSION5 : WORD; DIMENSION6 : WORD; DIMENSION7 : WORD; DIMENSION8 : WORD; COTE1 : REAL; COTE2 : REAL; CHIVATO1 : BYTE; CHIVATO2 : BYTE; CHIVATO3 : BYTE; CHIVATO4 : BYTE; TOLERANCIA : BYTE; UTOLERANCIA : BYTE; COLOR1 : BYTE; COLOR2 : BYTE; COLOR3 : BYTE; COLOR4 : BYTE; COLOR5 : BYTE; COLOR6 : BYTE; COLOR7 : BYTE; COLOR10 : BYTE; COLOR11 : BYTE; COLOR12 : BYTE; LONG : BYTE; CUNTAPUNTOYCOMA : BYTE; SALVAX : BYTE; SALVAY : BYTE; CREAR : STRING[11]; TOLERANCIA1 : STRING[3]; NOM : STRING[100]; TIEMPO : STRING[100]; DIRECTORIO : STRING[255]; VER : STRING[255]; SISTEMA : STRING; BAY : BOOLEAN; BAY2 : BOOLEAN; BAY3 : BOOLEAN; BAY4 : BOOLEAN; ESC1 : BOOLEAN; ESC2 : BOOLEAN; ESC3 : BOOLEAN; ESC4 : BOOLEAN; ESC5 : BOOLEAN; CREADO1 : BOOLEAN; CREADO2 : BOOLEAN; FUNCIONA : BOOLEAN; MN : BOOLEAN; CARGONUDOS : BOOLEAN; PULSA : CHAR; NODCHAR : CHAR; PRIM : PUNTEROV2; ANTE : PUNTEROV2; ACTU : PUNTEROV2; INICIAL : PUNTERONUDO; COMODIN : PUNTERONUDO; PRESENTE : PUNTERONUDO; PRIMERO : PUNTEROV; ANTERIOR : PUNTEROV; ACTUAL : PUNTEROV; ASIGNUD : ARRAY[0..15] OF BYTE; (**********************************************************) {$I GEN.PAS} (**********************************************************) {$I EJECUTA.PAS} (**********************************************************) PROCEDURE VENTANAS1; BEGIN IF PUNTERO1=NIL THEN BEGIN SETFILLSTYLE(1,WHITE); BAR(ROUND(35*COTE1),ROUND(20*COTE2),ROUND(600*COTE1),ROUND(40*COTE2)); SETFILLSTYLE(1,GREEN); PIESLICE(ROUND(60*COTE1),ROUND(30*COTE2),1,360,ROUND(7*COTE1)); SETCOLOR(BLACK); RECTANGLE(ROUND(51*COTE1),ROUND(21*COTE2),ROUND(69*COTE1),ROUND(39*COTE2)); OUTTEXTXY(ROUND(250*COTE1),ROUND(27*COTE2),'EJECUTAR'); OUTTEXTXY(ROUND(380*COTE1),ROUND(27*COTE2),'APLICA-2'); OUTTEXTXY(ROUND(520*COTE1),ROUND(27*COTE2),'SALIR'); OUTTEXTXY(ROUND(100*COTE1),ROUND(27*COTE2),'CONFIGURAR'); DIMENSION1:=IMAGESIZE(ROUND(35*COTE1),ROUND(20*COTE2),ROUND(600*COTE1),ROUND(40*COTE2)); GETMEM(PUNTERO1,DIMENSION1); GETIMAGE(ROUND(35*COTE1),ROUND(20*COTE2),ROUND(600*COTE1),ROUND(40*COTE2),PUNTERO1^); SETFILLSTYLE(1,COLOR1); BAR(ROUND(85*COTE1),ROUND(20*COTE2),ROUND(195*COTE1),ROUND(40*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(100*COTE1),ROUND(27*COTE2),'CONFIGURAR'); END ELSE PUTIMAGE(ROUND(35*COTE1),ROUND(20*COTE2),PUNTERO1^,COPYPUT) END; (**********************************************************) PROCEDURE DEFINIR_COLORES; BEGIN CASE OBTENERTIPOADAP OF MDA,EGAMono,VGAMono,MCGAMono : BEGIN COLOR1:=BLACK; COLOR2:=BLACK; COLOR3:=BLACK; COLOR4:=BLACK; COLOR5:=BLACK; COLOR6:=WHITE; COLOR7:=WHITE; COLOR10:=BLACK; COLOR11:=WHITE; COLOR12:=WHITE; MN:=TRUE END ELSE BEGIN COLOR1:=MAGENTA; COLOR2:=LIGHTRED; COLOR3:=WHITE; COLOR4:=LIGHTGREEN; COLOR5:=LIGHTBLUE; COLOR6:=YELLOW; COLOR7:=LIGHTGREEN; COLOR10:=GREEN; COLOR11:=LIGHTRED; COLOR12:=LIGHTGREEN; MN:=FALSE END END END; (**********************************************************) {$F+} PROCEDURE LIBERARMEMORIA; BEGIN IF PUNTERO1 <> NIL THEN FREEMEM(PUNTERO1,DIMENSION1); IF PUNTERO2 <> NIL THEN FREEMEM(PUNTERO2,DIMENSION2); IF PUNTERO3 <> NIL THEN FREEMEM(PUNTERO3,DIMENSION3); IF PUNTERO4 <> NIL THEN FREEMEM(PUNTERO4,DIMENSION4); IF PUNTERO5 <> NIL THEN FREEMEM(PUNTERO5,DIMENSION5); IF PUNTERO6 <> NIL THEN FREEMEM(PUNTERO6,DIMENSION6); IF PUNTERO7 <> NIL THEN FREEMEM(PUNTERO7,DIMENSION7); IF PUNTERO8 <> NIL THEN FREEMEM(PUNTERO8,DIMENSION8); IF MEMDINAMICA=TRUE THEN BEGIN {dispone la posible memoria ocupada por anteriores ficheros .txt} BEGIN ANTE:=PRIM; REPEAT ACTU:=ANTE^.SIG; DISPOSE(ANTE); ANTE:=ACTU UNTIL ANTE^.SIG=NIL END; {dispone la posible memoria ocupada por los nudos de anteriores fich} BEGIN COMODIN:=INICIAL; REPEAT BEGIN PRESENTE:=COMODIN^.SIG; DISPOSE(COMODIN); COMODIN:=PRESENTE END UNTIL COMODIN^.SIG=NIL END END; {dispone la posible memoria ocupada por los datos tomados con la PCLAB} IF DATOS_PCLAB=TRUE THEN BEGIN ACTUAL:=PRIMERO; WHILE ACTUAL=NIL DO ANTERIOR:=ACTUAL^.SIG; DISPOSE(ACTUAL); ACTUAL:=ANTERIOR; END; CLOSEGRAPH; LOWVIDEO; CURSORON; TEXTMODE(LASTMODE); CARGARPANTALLA(PUNTEROPAN); GOTOXY(SALVAX,SALVAY) END; {$F-} (**********************************************************) PROCEDURE VALORTOLERANCIA; BEGIN IF ((CHIVATO1<>5) AND ((SALTO<>13) OR (SALTO<>80))) OR (SALTO=61) THEN BEGIN {para no poderla llamar con saludo delante} IF PUNTERO6=NIL THEN BEGIN SETFILLSTYLE(1,WHITE); BAR(ROUND(150*COTE1),ROUND(200*COTE2),ROUND(490*COTE1),ROUND(280*COTE2)); SETCOLOR(BLACK); RECTANGLE(ROUND(160*COTE1),ROUND(210*COTE2),ROUND(480*COTE1),ROUND(270*COTE2)); SETCOLOR(7); SETLINESTYLE(0,1,3); LINE(ROUND(165*COTE1),ROUND(273*COTE2),ROUND(482*COTE1),ROUND(273*COTE2)); LINE(ROUND(483*COTE1),ROUND(215*COTE2),ROUND(483*COTE1),ROUND(274*COTE2)); SETCOLOR(BLACK); OUTTEXTXY(ROUND(170*COTE1),ROUND(220*COTE2),'INTRODUCE EL VALOR DE LA TOLERANCIA :'); OUTTEXTXY(ROUND(270*COTE1),ROUND(235*COTE2),'< 0..100 >'); OUTTEXTXY(ROUND(185*COTE1),ROUND(250*COTE2),'-1'); OUTTEXTXY(ROUND(190*COTE1),ROUND(260*COTE2),#27); OUTTEXTXY(ROUND(215*COTE1),ROUND(250*COTE2),'-5'); OUTTEXTXY(ROUND(220*COTE1),ROUND(260*COTE2),#25); OUTTEXTXY(ROUND(395*COTE1),ROUND(250*COTE2),'+5'); OUTTEXTXY(ROUND(400*COTE1),ROUND(260*COTE2),#24); OUTTEXTXY(ROUND(425*COTE1),ROUND(250*COTE2),'+1'); OUTTEXTXY(ROUND(430*COTE1),ROUND(260*COTE2),#26); DIMENSION6:=IMAGESIZE(ROUND(150*COTE1),ROUND(200*COTE2),ROUND(490*COTE1),ROUND(280*COTE2)); GETMEM(PUNTERO6,DIMENSION6); GETIMAGE(ROUND(150*COTE1),ROUND(200*COTE2),ROUND(490*COTE1),ROUND(280*COTE2),PUNTERO6^) END ELSE PUTIMAGE(ROUND(150*COTE1),ROUND(200*COTE2),PUNTERO6^,COPYPUT); SETFILLSTYLE(1,7); SETCOLOR(BLACK); SETLINESTYLE(0,1,3); UTOLERANCIA:=TOLERANCIA; REPEAT BAR(ROUND(260*COTE1),ROUND(250*COTE2),ROUND(360*COTE1),ROUND(265*COTE2)); LINE(ROUND(265*COTE1),ROUND(267*COTE2),ROUND(362*COTE1),ROUND(267*COTE2)); LINE(ROUND(362*COTE1),ROUND(255*COTE2),ROUND(362*COTE1),ROUND(268*COTE2)); OUTTEXTXY(ROUND(290*COTE1),ROUND(255*COTE2),TOLERANCIA1); OUTTEXTXY(ROUND(320*COTE1),ROUND(255*COTE2),' %'); DESCARGARTECLADO; MARGEN:=ORD(READKEY); IF MARGEN=75 THEN BEGIN TOLERANCIA:=TOLERANCIA-1; IF TOLERANCIA=255 THEN TOLERANCIA:=100; STR(TOLERANCIA,TOLERANCIA1) END; IF MARGEN=77 THEN BEGIN TOLERANCIA:=TOLERANCIA+1; IF TOLERANCIA=101 THEN TOLERANCIA:=0; STR(TOLERANCIA,TOLERANCIA1) END; IF MARGEN=72 THEN BEGIN TOLERANCIA:=TOLERANCIA+5; IF TOLERANCIA>100 THEN TOLERANCIA:=0; STR(TOLERANCIA,TOLERANCIA1) END; IF MARGEN=80 THEN BEGIN TOLERANCIA:=TOLERANCIA-5; IF TOLERANCIA IN [250,251,252,253,254,255] THEN TOLERANCIA:=100; STR(TOLERANCIA,TOLERANCIA1) END UNTIL (MARGEN=13) OR (MARGEN=27); IF MARGEN=27 THEN BEGIN IF PUNTERO7=NIL THEN BEGIN SETFILLSTYLE(1,BLACK); BAR(ROUND(150*COTE1),ROUND(200*COTE2),ROUND(490*COTE1),ROUND(280*COTE2)); DIMENSION7:=IMAGESIZE(ROUND(150*COTE1),ROUND(200*COTE2),ROUND(490*COTE1),ROUND(280*COTE2)); GETMEM(PUNTERO7,DIMENSION7); GETIMAGE(ROUND(150*COTE1),ROUND(200*COTE2),ROUND(490*COTE1),ROUND(280*COTE2),PUNTERO7^) END ELSE PUTIMAGE(ROUND(150*COTE1),ROUND(200*COTE2),PUNTERO7^,COPYPUT); TOLERANCIA:=UTOLERANCIA; STR(TOLERANCIA,TOLERANCIA1) END; SETLINESTYLE(0,0,1); IF (MARGEN=13) AND ((SALTO=61) OR (RESALTO=61)) THEN BEGIN IF PUNTERO7=NIL THEN BEGIN SETFILLSTYLE(1,BLACK); BAR(ROUND(150*COTE1),ROUND(200*COTE2),ROUND(490*COTE1),ROUND(280*COTE2)); DIMENSION7:=IMAGESIZE(ROUND(150*COTE1),ROUND(200*COTE2),ROUND(490*COTE1),ROUND(280*COTE2)); GETMEM(PUNTERO7,DIMENSION7); GETIMAGE(ROUND(150*COTE1),ROUND(200*COTE2),ROUND(490*COTE1),ROUND(280*COTE2),PUNTERO7^) END ELSE PUTIMAGE(ROUND(150*COTE1),ROUND(200*COTE2),PUNTERO7^,COPYPUT); SETFILLSTYLE(1,WHITE); BAR(ROUND(510*COTE1),ROUND(365*COTE2),ROUND(545*COTE1),ROUND(372*COTE2)); SETCOLOR(COLOR2); OUTTEXTXY(ROUND(390*COTE1),ROUND(365*COTE2),'TOLERANCIA : %'); STR(TOLERANCIA,TOLERANCIA1); OUTTEXTXY(ROUND(520*COTE1),ROUND(365*COTE2),TOLERANCIA1) END; SETCOLOR(WHITE) END END; {de la condici¢n del saludo} (**********************************************************) PROCEDURE CAMBIARDIRECTORIO; BEGIN RESTORECRTMODE; WINDOW(1,1,80,25); TEXTBACKGROUND(COLOR5); CLRSCR; REPEAT REPEAT CURSORON; WINDOW(1,1,80,25); PULSA:=' '; {inicializamos} CLRSCR; DIBUJARCUADRO(2,1,79,25,WHITE,COLOR5); TEXTCOLOR(COLOR6); TEXTBACKGROUND(COLOR5); GOTOXY(3,2); WRITELN('INTRODUCE UNIDAD Y CAMINO DEL DIRECTORIO O SUBDIRECTORIO : '); GOTOXY(3,3); WRITELN('Unidad:\Camino1\Camino2\...\CaminoN >>> INTRO salir'); RAYA_HORIZONTAL(2,79,4,WHITE); TEXTCOLOR(COLOR6); GOTOXY(3,24); WRITE('DTO. actual : ',DIRECTORIO); RAYA_HORIZONTAL(2,79,23,WHITE); TEXTCOLOR(COLOR6); WINDOW(3,5,78,24); GOTOXY(1,1); REPEAT DESCARGARTECLADO; READLN(DIRECTORIO) UNTIL DIRECTORIO<>#13; IF LENGTH(DIRECTORIO)=2 THEN BEGIN WINDOW(1,1,80,25); DIRECTORIO:='No Definido'; CURSOROFF; ERROR(3); GOTOXY(23,22); TEXTCOLOR(COLOR6); TEXTBACKGROUND(COLOR5); WRITE('>>> pulsa CUALQUIER TECLA para repetir...'); DESCARGARTECLADO; PULSA:=READKEY END ELSE PULSA:=#251; IF LENGTH(DIRECTORIO)>40 THEN BEGIN CURSOROFF; DIRECTORIO:='No Definido'; GOTOXY(2,3); WRITELN('EL DIRECTORIO SE EXCEDE EN SU LONGITUD (>40 caracteres)'); WRITELN(^g); DELAY(3000) END UNTIL (PULSA=#251) AND (LENGTH(DIRECTORIO)<40); {$V-} FOR LONG:=1 TO LENGTH(DIRECTORIO) DO DIRECTORIO[LONG]:=UPCASE(DIRECTORIO[LONG]); {$V+} {$I-} CHDIR(DIRECTORIO) {$I+} ; ERRORDIRECTORIO:=IORESULT; IF ERRORDIRECTORIO<>0 THEN BEGIN CURSOROFF; DIRECTORIO:='No Definido'; WINDOW(1,1,80,25); ERROR(ERRORDIRECTORIO); GOTOXY(23,22); TEXTCOLOR(COLOR6); TEXTBACKGROUND(COLOR5); WRITE('>>> pulsa CUALQUIER TECLA para repetir...'); DESCARGARTECLADO; PULSA:=READKEY END ELSE PULSA:=#251; WINDOW(1,1,80,25) {un valor que no se da raiz^2} UNTIL PULSA=#251; SETGRAPHMODE(MODO) END; (**********************************************************) PROCEDURE CALCULARDIRECTORIOACTUAL; BEGIN GETDIR(0,DIRECTORIO); IF LENGTH(DIRECTORIO)>40 THEN DIRECTORIO:='de trabajo por defecto' END; (**********************************************************) PROCEDURE ABANDONAR; BEGIN SETFILLSTYLE(1,7); BAR(ROUND(150*COTE1),ROUND(200*COTE2),ROUND(490*COTE1),ROUND(280*COTE2)); SETCOLOR(BLACK); RECTANGLE(ROUND(160*COTE1),ROUND(210*COTE2),ROUND(480*COTE1),ROUND(270*COTE2)); OUTTEXTXY(ROUND(190*COTE1),ROUND(220*COTE2),'¨ DESEA ABANDONAR EL PROGRAMA ?'); OUTTEXTXY(ROUND(240*COTE1),ROUND(240*COTE2),'(S)-Si (N)-No'); REPEAT DESCARGARTECLADO; PULSA:=READKEY UNTIL PULSA IN ['N','n','S','s']; IF PULSA IN ['N','n'] THEN BEGIN SETFILLSTYLE(1,BLACK); BAR(ROUND(150*COTE1),ROUND(200*COTE2),ROUND(490*COTE1),ROUND(280*COTE2)) END; {redibuja en el caso de vover de ejecutar} IF (CHIVATO1=2) AND (EJECUTAR=TRUE) THEN BEGIN SETFILLSTYLE(1,7); BAR(ROUND(150*COTE1),ROUND(200*COTE2),ROUND(490*COTE1),ROUND(280*COTE2)); SETCOLOR(BLACK); RECTANGLE(ROUND(160*COTE1),ROUND(210*COTE2),ROUND(480*COTE1),ROUND(270*COTE2)); SETCOLOR(COLOR4); OUTTEXTXY(ROUND(190*COTE1),ROUND(235*COTE2),'>>> PULSE ESCAPE PARA CONTINUAR') END; {redibuja en el caso de volver de no poderse ejecutar} IF (CHIVATO1=2) AND (EJECUTAR=FALSE) THEN BEGIN SETFILLSTYLE(1,7); BAR(ROUND(150*COTE1),ROUND(200*COTE2),ROUND(490*COTE1),ROUND(280*COTE2)); SETCOLOR(BLACK); RECTANGLE(ROUND(160*COTE1),ROUND(210*COTE2),ROUND(480*COTE1),ROUND(270*COTE2)); OUTTEXTXY(ROUND(190*COTE1),ROUND(220*COTE2),' NO DEFINIDO FICHERO PSP SOBRE'); OUTTEXTXY(ROUND(190*COTE1),ROUND(240*COTE2),' EL QUE EJECUTAR EL PROGRAMA'); SETCOLOR(COLOR4); OUTTEXTXY(ROUND(190*COTE1),ROUND(260*COTE2),' >>> ESCAPE SALIR') END; {redibuja el saludo} IF (CHIVATO1=5) AND ((SALTO=80) OR (SALTO=13)) THEN PUTIMAGE(ROUND(180*COTE1),ROUND(100*COTE2),PUNTERO8^,COPYPUT); SETCOLOR(WHITE) END; (**********************************************************) PROCEDURE FIJARFECHA ( MES, DIA, ANO : INTEGER; VAR FUNCIONA:BOOLEAN); VAR REGS : REGISTERS; BEGIN FILLCHAR(REGS,SIZEOF(REGS),0); WITH REGS DO BEGIN AH:=$2B; DH:=MES; DL:=DIA; CX:=ANO END; MSDOS(REGS); FUNCIONA:=REGS.AL <> 0 END; (**********************************************************) PROCEDURE FECHA; LABEL ALMENU; BEGIN RESTORECRTMODE; WINDOW(1,1,80,25); TEXTBACKGROUND(COLOR5); CLRSCR; REPEAT REPEAT REPEAT REPEAT CURSORON; WINDOW(1,1,80,25); CLRSCR; CLRSCR; DIBUJARCUADRO(2,1,79,25,WHITE,COLOR5); RAYA_HORIZONTAL(2,79,3,WHITE); OBTENERFECHA(SISTEMA); TEXTCOLOR(COLOR6); TEXTBACKGROUND(COLOR5); GOTOXY(3,2); WRITELN('LA FECHA ACTUAL ES : ',SISTEMA); WINDOW(3,4,78,24); GOTOXY(1,2); WRITELN('INTRODUCE EL DIA (dos cifras)'); DESCARGARTECLADO; WINDOW(3,6,78,7); {$I-} READLN(DIA) {$I+}; ERRORDIRECTORIO:=IORESULT; IF ERRORDIRECTORIO<>0 THEN BEGIN CURSOROFF; WINDOW(1,1,80,25); ERROR(ERRORDIRECTORIO); TEXTCOLOR(COLOR6); TEXTBACKGROUND(COLOR5); GOTOXY(15,24); WRITE('>>> pulsa CUALQUIER TECLA para repetir, ESCAPE salir'); DESCARGARTECLADO; PULSA:=READKEY; IF PULSA=#27 THEN GOTO ALMENU END UNTIL ERRORDIRECTORIO=0; WINDOW(3,4,78,24); GOTOXY(1,5); WRITELN('INTRODUCE EL MES (dos cifras)'); DESCARGARTECLADO; WINDOW(3,9,78,10); {$I-} READLN(MES) {$I+}; ERRORDIRECTORIO:=IORESULT; IF ERRORDIRECTORIO<>0 THEN BEGIN CURSOROFF; WINDOW(1,1,80,25); ERROR(ERRORDIRECTORIO); TEXTCOLOR(COLOR6); TEXTBACKGROUND(COLOR5); GOTOXY(15,24); WRITE('>>> pulsa CUALQUIER TECLA para repetir, ESCAPE salir'); DESCARGARTECLADO; PULSA:=READKEY; IF PULSA=#27 THEN GOTO ALMENU END UNTIL ERRORDIRECTORIO=0; WINDOW(3,4,78,24); GOTOXY(1,8); WRITELN('INTRODUCE EL A¥O (cuatro cifras)'); DESCARGARTECLADO; WINDOW(3,12,78,13); {$I-} READLN(ANO) {$I+}; ERRORDIRECTORIO:=IORESULT; IF ERRORDIRECTORIO<>0 THEN BEGIN CURSOROFF; WINDOW(1,1,80,25); ERROR(ERRORDIRECTORIO); TEXTCOLOR(COLOR6); TEXTBACKGROUND(COLOR5); GOTOXY(15,24); WRITE('>>> pulsa CUALQUIER TECLA para repetir, ESCAPE salir'); DESCARGARTECLADO; PULSA:=READKEY; IF PULSA=#27 THEN GOTO ALMENU END UNTIL ERRORDIRECTORIO=0; WINDOW(1,1,80,25); FIJARFECHA(MES,DIA,ANO,FUNCIONA); IF FUNCIONA THEN BEGIN GOTOXY(33,23); TEXTCOLOR(COLOR2+BLINK); WRITELN(' ERROR! '); WRITELN(^g); TEXTCOLOR(COLOR6); END ELSE BEGIN GOTOXY(25,23); WRITELN('LA FECHA HA SIDO ESTABLECIDA') END; CURSOROFF; GOTOXY(27,24); WRITE('Pulse CUALQUIER TECLA...'); DESCARGARTECLADO; PULSA:=READKEY UNTIL FUNCIONA=FALSE; ALMENU : END; (**********************************************************) PROCEDURE REALIZA_INFORMACION; BEGIN SETCOLOR(WHITE); RECTANGLE(0,0,VALOX,VALOY); VENTANAS1; {realizaci¢n de la informaci¢n} SETFILLSTYLE(1,WHITE); BAR(ROUND(35*COTE1),ROUND(350*COTE2),ROUND(600*COTE1),ROUND(420*COTE2)); SETCOLOR(BLACK); RECTANGLE(ROUND(45*COTE1),ROUND(360*COTE2),ROUND(590*COTE1),ROUND(410*COTE2)); LINE(ROUND(52*COTE1),ROUND(375*COTE2),ROUND(583*COTE1),ROUND(375*COTE2)); LINE(ROUND(52*COTE1),ROUND(395*COTE2),ROUND(583*COTE1),ROUND(395*COTE2)); LINE(ROUND(318*COTE1),ROUND(362*COTE2),ROUND(318*COTE1),ROUND(373*COTE2)); SETCOLOR(COLOR2); IF CREAR='A DISCO: SI' THEN OUTTEXTXY(ROUND(80*COTE1),ROUND(365*COTE2),'FICHEROS DE SALIDA : SI'); IF CREAR='A DISCO: NO' THEN OUTTEXTXY(ROUND(80*COTE1),ROUND(365*COTE2),'FICHEROS DE SALIDA : NO'); OUTTEXTXY(ROUND(390*COTE1),ROUND(365*COTE2),'TOLERANCIA : %'); STR(TOLERANCIA,TOLERANCIA1); OUTTEXTXY(ROUND(520*COTE1),ROUND(365*COTE2),TOLERANCIA1); OUTTEXTXY(ROUND(80*COTE1),ROUND(382*COTE2),'FICHERO PSP : '); OUTTEXTXY(ROUND(205*COTE1),ROUND(382*COTE2),NOMPSP); OUTTEXTXY(ROUND(80*COTE1),ROUND(400*COTE2),'DIRECTORIO : '); OUTTEXTXY(ROUND(205*COTE1),ROUND(400*COTE2),DIRECTORIO); SETLINESTYLE(0,1,3); SETCOLOR(7); LINE(ROUND(50*COTE1),ROUND(413*COTE2),ROUND(592*COTE1),ROUND(413*COTE2)); LINE(ROUND(593*COTE1),ROUND(365*COTE2),ROUND(593*COTE1),ROUND(414*COTE2)); SETLINESTYLE(0,0,1); SETCOLOR(BLACK); SETFILLSTYLE(1,LIGHTCYAN); BAR(ROUND(35*COTE1),ROUND(440*COTE2),ROUND(600*COTE1),ROUND(460*COTE2)); OUTTEXTXY(ROUND(50*COTE1),ROUND(447*COTE2),'ESCAPE'); OUTTEXTXY(ROUND(140*COTE1),ROUND(447*COTE2),'F3'); OUTTEXTXY(ROUND(290*COTE1),ROUND(447*COTE2),'F4'); OUTTEXTXY(ROUND(450*COTE1),ROUND(447*COTE2),'Ctr-S'); SETCOLOR(COLOR10); OUTTEXTXY(ROUND(140*COTE1),ROUND(447*COTE2),' =TOLERANCIA'); OUTTEXTXY(ROUND(290*COTE1),ROUND(447*COTE2),' =DOS SHELL'); OUTTEXTXY(ROUND(450*COTE1),ROUND(447*COTE2),' =ABANDONAR'); {fin de la informaci¢n} IF (CHIVATO1<>2) AND (RESALTO<>27) THEN BEGIN {para que no dibuje en magenta cuando estamos en ejecutar} SETFILLSTYLE(1,COLOR1); BAR(ROUND(85*COTE1),ROUND(20*COTE2),ROUND(195*COTE1),ROUND(40*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(100*COTE1),ROUND(27*COTE2),'CONFIGURAR') END; BAX:=1 END; (**********************************************************) PROCEDURE SALIDA_AL_DOS; BEGIN {$F+} RESTORECRTMODE; WINDOW(1,1,80,25); TEXTBACKGROUND(BLACK); TEXTCOLOR(WHITE); CURSORON; CLRSCR; WRITELN; WRITELN('PROGRAMA VERIFICACION DE CIRCUITOS 1.00'); WRITELN('Emilio Sahuquillo & Julio Martinez'); WRITELN('SALIDA AL DOS: teclee EXIT para retornar al programa...'); SWAPVECTORS; LOWVIDEO; EXEC(GETENV('COMSPEC'),''); SWAPVECTORS; SETGRAPHMODE(MODO); {$F-} {incluimos condici¢n para que si salimos de forma normal no redibuje dos veces} IF SALIDADOS=FALSE THEN BEGIN CALCULARDIRECTORIOACTUAL; REALIZA_INFORMACION; SETFILLSTYLE(1,COLOR1); BAR(ROUND(85*COTE1),ROUND(20*COTE2),ROUND(195*COTE1),ROUND(40*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(100*COTE1),ROUND(27*COTE2),'CONFIGURAR') END; SALTO:=8; SALIDADOS:=FALSE END; (**********************************************************) BEGIN EXITPROC:=@LIBERARMEMORIA; WRITELN('EVALUACION 1.00 ## (c)1992-93 ## JULIO MARTINEZ & EMILIO SAHUQUILLO'); WRITELN(' Verificaci¢n de circuitos electr¢nicos '); SALVAX:=WHEREX; SALVAY:=WHEREY; SALVARPANTALLA(PUNTEROPAN); TEXTMODE(C80); {inicializamos los punteros gr ficos} DATOS_PCLAB:=FALSE; PUNTERO1:=NIL; PUNTERO2:=NIL; PUNTERO3:=NIL; PUNTERO4:=NIL; PUNTERO5:=NIL; PUNTERO6:=NIL; PUNTERO7:=NIL; PUNTERO8:=NIL; CHECKSNOW:=TRUE; {Para el caso de adaptador CGA no} CREAR:='A DISCO: SI'; {se produzca nieve} TOLERANCIA:=15; DEFINIR_COLORES; {inicializaci¢n del modo gr fico} DRIVER:=DETECT; INITGRAPH(DRIVER,MODO,''); {introducimos rutina de busqueda de los ficheros graficos} IF GRAPHRESULT<>0 THEN BEGIN DRIVER:=DETECT; INITGRAPH(DRIVER,MODO,'C:\TP\BGI'); IF GRAPHRESULT<>0 THEN BEGIN DRIVER:=DETECT; INITGRAPH(DRIVER,MODO,'D:\TP\BGI'); IF GRAPHRESULT<>0 THEN BEGIN REPEAT TEXTCOLOR(LIGHTRED); WRITELN('NO SE ENCUENTRAN LOS FICHEROS DE ENTRADA AL MODO GRAFICO'); WRITELN(^g); TEXTCOLOR(WHITE); WRITELN('INTRODUCE INTRODUCE UNIDAD, CAMINO/VIA DE ACCESO A LOS ARCHIVOS'); WRITELN('(introduce "NADA" para salir)'); READLN(VER); FOR SALTO:=1 TO LENGTH(VER) DO VER[SALTO]:=UPCASE(VER[SALTO]); IF VER='NADA' THEN HALT; DRIVER:=DETECT; INITGRAPH(DRIVER,MODO,VER) UNTIL GRAPHRESULT=0 END END END; VALOX:=GETMAXX; COTE1:=VALOX/639; VALOY:=GETMAXY; COTE2:=VALOY/479; REPEAT BAX:=1; CHIVATO1:=1; BAY:=FALSE; CALCULARDIRECTORIOACTUAL; REALIZA_INFORMACION; ESC1:=FALSE; ESC2:=FALSE; ESC3:=FALSE; ESC4:=FALSE; IF (RESALTO=13) THEN BEGIN ESC3:=TRUE; ESC4:=TRUE END; CREADO1:=TRUE; CREADO2:=FALSE; 5: REPEAT; DESCARGARTECLADO; SALTO:=ORD(READKEY); REPEAT; 1: IF (SALTO=77) OR (BAY=TRUE) THEN BEGIN IF BAX=5 THEN BAX:=0; IF BAX=-1 THEN BAX:=4; IF BAX=0 THEN BEGIN PUTIMAGE(ROUND(35*COTE1),ROUND(20*COTE2),PUNTERO1^,COPYPUT); SETFILLSTYLE(1,COLOR1); BAR(ROUND(85*COTE1),ROUND(20*COTE2),ROUND(195*COTE1),ROUND(40*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(100*COTE1),ROUND(27*COTE2),'CONFIGURAR'); BAY:=FALSE; CHIVATO1:=1 END; IF BAX=1 THEN BEGIN PUTIMAGE(ROUND(35*COTE1),ROUND(20*COTE2),PUNTERO1^,COPYPUT); SETFILLSTYLE(1,COLOR1); BAR(ROUND(230*COTE1),ROUND(20*COTE2),ROUND(330*COTE1),ROUND(40*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(250*COTE1),ROUND(27*COTE2),'EJECUTAR'); BAY:=FALSE; CHIVATO1:=2 END; IF BAX=2 THEN BEGIN PUTIMAGE(ROUND(35*COTE1),ROUND(20*COTE2),PUNTERO1^,COPYPUT); SETFILLSTYLE(1,COLOR1); BAR(ROUND(365*COTE1),ROUND(20*COTE2),ROUND(460*COTE1),ROUND(40*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(380*COTE1),ROUND(27*COTE2),'APLICA-2'); BAY:=FALSE; CHIVATO1:=3 END; IF BAX=3 THEN BEGIN PUTIMAGE(ROUND(35*COTE1),ROUND(20*COTE2),PUNTERO1^,COPYPUT); SETFILLSTYLE(1,COLOR1); BAR(ROUND(500*COTE1),ROUND(20*COTE2),ROUND(575*COTE1),ROUND(40*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(520*COTE1),ROUND(27*COTE2),'SALIR'); BAY:=FALSE; CHIVATO1:=4 END; IF BAX=4 THEN BEGIN PUTIMAGE(ROUND(35*COTE1),ROUND(20*COTE2),PUNTERO1^,COPYPUT); SETFILLSTYLE(1,COLOR1); BAR(ROUND(48*COTE1),ROUND(20*COTE2),ROUND(72*COTE1),ROUND(40*COTE2)); SETFILLSTYLE(1,GREEN); PIESLICE(ROUND(60*COTE1),ROUND(30*COTE2),1,360,ROUND(7*COTE1)); SETCOLOR(WHITE); RECTANGLE(ROUND(51*COTE1),ROUND(21*COTE2),ROUND(69*COTE1),ROUND(39*COTE2)); BAY:=FALSE; CHIVATO1:=5 END; SALTO:=0; BAX:=BAX+1 END; IF SALTO=75 THEN BEGIN BAX:=BAX-2; BAY:=TRUE; IF BAX=-2 THEN BAX:=-1; GOTO 1 END; {por las teclas de funci¢n y combinadas} IF SALTO=19 THEN BEGIN ABANDONAR; IF PULSA IN ['S','s'] THEN HALT END; IF SALTO=61 THEN VALORTOLERANCIA; IF SALTO=62 THEN BEGIN SALIDA_AL_DOS; IF CHIVATO1=2 THEN BEGIN SETFILLSTYLE(1,COLOR1); BAR(ROUND(85*COTE1),ROUND(20*COTE2),ROUND(195*COTE1),ROUND(40*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(100*COTE1),ROUND(27*COTE2),'CONFIGURAR') END; BAX:=1 END UNTIL (SALTO<>62) UNTIL (SALTO=13) OR (SALTO=80); PUTIMAGE(ROUND(35*COTE1),ROUND(20*COTE2),PUNTERO1^,COPYPUT); IF CHIVATO1=1 THEN BEGIN IF (PUNTERO2=NIL) OR (CREADO1<>CREADO2) THEN BEGIN IF PUNTERO2<>NIL THEN FREEMEM(PUNTERO2,DIMENSION2); SETCOLOR(BLACK); SETFILLSTYLE(1,WHITE); BAR(ROUND(85*COTE1),ROUND(40*COTE2),ROUND(215*COTE1),ROUND(120*COTE2)); RECTANGLE(ROUND(90*COTE1),ROUND(45*COTE2),ROUND(205*COTE1),ROUND(110*COTE2)); SETLINESTYLE(0,1,3); SETCOLOR(7); LINE(ROUND(94*COTE1),ROUND(113*COTE2),ROUND(206*COTE1),ROUND(113*COTE2)); LINE(ROUND(208*COTE1),ROUND(48*COTE2),ROUND(208*COTE1),ROUND(114*COTE2)); SETLINESTYLE(0,0,1); SETCOLOR(BLACK); OUTTEXTXY(ROUND(100*COTE1),ROUND(55*COTE2),'FICHERO PSP'); OUTTEXTXY(ROUND(100*COTE1),ROUND(75*COTE2),CREAR); OUTTEXTXY(ROUND(100*COTE1),ROUND(95*COTE2),'TOLERANCIA'); DIMENSION2:=IMAGESIZE(ROUND(85*COTE1),ROUND(40*COTE2),ROUND(215*COTE1),ROUND(120*COTE2)); GETMEM(PUNTERO2,DIMENSION2); GETIMAGE(ROUND(85*COTE1),ROUND(40*COTE2),ROUND(215*COTE1),ROUND(120*COTE2),PUNTERO2^); SETFILLSTYLE(1,COLOR1); BAR(ROUND(95*COTE1),ROUND(50*COTE2),ROUND(195*COTE1),ROUND(65*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(100*COTE1),ROUND(55*COTE2),'FICHERO PSP'); CREADO1:=CREADO2 END ELSE BEGIN PUTIMAGE(ROUND(85*COTE1),ROUND(40*COTE2),PUNTERO2^,COPYPUT); IF ESC1=TRUE THEN BEGIN SETFILLSTYLE(1,COLOR1); BAR(ROUND(95*COTE1),ROUND(50*COTE2),ROUND(195*COTE1),ROUND(65*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(100*COTE1),ROUND(55*COTE2),'FICHERO PSP') END END END; IF (CHIVATO1=2) AND (EJECUTAR=FALSE) THEN BEGIN SETFILLSTYLE(1,7); BAR(ROUND(150*COTE1),ROUND(200*COTE2),ROUND(490*COTE1),ROUND(280*COTE2)); SETCOLOR(BLACK); RECTANGLE(ROUND(160*COTE1),ROUND(210*COTE2),ROUND(480*COTE1),ROUND(270*COTE2)); OUTTEXTXY(ROUND(190*COTE1),ROUND(220*COTE2),' NO DEFINIDO FICHERO PSP SOBRE'); OUTTEXTXY(ROUND(190*COTE1),ROUND(240*COTE2),' EL QUE EJECUTAR EL PROGRAMA'); SETCOLOR(COLOR4); OUTTEXTXY(ROUND(190*COTE1),ROUND(260*COTE2),' >>> ESCAPE SALIR'); FOR MES:=1 TO 5 DO BEGIN SOUND(1000); DELAY(100); SOUND(800); DELAY(80); NOSOUND END END; IF (CHIVATO1=2) AND (EJECUTAR= TRUE) THEN BEGIN RESTORECRTMODE; EJECUTA; SETGRAPHMODE(MODO); REALIZA_INFORMACION; SETFILLSTYLE(1,7); BAR(ROUND(150*COTE1),ROUND(200*COTE2),ROUND(490*COTE1),ROUND(280*COTE2)); SETCOLOR(BLACK); RECTANGLE(ROUND(160*COTE1),ROUND(210*COTE2),ROUND(480*COTE1),ROUND(270*COTE2)); SETCOLOR(COLOR4); OUTTEXTXY(ROUND(190*COTE1),ROUND(235*COTE2),'>>> PULSE ESCAPE PARA CONTINUAR'); BAX:=2;{para que se coloque en su lugar} END; IF CHIVATO1=3 THEN BEGIN IF PUNTERO3=NIL THEN BEGIN SETCOLOR(BLACK); SETFILLSTYLE(1,WHITE); BAR(ROUND(380*COTE1),ROUND(40*COTE2),ROUND(515*COTE1),ROUND(150*COTE2)); RECTANGLE(ROUND(385*COTE1),ROUND(45*COTE2),ROUND(505*COTE1),ROUND(140*COTE2)); SETLINESTYLE(0,1,3); SETCOLOR(7); LINE(ROUND(390*COTE1),ROUND(143*COTE2),ROUND(507*COTE1),ROUND(143*COTE2)); LINE(ROUND(508*COTE1),ROUND(49*COTE2),ROUND(508*COTE1),ROUND(144*COTE2)); SETLINESTYLE(0,0,1); SETCOLOR(BLACK); OUTTEXTXY(ROUND(400*COTE1),ROUND(60*COTE2),'FECHA'); OUTTEXTXY(ROUND(400*COTE1),ROUND(80*COTE2),'VER DIRECT'); OUTTEXTXY(ROUND(400*COTE1),ROUND(100*COTE2),'CH. DIRECT'); OUTTEXTXY(ROUND(400*COTE1),ROUND(120*COTE2),'LOCALIZAR'); DIMENSION3:=IMAGESIZE(ROUND(380*COTE1),ROUND(40*COTE2),ROUND(515*COTE1),ROUND(150*COTE2)); GETMEM(PUNTERO3,DIMENSION3); GETIMAGE(ROUND(380*COTE1),ROUND(40*COTE2),ROUND(515*COTE1),ROUND(150*COTE2),PUNTERO3^); SETFILLSTYLE(1,COLOR1); BAR(ROUND(390*COTE1),ROUND(55*COTE2),ROUND(500*COTE1),ROUND(70*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(400*COTE1),ROUND(60*COTE2),'FECHA') END ELSE BEGIN PUTIMAGE(ROUND(380*COTE1),ROUND(40*COTE2),PUNTERO3^,COPYPUT); IF ESC3=TRUE THEN BEGIN SETFILLSTYLE(1,COLOR1); BAR(ROUND(390*COTE1),ROUND(55*COTE2),ROUND(500*COTE1),ROUND(70*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(400*COTE1),ROUND(60*COTE2),'FECHA') END END END; IF CHIVATO1=4 THEN BEGIN IF PUNTERO4=NIL THEN BEGIN SETCOLOR(BLACK); SETFILLSTYLE(1,WHITE); BAR(ROUND(475*COTE1),ROUND(40*COTE2),ROUND(600*COTE1),ROUND(120*COTE2)); RECTANGLE(ROUND(480*COTE1),ROUND(45*COTE2),ROUND(590*COTE1),ROUND(110*COTE2)); SETCOLOR(BLACK); SETLINESTYLE(0,1,3); SETCOLOR(7); LINE(ROUND(485*COTE1),ROUND(113*COTE2),ROUND(592*COTE1),ROUND(113*COTE2)); LINE(ROUND(593*COTE1),ROUND(49*COTE2),ROUND(593*COTE1),ROUND(114*COTE2)); SETLINESTYLE(0,0,1); SETCOLOR(BLACK); OUTTEXTXY(ROUND(490*COTE1),ROUND(55*COTE2),'OSCILOSCOPIO'); OUTTEXTXY(ROUND(490*COTE1),ROUND(75*COTE2),'DOS-SHELL'); OUTTEXTXY(ROUND(490*COTE1),ROUND(95*COTE2),'ABANDONAR'); DIMENSION4:=IMAGESIZE(ROUND(475*COTE1),ROUND(40*COTE2),ROUND(600*COTE1),ROUND(120*COTE2)); GETMEM(PUNTERO4,DIMENSION4); GETIMAGE(ROUND(475*COTE1),ROUND(40*COTE2),ROUND(600*COTE1),ROUND(120*COTE2),PUNTERO4^); SETFILLSTYLE(1,COLOR1); BAR(ROUND(485*COTE1),ROUND(50*COTE2),ROUND(585*COTE1),ROUND(65*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(490*COTE1),ROUND(55*COTE2),'OSCILOSCOPIO') END ELSE BEGIN PUTIMAGE(ROUND(475*COTE1),ROUND(40*COTE2),PUNTERO4^,COPYPUT); IF ESC4=TRUE THEN BEGIN SETFILLSTYLE(1,COLOR1); BAR(ROUND(485*COTE1),ROUND(50*COTE2),ROUND(585*COTE1),ROUND(65*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(490*COTE1),ROUND(55*COTE2),'OSCILOSCOPIO') END END END; IF CHIVATO1=5 THEN BEGIN IF PUNTERO8=NIL THEN BEGIN SETFILLSTYLE(1,7); BAR(ROUND(180*COTE1),ROUND(100*COTE2),ROUND(460*COTE1),ROUND(280*COTE2)); SETCOLOR(BLACK); RECTANGLE(ROUND(190*COTE1),ROUND(110*COTE2),ROUND(450*COTE1),ROUND(270*COTE2)); SETLINESTYLE(0,1,3); SETCOLOR(BLACK); LINE(ROUND(195*COTE1),ROUND(273*COTE2),ROUND(452*COTE1),ROUND(273*COTE2)); LINE(ROUND(453*COTE1),ROUND(115*COTE2),ROUND(453*COTE1),ROUND(274*COTE2)); LINE(ROUND(220*COTE1),ROUND(216*COTE2),ROUND(427*COTE1),ROUND(216*COTE2)); LINE(ROUND(428*COTE1),ROUND(158*COTE2),ROUND(428*COTE1),ROUND(217*COTE2)); SETCOLOR(WHITE); SETLINESTYLE(0,0,1); SETTEXTSTYLE(2,0,5); IF GRAPHRESULT<>0 THEN SETTEXTSTYLE(0,0,1); SETCOLOR(COLOR4); OUTTEXTXY(ROUND(230*COTE1),ROUND(130*COTE2),'EVALUACION VERSION 1.00'); SETFILLSTYLE(1,LIGHTBLUE); BAR(ROUND(215*COTE1),ROUND(153*COTE2),ROUND(425*COTE1),ROUND(213*COTE2)); SETCOLOR(COLOR3); OUTTEXTXY(ROUND(245*COTE1),ROUND(160*COTE2),'JULIO MARTINEZ JUAN'); OUTTEXTXY(ROUND(310*COTE1),ROUND(175*COTE2),'&'); OUTTEXTXY(ROUND(230*COTE1),ROUND(190*COTE2),'EMILIO SAHUQUILLO DOBON'); OUTTEXTXY(ROUND(200*COTE1),ROUND(230*COTE2),'VALENCIA a 30 de MARZO de 1993'); SETCOLOR(COLOR4); OUTTEXTXY(ROUND(340*COTE1),ROUND(250*COTE2),'>>> Salir ESC'); DIMENSION8:=IMAGESIZE(ROUND(180*COTE1),ROUND(100*COTE2),ROUND(460*COTE1),ROUND(280*COTE2)); GETMEM(PUNTERO8,DIMENSION8); GETIMAGE(ROUND(180*COTE1),ROUND(100*COTE2),ROUND(460*COTE1),ROUND(280*COTE2),PUNTERO8^); SETCOLOR(WHITE); SETTEXTSTYLE(0,0,1) END ELSE PUTIMAGE(ROUND(180*COTE1),ROUND(100*COTE2),PUNTERO8^,COPYPUT) END; {inicializamos valores} BAX2:=1; CHIVATO2:=1; BAY2:=FALSE; BAX3:=1; CHIVATO3:=1; BAY3:=FALSE; BAX4:=1; CHIVATO4:=1; BAY4:=FALSE; REPEAT DESCARGARTECLADO; RESALTO:=ORD(READKEY); IF (CHIVATO1=2) AND ((RESALTO=27) OR (RESALTO=13)) THEN BEGIN SETFILLSTYLE(1,BLACK); BAR(ROUND(150*COTE1),ROUND(200*COTE2),ROUND(490*COTE1),ROUND(280*COTE2)) END; 2: IF ((CHIVATO1=1) AND (RESALTO=80)) OR (BAY2=TRUE) THEN BEGIN IF BAX2=3 THEN BAX2:=0; IF BAX2=-1 THEN BAX2:=2; IF BAX2=0 THEN BEGIN PUTIMAGE(ROUND(85*COTE1),ROUND(40*COTE2),PUNTERO2^,COPYPUT); SETFILLSTYLE(1,COLOR1); BAR(ROUND(95*COTE1),ROUND(50*COTE2),ROUND(195*COTE1),ROUND(65*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(100*COTE1),ROUND(55*COTE2),'FICHERO PSP'); BAY2:=FALSE; CHIVATO2:=1 END; IF BAX2=1 THEN BEGIN PUTIMAGE(ROUND(85*COTE1),ROUND(40*COTE2),PUNTERO2^,COPYPUT); SETFILLSTYLE(1,COLOR1); BAR(ROUND(95*COTE1),ROUND(70*COTE2),ROUND(195*COTE1),ROUND(85*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(100*COTE1),ROUND(75*COTE2),CREAR); BAY2:=FALSE; CHIVATO2:=2 END; IF BAX2=2 THEN BEGIN PUTIMAGE(ROUND(85*COTE1),ROUND(40*COTE2),PUNTERO2^,COPYPUT); SETFILLSTYLE(1,COLOR1); BAR(ROUND(95*COTE1),ROUND(90*COTE2),ROUND(195*COTE1),ROUND(105*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(100*COTE1),ROUND(95*COTE2),'TOLERANCIA'); BAY2:=FALSE; CHIVATO2:=3 END; RESALTO:=0; BAX2:=BAX2+1 END; IF (RESALTO=72) AND (CHIVATO1=1) THEN BEGIN BAX2:=BAX2-2; BAY2:=TRUE; IF BAX2=-2 THEN BAX2:=-1; GOTO 2 END; 3: IF ((CHIVATO1=3) AND (RESALTO=80)) OR (BAY3=TRUE) THEN BEGIN IF BAX3=4 THEN BAX3:=0; IF BAX3=-1 THEN BAX3:=3; IF BAX3=0 THEN BEGIN PUTIMAGE(ROUND(380*COTE1),ROUND(40*COTE2),PUNTERO3^,COPYPUT); SETFILLSTYLE(1,COLOR1); BAR(ROUND(390*COTE1),ROUND(55*COTE2),ROUND(500*COTE1),ROUND(70*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(400*COTE1),ROUND(60*COTE2),'FECHA'); BAY3:=FALSE; CHIVATO3:=1 END; IF BAX3=1 THEN BEGIN PUTIMAGE(ROUND(380*COTE1),ROUND(40*COTE2),PUNTERO3^,COPYPUT); SETFILLSTYLE(1,COLOR1); BAR(ROUND(390*COTE1),ROUND(75*COTE2),ROUND(500*COTE1),ROUND(90*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(400*COTE1),ROUND(80*COTE2),'VER DIRECT'); BAY3:=FALSE; CHIVATO3:=2 END; IF BAX3=2 THEN BEGIN PUTIMAGE(ROUND(380*COTE1),ROUND(40*COTE2),PUNTERO3^,COPYPUT); SETFILLSTYLE(1,COLOR1); BAR(ROUND(390*COTE1),ROUND(95*COTE2),ROUND(500*COTE1),ROUND(110*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(400*COTE1),ROUND(100*COTE2),'CH. DIRECT'); BAY3:=FALSE; CHIVATO3:=3 END; IF BAX3=3 THEN BEGIN PUTIMAGE(ROUND(380*COTE1),ROUND(40*COTE2),PUNTERO3^,COPYPUT); SETFILLSTYLE(1,COLOR1); BAR(ROUND(390*COTE1),ROUND(115*COTE2),ROUND(500*COTE1),ROUND(130*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(400*COTE1),ROUND(120*COTE2),'LOCALIZAR'); BAY3:=FALSE; CHIVATO3:=4 END; RESALTO:=0; BAX3:=BAX3+1 END; IF (RESALTO=72) AND (CHIVATO1=3) THEN BEGIN BAX3:=BAX3-2; BAY3:=TRUE; IF BAX3=-2 THEN BAX3:=-1; GOTO 3 END; 4: IF ((CHIVATO1=4) AND (RESALTO=80)) OR (BAY4=TRUE) THEN BEGIN IF BAX4=3 THEN BAX4:=0; IF BAX4=-1 THEN BAX4:=2; IF BAX4=0 THEN BEGIN PUTIMAGE(ROUND(475*COTE1),ROUND(40*COTE2),PUNTERO4^,COPYPUT); SETFILLSTYLE(1,COLOR1); BAR(ROUND(485*COTE1),ROUND(50*COTE2),ROUND(585*COTE1),ROUND(65*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(490*COTE1),ROUND(55*COTE2),'OSCILOSCOPIO'); BAY4:=FALSE; CHIVATO4:=1 END; IF BAX4=1 THEN BEGIN PUTIMAGE(ROUND(475*COTE1),ROUND(40*COTE2),PUNTERO4^,COPYPUT); SETFILLSTYLE(1,COLOR1); BAR(ROUND(485*COTE1),ROUND(70*COTE2),ROUND(585*COTE1),ROUND(85*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(490*COTE1),ROUND(75*COTE2),'DOS-SHELL'); BAY4:=FALSE; CHIVATO4:=2 END; IF BAX4=2 THEN BEGIN PUTIMAGE(ROUND(475*COTE1),ROUND(40*COTE2),PUNTERO4^,COPYPUT); SETFILLSTYLE(1,COLOR1); BAR(ROUND(485*COTE1),ROUND(90*COTE2),ROUND(585*COTE1),ROUND(105*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(490*COTE1),ROUND(95*COTE2),'ABANDONAR'); BAY4:=FALSE; CHIVATO4:=3 END; RESALTO:=0; BAX4:=BAX4+1 END; IF (RESALTO=72) AND (CHIVATO1=4) THEN BEGIN BAX4:=BAX4-2; BAY4:=TRUE; IF BAX4=-2 THEN BAX4:=-1; GOTO 4 END; {por las teclas de funci¢n y combinadas} IF RESALTO=19 THEN BEGIN ABANDONAR; IF PULSA IN ['S','s'] THEN HALT END; IF (RESALTO=61) AND (CHIVATO1<>2) THEN VALORTOLERANCIA; IF RESALTO=62 THEN BEGIN SALIDA_AL_DOS; CHIVATO1:=1; RESALTO:=27 END UNTIL (RESALTO=13) OR (RESALTO=27); IF RESALTO=27 THEN BEGIN IF PUNTERO5=NIL THEN BEGIN SETFILLSTYLE(1,BLACK); BAR(ROUND(35*COTE1),ROUND(41*COTE2),ROUND(600*COTE1),ROUND(150*COTE2)); DIMENSION5:=IMAGESIZE(ROUND(35*COTE1),ROUND(41*COTE2),ROUND(600*COTE1),ROUND(150*COTE2)); GETMEM(PUNTERO5,DIMENSION5); GETIMAGE(ROUND(35*COTE1),ROUND(41*COTE2),ROUND(600*COTE1),ROUND(150*COTE2),PUNTERO5^) END ELSE PUTIMAGE(ROUND(35*COTE1),ROUND(41*COTE2),PUNTERO5^,COPYPUT); IF CHIVATO1=1 THEN BEGIN SETFILLSTYLE(1,COLOR1); BAR(ROUND(85*COTE1),ROUND(20*COTE2),ROUND(195*COTE1),ROUND(40*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(100*COTE1),ROUND(27*COTE2),'CONFIGURAR'); ESC1:=TRUE END; IF CHIVATO1=2 THEN BEGIN SETFILLSTYLE(1,COLOR1); BAR(ROUND(230*COTE1),ROUND(20*COTE2),ROUND(330*COTE1),ROUND(40*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(250*COTE1),ROUND(27*COTE2),'EJECUTAR'); ESC2:=TRUE END; IF CHIVATO1=3 THEN BEGIN SETFILLSTYLE(1,COLOR1); BAR(ROUND(365*COTE1),ROUND(20*COTE2),ROUND(460*COTE1),ROUND(40*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(380*COTE1),ROUND(27*COTE2),'APLICA-2'); ESC3:=TRUE END; IF CHIVATO1=4 THEN BEGIN SETFILLSTYLE(1,COLOR1); BAR(ROUND(500*COTE1),ROUND(20*COTE2),ROUND(575*COTE1),ROUND(40*COTE2)); SETCOLOR(WHITE); OUTTEXTXY(ROUND(520*COTE1),ROUND(27*COTE2),'SALIR'); ESC4:=TRUE END; IF CHIVATO1=5 THEN BEGIN SETFILLSTYLE(1,BLACK); BAR(ROUND(180*COTE1),ROUND(100*COTE2),ROUND(460*COTE1),ROUND(280*COTE2)); SETFILLSTYLE(1,COLOR1); BAR(ROUND(48*COTE1),ROUND(20*COTE2),ROUND(72*COTE1),ROUND(40*COTE2)); SETFILLSTYLE(1,GREEN); PIESLICE(ROUND(60*COTE1),ROUND(30*COTE2),1,360,ROUND(7*COTE1)); SETCOLOR(WHITE); RECTANGLE(ROUND(51*COTE1),ROUND(21*COTE2),ROUND(69*COTE1),ROUND(39*COTE2)); ESC5:=TRUE END; GOTO 5 END; IF (RESALTO=13) AND (CHIVATO1=1) AND (CHIVATO2=1) THEN BEGIN RESTORECRTMODE; CLRSCR; FICHERO_PSPICE; SETGRAPHMODE(MODO) END; IF (RESALTO=13) AND (CHIVATO2=2) THEN BEGIN IF CREAR='A DISCO: SI' THEN CREAR:='A DISCO: NO' ELSE CREAR:='A DISCO: SI'; IF CREADO1=TRUE THEN CREADO2:=FALSE; IF CREADO1=FALSE THEN CREADO2:=TRUE END; IF (RESALTO=13) AND (CHIVATO2=3) THEN VALORTOLERANCIA; IF (RESALTO=13) AND (CHIVATO1=3) AND (CHIVATO3=1) THEN BEGIN RESTORECRTMODE; FECHA; SETGRAPHMODE(MODO) END; IF (RESALTO=13) AND (CHIVATO3=2) THEN BEGIN RESTORECRTMODE; WINDOW(1,1,80,25); TEXTBACKGROUND(COLOR5); CLRSCR; REPEAT CURSORON; WINDOW(1,1,80,25); CLRSCR; DIBUJARCUADRO(2,1,79,25,WHITE,COLOR5); GOTOXY(3,2); TEXTCOLOR(COLOR6); WRITELN('INTRODUCE UNIDAD, CAMINO Y PARAMETROS SOBRE LOS QUE LISTAR'); GOTOXY(3,3); WRITE('(pulsa INTRO para ver ayuda)'); IF LENGTH(DIRECTORIO)<30 THEN WRITELN(' DTO. actual : ',DIRECTORIO); RAYA_HORIZONTAL(2,79,4,WHITE); TEXTCOLOR(COLOR6); WINDOW(3,5,78,24); DESCARGARTECLADO; READLN(VER); SWAPVECTORS; EXEC('ESPACIO1.EXE',VER); ERRORDIRECTORIO:=DOSERROR; IF ERRORDIRECTORIO=2 THEN BEGIN CURSOROFF; ERROR(32761) END; IF (ERRORDIRECTORIO<>0) AND (ERRORDIRECTORIO<>2) THEN BEGIN CURSOROFF; ERROR(ERRORDIRECTORIO) END; SWAPVECTORS; CURSOROFF; TEXTBACKGROUND(COLOR5); TEXTCOLOR(COLOR11); IF ERRORDIRECTORIO<>0 THEN GOTOXY(1,20); WRITE('pulsa CUALQUIER TECLA para repetir, ESCAPE para salir'); TEXTCOLOR(COLOR6); DESCARGARTECLADO; VER:=READKEY UNTIL VER=#27; SETGRAPHMODE(MODO) END; IF (RESALTO=13) AND (CHIVATO3=3) THEN CAMBIARDIRECTORIO; IF (RESALTO=13) AND (CHIVATO3=4) THEN BEGIN RESTORECRTMODE; WINDOW(1,1,80,25); TEXTBACKGROUND(COLOR5); CLRSCR; REPEAT CURSORON; WINDOW(1,1,80,25); CLRSCR; DIBUJARCUADRO(2,1,79,25,WHITE,COLOR5); GOTOXY(3,2); TEXTCOLOR(COLOR6); WRITELN('INTRODUCE UNIDAD, CAMINO Y/O ESPECIFICADOR'); GOTOXY(3,3); WRITE('(pulsa INTRO para ver ayuda)'); IF LENGTH(DIRECTORIO)<30 THEN WRITELN(' DTO. actual : ',DIRECTORIO); RAYA_HORIZONTAL(2,79,4,WHITE); TEXTCOLOR(COLOR6); WINDOW(3,5,78,24); DESCARGARTECLADO; READLN(VER); SWAPVECTORS; EXEC('LOCALIZA.EXE',VER); ERRORDIRECTORIO:=DOSERROR; IF ERRORDIRECTORIO=2 THEN BEGIN CURSOROFF; ERROR(32760) END; IF (ERRORDIRECTORIO<>0) AND (ERRORDIRECTORIO<>2) THEN BEGIN CURSOROFF; ERROR(ERRORDIRECTORIO) END; SWAPVECTORS; CURSOROFF; TEXTBACKGROUND(COLOR5); TEXTCOLOR(COLOR11); IF ERRORDIRECTORIO<>0 THEN GOTOXY(1,20); WRITE('pulsa CUALQUIER TECLA para repetir, ESCAPE para salir'); TEXTCOLOR(COLOR6); DESCARGARTECLADO; VER:=READKEY UNTIL VER=#27; SETGRAPHMODE(MODO) END; IF (RESALTO=13) AND (CHIVATO4=2) THEN BEGIN SALIDADOS:=TRUE; SALIDA_AL_DOS END; IF (RESALTO=13) AND (CHIVATO4=1) AND (CHIVATO1=4) THEN BEGIN VISUALIZACION_DE_ONDAS; MODO:=GETMAXMODE; SETGRAPHMODE(MODO) END; IF BAX4=3 THEN BEGIN ABANDONAR; IF PULSA IN ['S','s'] THEN HALT; IF PULSA IN ['N','n'] THEN BAX4:=1 END; CLEARVIEWPORT; UNTIL BAX4=3; CLOSEGRAPH; LIBERARMEMORIA; LOWVIDEO; TEXTMODE(C80); END.