10 REM *******************************************
20 REM * * 30 REM * TRACEUR D'OSCILLOGRAMMES * 40 REM * * 50 REM * Jacques CHARRIER * 60 REM * * 70 REM * Picosoft 1987 * 80 REM * * 90 REM ******************************************* 100 ' 110 REM * Initialisation * 120 ' 130 INK 1,0:INK 0,26:BORDER 2:MODE 2:i$=CHR$(24) 140 REM Definition de la touche 17 ( [ ) -> ( mu pour micro) 150 KEY DEF 17,0,183:REM effectuer un RUN apres ecriture de cette ligne 160 REM Apres RUN, ( [ ) devient ( 7 ) mu sur l'ecran et 7 pour l'imprimante 170 REM L'imprimante DMP2000 remplace le caractere 183 par chr$(183-&80)="7" 180 REM Dans la ligne suivante, dans W$ le 7 est un mu. pressez ( [ ) 190 w$="pn搶 kMG" 200 REM Les autres" mu " seront signales dans le listing (4950) 210 DEFINT h,i,j,k,m,n,p:DIM y1(100):DIM y2(100):modif=0 220 ON BREAK GOSUB 5320 230 MEMORY &A4FF:IF PEEK(&A500) <> 205 THEN GOSUB 5170 240 DIM cal$(12):DIM vit$(22):DIM cal(12):DIM VIT(22):INK 1,26 250 I=5:J=5:K=10:v1=160:v2=160:REM I voie 1,J voie 2,K vit bal 260 GOSUB 4850:REM Enregistre les calibres et les vitesses de balayages 270 GOSUB 5020:REM Definition des touches de fonction 280 GOSUB 2610:REM Affichage des fenetres 290 GOSUB 2520:REM trace la grille ecran 300 GOSUB 2850:REM Affichage calibre voie 1 310 GOSUB 2880:REM Affichage calibre voie 2 320 GOSUB 2910:REM Affichage vitesse de balayage 330 GOSUB 1190:REM Constitution du circuit 340 ' 350 REM * Boucle attente d'une commande * 360 ' 370 GOSUB 5350:REM Get A$ 380 IF A$="A" THEN GOSUB 4510 :REM Aide 390 IF A$="F" AND SI=1 THEN GOSUB 1490 400 IF A$="E" AND SI=2 THEN GOSUB 2520:GOSUB 1910:GOSUB 1850 410 IF A$="M" THEN GOSUB 3770 420 IF ASC(A$)>238 OR ASC(A$)<222 THEN A$="":GOTO 370 430 COM=239-ASC(A$):a$="" 440 ON com GOSUB 490,520,550,580,610,640,1190,1310,670,690,710,770,830, 950,1010,1070,1130 450 GOTO 370 460 ' 470 REM * Execution des commandes * 480 ' 490 REM vit bal croit 500 IF k<22 THEN k=k+1:GOSUB 2910:ON SI GOTO 1540,1780 510 RETURN 520 REM vit bal decroit 530 IF k>1 THEN k=k-1::GOSUB 2910:ON SI GOTO 1540,1780 540 RETURN 550 REM cal 2 decroit 560 IF J>1 THEN J=J-1:GOSUB 2520:GOTO 2880 570 RETURN 580 REM cal 2 croit 590 IF J<12 THEN J=J+1:GOSUB 2520:GOTO 2880 600 RETURN 610 REM cal 1 decroit 620 IF I>1 THEN I=I-1:GOSUB 2520:GOTO 2850 630 RETURN 640 REM cal 1 croit 650 IF I<12 THEN I=I+1:GOSUB 2520:GOTO 2850 660 RETURN 670 REM copie d'ecran 680 CALL &A500::PRINT #8,CHR$(27);CHR$(64):RETURN 690 REM efface la courbe 700 GOTO 2520 710 REM trace voie 1 720 GOSUB 2910 730 ORIGIN 120,64+v1,120,520,384,64 :PLOT 0,0 740 FOR n=0 TO 100 750 DRAW 4*n,y1(n)*Y1m/cal(I),1 760 NEXT:RETURN 770 REM trace voie 2 780 GOSUB 2910 790 ORIGIN 120,64+v2,120,520,384,64 :PLOT 0,0 800 FOR n=0 TO 100 810 DRAW 4*n,y2(n)*Y2m/cal(j),1 820 NEXT:RETURN 830 REM trace en X.Y 840 ORIGIN 320,224,120,520,384,64:PLOT 0,0 850 LOCATE#3,2,8:PRINT#3," X . Y " 860 MOVE y1(0)*Y1m/cal(i),y2(0)*Y2m/cal(j) 870 FOR n=0 TO 100 880 DRAW y1(n)*Y1m/cal(i),y2(n)*Y2m/cal(j),1 890 NEXT 900 RETURN 910 REM Dans les 4 sous-programmes qui suivent, figurent des caracteres de 920 REM controle qui seront affiches sur l'ecran mais pas sur le listing 930 REM PRINT" " est en fait PRINT"CTRL I" 940 REM PRINT":est en fait PRINT"CTRL H": 950 REM origine v1 monte 960 IF v1<320 THEN v1=v1+1 970 ORIGIN 105,64,105,520,384,64 980 TAG:MOVE 0,v1+8:PRINT"1";:MOVE 7,v1+8 990 PRINT" ";:TAGOFF:REM Print"CTRL I" pour fleche -> 1000 RETURN 1010 REM origine v2 monte 1020 IF v2<320 THEN v2=v2+1 1030 ORIGIN 120,64,120,535,384,64 1040 TAG:MOVE 401,v2+8:PRINT"";:REM PRINT"CTRL H" pour fleche <- 1050 MOVE 407,v2+8:PRINT"2";:TAGOFF 1060 RETURN 1070 REM origine v1 descend 1080 IF v1>0 THEN v1=v1-1 1090 ORIGIN 105,64,105,520,384,64 1100 TAG:MOVE 0,v1+24:PRINT" ";:MOVE 0,v1+8:PRINT"1"; 1110 MOVE 7,v1+8:PRINT" ";:TAGOFF:REM PRINT"CTRL I" pour fleche -> 1120 RETURN 1130 REM origine v2 descend 1140 IF v2>0 THEN v2=v2-1 1150 ORIGIN 120,64,120,535,384,64 1160 TAG:MOVE 407,v2+24:PRINT" ";:MOVE 407,v2+8:PRINT"2"; 1170 MOVE 401,v2+8:PRINT"";:TAGOFF:REM PRINT"CTRL H" pour fleche <- 1180 RETURN 1190 REM constitution du circuit et choix du signal 1200 CLS #4:GOSUB 2520:INK 1,0 1210 LOCATE #4,2,4:PRINT#4,i$;" Constitution du circuit " ; 1220 PRINT #4,": pressez RETURN pour valider un choix ou une donnee ";i$; 1230 FOR n=0 TO 3:R(n)=0:C(n)=0:L(n)=0:NEXT:m=-1 1240 CALL &BB06: CLS #4 1250 LOCATE 29,1:PRINT i$;" Constitution du circuit ";i$; 1260 ORIGIN 0,0,0,639,0,399:MOVE 115,26 1270 DEG:FOR ang=0 TO 360 STEP 10:DRAWR 2*SIN(ang),2*COS(ang):NEXT:RAD 1280 ORIGIN 120,26:MOVE 8,-15:DRAWR 0,-10:MOVE 8,15:DRAWR 0,10 1290 GOSUB 3150:REM resistance interne du generateur 1300 GOSUB 2990:REM Constitution du circuit 1310 REM Choix du signal 1320 CLS #5:LOCATE#4,2,1:PRINT#4,i$;" Signal ";i$ 1330 LOCATE#4,1,2:PRINT#4, " Sinusoidal ? "; 1340 LOCATE #4,1,3:PRINT#4,;" Echelon ? "; 1350 LOCATE #4,1,4:PRINT#4,;" ( S / E ) "; 1360 GOSUB 5350:REM Get A$ 1370 IF A$="S" THEN Si=1:GOTO 1410 1380 IF A$="E" THEN si=2:GOTO 1680 1390 GOTO 1360 1400 ' 1410 REM * Signal sinusoidal * 1420 ' 1430 ORIGIN 120,26,120,135,19,35:CLG:ORIGIN 120,26,0,639,0,399:CLS #5:CLS #6 1440 DEG:FOR ang=0 TO 360 STEP 30:DRAW ang/30,4*SIN(ang):NEXT:RAD 1450 WINDOW #7,4,13,23,23:CLS #7 1460 LOCATE #5,1,2:PRINT #5,"Vem":INPUT #7,"=",amp 1470 IF (amp<0.005) OR (amp>40) THEN 1450 1480 v=amp:GOSUB 2940:LOCATE #4,1,2:PRINT#4,"Vem=";SCI$;"V" 1490 WINDOW #7,4,13,25,25:CLS #7 1500 LOCATE#5,1,4:PRINT #5," F ":INPUT #7,"=",F 1510 IF (F<0.1) OR (F>10000000) THEN 1490 1520 GOSUB 4360:REM ajustement vitesse de balayage 1530 v=f:GOSUB 2940:LOCATE #4,1,4:PRINT#4," F =";SCI$;"Hz";:omega=2*PI*f 1540 GOSUB 4210:REM Calcul des impedances 1550 v=v1m:GOSUB 2940:LOCATE#4,67,2:PRINT#4,"V1m=";SCI$;"V"; 1560 v=v2m:GOSUB 2940:LOCATE#4,67,4:PRINT#4,"V2m=";SCI$;"V"; 1570 GOSUB 4400 :REM Ajustement des calibres 1580 REM Calcul y1 et y2 1590 GOSUB 2520:LOCATE 37,1:PRINT i$;" Calcul ";i$; 1600 st=vit(K)/10:t=0 1610 FOR n=0 TO 100 1620 y1(n)=SIN(omega*t):y2(n)=SIN(omega*t+fi) 1630 t=t+st:NEXT 1640 LOCATE 37,1:PRINT "________";CHR$(7); 1650 Y1m=40*v1m:Y2m=40*v2m:GOSUB 710:GOSUB 770:REM trace 1 et 2 1660 RETURN 1670 ' 1680 REM * Echelon de tension * 1690 ' 1700 ORIGIN 120,26,120,135,18,35:CLG:ORIGIN 120,26,0,639,0,399:CLS #5:CLS #6 1710 MOVE 0,-4:DRAWR 4,0,1:DRAWR 0,8,1:DRAWR 8,0,1 1720 omega=1: GOSUB 4210:REM Calcul des impedances 1730 IF C<>0 AND L=0 THEN GOSUB 1970 :REM circuit R C 1740 IF C=0 AND L<>0 THEN GOSUB 2080:REM circuit R L 1750 IF C<>0 AND L<>0 THEN GOSUB 2170:REM circuit R L C 1760 IF (C=0) AND (L=0) THEN DEF FNUNE=SR1/SRT:DEF FNDEU=SR2/SRT: F=1000:GOSUB 4360 1770 IF modif=0 THEN GOSUB 1910:REM demande hauteur echelon 1780 st=vit(k)/10:t=0:Ymax1=0:Ymax2=0:modif=0 1790 GOSUB 2520:LOCATE 37,1:PRINT i$;" Calcul ";i$; 1800 FOR n=0 TO 100 1810 y1(n)=FNUNE:y2(n)=FNDEU 1820 Ymax1=MAX(y1(n),Ymax1):Ymax2=MAX(y2(n),Ymax2) 1830 t=t+st:NEXT 1840 LOCATE 37,1:PRINT "________";CHR$(7); 1850 REM affiche les valeurs maxi 1860 v1m=YMax1*amp:v2m=YMax2*amp:GOSUB 4400:REM aj. calibres 1870 v=v1m:GOSUB 2940:LOCATE#4,67,2:PRINT#4,"V1m=";SCI$;"V"; 1880 v=v2m:GOSUB 2940:LOCATE#4,67,4:PRINT#4,"V2m=";SCI$;"V"; 1890 Y1m=40*amp:Y2m=40*amp:GOSUB 710:GOSUB 770:REM trace 1 et 2 1900 RETURN 1910 REM Hauteur echelon 1920 WINDOW #7,4,13,24,24:CLS #7 1930 LOCATE #5,1,3:PRINT #5," E ";:INPUT #7,"=",amp 1940 IF (amp<0.005) OR (amp>40) THEN 1920 1950 CLS #5:v=amp:GOSUB 2940:LOCATE #4,1,3:PRINT#4," E =";SCI$;"V" 1960 RETURN 1970 REM circuit R C 1980 B1=SR1/SRT:B2=SR2/SRT:A1=0:A2=0:tau=SRT*C 1990 FOR p=m1 TO m 2000 IF C(p)<>0 THEN A1=A1+C/C(p):B1=B1-C/C(p) 2010 NEXT 2020 FOR p=m2 TO m 2030 IF C(p)<>0 THEN A2=A2+C/C(p):B2=B2-C/C(p) 2040 NEXT 2050 f=1/3/tau:GOSUB 4360 2060 DEF FNUNE=A1+B1*EXP(-t/tau):DEF FNDEU=A2+B2*EXP(-t/tau) 2070 RETURN 2080 REM circuit R L 2090 tau=L/SRT:A1=0:A1=SR1/SRT:B1=-A1:A2=SR2/SRT:B2=-A2 2100 FOR p=m1 TO m 2110 IF L(p)<>0 THEN B1=B1+L(p)/L 2120 NEXT 2130 FOR p=m2 TO m 2140 IF L(p)<>0 THEN B2=B2+L(p)/L 2150 NEXT 2160 GOTO 2050:REM cf circuit R C 2170 REM circuit R L C 2180 Tau=2*L/SRT:A1=0:A2=0:B1=0:B2=0:C1=0:C2=0 2190 D=1/(L*C) -(SRT/(2*L))^2: 2200 IF D>0 THEN GOSUB 2340:REM Regime pseudo-periodique 2210 IF D<0 THEN GOSUB 2400:REM Regime aperodique 2220 IF D=0 THEN GOSUB 2440:REM Regime critique 2230 FOR p=m1 TO m 2240 IF R(p) <> 0 THEN B1=R(p)/L/omega+B1 2250 IF L(p) <> 0 THEN B1=B1-L(p)/(L*tau*omega):C1=C1+L(p)/L 2260 IF C(P) <> 0 THEN B1=B1-C/(C(p)*tau*omega):C1=C1-C/C(p):A1=A1+C/C(p) 2270 NEXT 2280 FOR p=m2 TO m 2290 IF R(p) <> 0 THEN B2=R(p)/L/omega+B2 2300 IF L(p) <> 0 THEN B2=B2-L(p)/(L*tau*omega):C2=C2+L(p)/L 2310 IF C(P) <> 0 THEN B2=B2-C/(C(p)*tau*omega):C2=C2-C/C(p):A2=A2+C/C(p) 2320 NEXT 2330 RETURN 2340 REM Regime pseudo periodique 2350 omega=SQR(D):f=(1/tau+omega/2/PI)/4:GOSUB 4360:REM Aj. Vt balayage 2360 DEF FNUNE=A1+(B1*SIN(omega*t)+C1*COS(omega*t))*EXP(-t/tau) 2370 DEF FNDEU=A2+(B2*SIN(omega*t)+C2*COS(omega*t))*EXP(-t/tau) 2380 RETURN 2390 REM Regime aperiodique 2400 omega=SQR(-D):f=(1/tau-omega)/3:GOSUB 4360:w1=-3*f:w2=-omega-1/tau 2410 DEF FNUNE=A1+((B1+C1)*EXP(w1*t)+(C1-B1)*EXP(w2*t))/2 2420 DEF FNDEU=A2+((B2+C2)*EXP(w1*t)+(C2-B2)*EXP(w2*t))/2 2430 RETURN 2440 REM Regime critique 2450 omega=1:f=1/4/tau:GOSUB 4360:REM Aj. Vt balayage 2460 DEF FNUNE=A1+(B1*t+C1)*EXP(-t/tau) 2470 DEF FNDEU=A2+(B2*t+C2)*EXP(-t/tau) 2480 RETURN 2490 ' 2500 REM * Module de gestion de l'ecran * 2510 ' 2520 REM Trace la grille Ecran 2530 ORIGIN 120,64,120,520,384,64 :CLG 2540 FOR n=0 TO 8:MOVE 0,n*40:DRAWR 400,0:NEXT 2550 FOR n=0 TO 10:MOVE n*40,0:DRAWR 0,320:NEXT 2560 FOR n=0 TO 50 :MOVE 8*n,156:DRAWR 0,8:NEXT 2570 FOR n=0 TO 40 :MOVE 196,8*n:DRAWR 8,0:NEXT 2580 FOR n=0 TO 50 : PLOT 8*n,64,1:PLOT 8*n,256,1:NEXT 2590 GOSUB 970:GOSUB 1030:REM Affiche les origines des voies 2600 RETURN 2610 REM Definition des fenetres d'affichage 2620 WINDOW #1,1,15,2,11:WINDOW #2,1,14,13,22 2630 WINDOW #3,67,80,2,22:WINDOW #4,1,79,22,25:CLS #4 2640 WINDOW #5,1,13,22,25:WINDOW #6,66,79,22,25 2650 CLS #1:LOCATE #1,1,2:PRINT#1," Voie 1 & X " 2660 LOCATE #1,4,4:PRINT #1,"Calibre" 2670 LOCATE #1,4,8:PRINT#1,i$;"f1";i$;CHR$(241);" ";i$;"f4";i$;CHR$(240) 2680 CLS #2:LOCATE #2,1,2:PRINT#2," Voie 2 & Y " 2690 LOCATE #2,4,4:PRINT #2,"Calibre" 2700 LOCATE #2,4,8:PRINT#2,i$;"f2";i$;CHR$(241);" ";i$;"f5";i$;CHR$(240) 2710 CLS #3:LOCATE #3,1,2:PRINT #3," Vitesse " 2720 LOCATE #3,7,4:PRINT #3,"de" 2730 LOCATE #3,4,6:PRINT #3,"balayage " 2740 LOCATE #3,5,10:PRINT #3,i$;"f3";i$;CHR$(241) 2750 LOCATE #3,9,10:PRINT #3,i$;"f6";i$;CHR$(240) 2760 LOCATE #3,4,12:PRINT #3,i$;"A ";i$;" Aide " 2770 LOCATE #3,4,14:PRINT #3,i$;"f7";i$;" Trace " 2780 LOCATE #3,4,16:PRINT #3,i$;"f8";i$;" CLG " 2790 LOCATE #3,4,18:PRINT #3,i$;"f9";i$;" Hcop " 2800 ORIGIN 0,0,0,639,0,399 2810 MOVE 6,384:DRAWR 97,0:DRAWR 0,-150:DRAWR -97,0:DRAWR 0,150 2820 MOVE 6,214:DRAWR 97,0:DRAWR 0,-150:DRAWR -97,0:DRAWR 0,150 2830 MOVE 535,384: DRAWR 96,0:DRAWR 0,-320:DRAWR -96,0:DRAWR 0,320 2840 RETURN 2850 REM affiche le calibre de la voie 1 2860 LOCATE#1,2,6:PRINT#1,cal$(I);" / div" 2870 RETURN 2880 REM affiche le calibre de la voie 2 2890 LOCATE #2,2,6:PRINT #2,cal$(J);" / div" 2900 RETURN 2910 REM Affiche la vitesse de balayage 2920 LOCATE #3,2,8:PRINT #3,vit$(K);" / div" 2930 RETURN 2940 REM * mise sous forme scientifique de la valeur v * 2950 v=(v+v*0.000001)*1000000000098304: h=INT(LOG10(v)/3) 2960 sci$=LEFT$(STR$(v/(10^(3*h))),5)+" "+MID$(w$,h,1) 2970 RETURN 2980 ' 2990 REM * Constitution du circuit * 3000 ' 3010 IF m=3 THEN GOTO 3520 3020 CLS #5:PEN #7,1:PAPER #7,0 3030 LOCATE#5,2,1:PRINT #5,i$;"R";i$;"esistance "; 3040 LOCATE#5,2,2:PRINT #5,i$;"S";i$;"elf "; 3050 LOCATE#5,2,3:PRINT #5,i$;"C";i$;"apacite "; 3060 LOCATE#5,2,4:PRINT #5,i$;"F";i$;"in" 3070 GOSUB 5340: REM get A$ 3080 IF A$="R" THEN GOSUB 3140 3090 IF A$="S" THEN GOSUB 3250 3100 IF A$="C" THEN GOSUB 3420 3110 IF A$="F" THEN GOSUB 3520:GOTO 3130 3120 GOTO 3010 3130 RETURN 3140 REM * Resistance * 3150 m=m+1:CLS #5:LOCATE #5,2,1:PRINT #5,i$;" Resistance ";i$; 3160 WINDOW #7,4,13,24,24:CLS #7 3170 LOCATE #5,2,3:PRINT #5,"R";CHR$(48+m);:INPUT #7,"=",R(m) 3180 IF (R(m)<0.1) OR (R(m)>=999000000) THEN 3160 3190 DRAWR 20,0:DRAWR 2,2 3200 FOR n=1 TO 7:DRAWR 4,-4:DRAWR 4,4:NEXT 3210 DRAWR 2,-2: DRAWR 17,0 3220 v=R(m):GOSUB 2950:LOCATE #4,19+m*12,3:PRINT #4,sci$;CHR$(191) 3230 C(m)=0:L(m)=0 3240 RETURN 3250 REM * Self * 3260 m=m+1:CLS #5:LOCATE #5,2,1:PRINT #5,i$;" Self ";i$; 3270 WINDOW #7,4,13,23,23:CLS #7 3280 LOCATE #5,2,2:PRINT #5,"L";CHR$(48+m);:INPUT #7,"=",L(m) 3290 IF (L(m)<0.000001) OR (L(m)>1000) THEN 3270 3300 LOCATE #5,2,3:PRINT #5,i$;" Resistance ";i$; 3310 WINDOW #7,4,13,25,25:CLS #7 3320 LOCATE #5,2,4:PRINT #5,"R";CHR$(48+m);:INPUT #7,"=",R(m) 3330 IF (R(m)<0.1) OR (R(m)>10000000) THEN 3310 3340 DRAWR 20,0:DRAWR 2,2 3350 FOR n=1 TO 7:DRAWR 6,-6:DRAWR 0,-1:DRAWR -2,-2 3360 DRAWR -2,2:DRAWR 0,1:DRAWR 6,6:NEXT 3370 DRAWR 2,-2: DRAWR 17,0 3380 v=L(m):GOSUB 2950:LOCATE #4,19+m*12,3:PRINT #4,sci$;"H" 3390 v=R(m):GOSUB 2950:LOCATE #4,19+m*12,4:PRINT #4,sci$;CHR$(191) 3400 C(m)=0 3410 RETURN 3420 REM * Capacite * 3430 m=m+1:CLS #5:LOCATE #5,2,1:PRINT #5,i$;" Capacite ";i$; 3440 WINDOW #7,4,13,24,24:CLS #7 3450 LOCATE #5,2,3:PRINT #5,"C";CHR$(48+m);:INPUT #7,"=",C(m) 3460 IF (C(m)<0) OR (C(m)>0.003) THEN 3440 3470 DRAWR 46,0:MOVER 0,-6:DRAWR 0,12:MOVER 1,0:DRAWR 0,-12:MOVER 6,0 3480 DRAWR 0,12:MOVER 1,0:DRAWR 0,-12:MOVER 0,6:DRAWR 43,0 3490 v=C(m):GOSUB 2950:LOCATE #4,19+m*12,3:PRINT #4,sci$;"F" 3500 R(m)=0 3510 RETURN 3520 REM * fin * 3530 IF m<2 THEN GOTO 2990 3540 CLS #5:LOCATE 29,1:PRINT"____________________________" 3550 DRAWR 0,-51:DRAWR -(m+1)*97,0:GOSUB 5020 3560 FOR n=0 TO m-1:LOCATE #4,29+n*12,2:PRINT#4,i$;CHR$(65+n);i$;:NEXT 3570 LOCATE #4,68,2:PRINT#4,;i$;"Choix V1 ";i$; 3580 A$=UPPER$(INKEY$): n=n+1 3590 IF N>10 THEN LOCATE#4,77,2:PRINT#4,I$;CHR$(65+RND(1)*(m-1));i$;:n=0 3600 IF A$="" THEN 3580 3610 m1=ASC(A$)-64 3620 IF m1<1 OR m1>m THEN PRINT CHR$(7):GOTO 3580 3630 LOCATE #4,77,2:PRINT#4,i$;a$;i$; 3640 LOCATE #4,68,4:PRINT#4,;i$;"Choix V2 ";i$;:li=4 3650 A$=UPPER$(INKEY$): n=n+1 3660 IF n>10 THEN LOCATE#4,77,4:PRINT#4,i$;CHR$(65+RND(1)*(m-1));i$;:n=0 3670 IF A$="" THEN 3650 3680 m2=ASC(A$)-64 3690 IF m2<1 OR m2>m OR m2=m1 THEN PRINT CHR$(7):GOTO 3650 3700 LOCATE #4,77,4:PRINT#4,i$;a$;i$; 3710 MOVER m1*97-6,4:DRAWR 0,42:DRAWR -4,-5:MOVER 4,5:DRAWR 4,-5 3720 LOCATE #4,29+(m1-1)*12,2:PRINT#4,"V1" 3730 MOVE 8,-25:MOVER m2*97-6,4:DRAWR 0,42:DRAWR -4,-5:MOVER 4,5:DRAWR 4,-5 3740 LOCATE #4,29+(m2-1)*12,2:PRINT#4,"V2" 3750 RETURN 3760 REM 3770 REM * Modification du circuit * 3780 PEN #7,0:PAPER #7,1:modif=1 3790 CLS #6:LOCATE#6,1,2:PRINT#6,"RETURN->Idem" 3800 LOCATE#6,1,4:PRINT#6,"ESPACE->Modif"; 3810 FOR p=0 TO m 3820 IF L(p)<>0 THEN GOSUB 3890:REM modif self 3830 IF C(p)<>0 THEN GOSUB 4040:REM modif capa 3840 IF (R(p)>0) AND (L(p)=0) THEN GOSUB 4120 :REM modif resistance 3850 NEXT 3860 PEN #7,1:PAPER #7,0:CLS #6 3870 ON si GOSUB 1540,1720 3880 RETURN 3890 REM Modif self 3900 v=L(p):GOSUB 2950:LOCATE #4,19+p*12,3:PRINT #4,i$;sci$;"H";i$ 3910 GOSUB 5340:IF (A$<>CHR$(13)) AND (A$<>CHR$(32)) THEN 3910 3920 IF A$=CHR$(13) THEN 3950 3930 WINDOW #7,19+p*12,27+p*12,24,24:CLS #7:INPUT #7,"=",L(p) 3940 IF (L(p)<0.000001) OR (L(p)>1000) THEN 3930 3950 v=L(p):GOSUB 2950:LOCATE #4,19+p*12,3:PRINT #4,sci$;"H " 3960 v=R(p):GOSUB 2950:LOCATE #4,19+p*12,4:PRINT #4,i$;sci$;CHR$(191);i$ 3970 GOSUB 5340:IF (A$<>CHR$(13)) AND (A$<>CHR$(32)) THEN 3970 3980 IF A$=CHR$(13) THEN 4010 3990 WINDOW #7,19+p*12,27+p*12,25,25:CLS #7:INPUT #7,"=",R(p) 4000 IF (R(p)<0.1) OR (R(p)>10000000) THEN 3990 4010 v=R(p):GOSUB 2950:LOCATE #4,19+p*12,4:PRINT #4,sci$;CHR$(191);" " 4020 ORIGIN 0,0,0,639,0,399:MOVE 127,0:DRAWR (m+1)*97,0 4030 RETURN 4040 REM Modif capa 4050 v=C(p):GOSUB 2950:LOCATE #4,19+p*12,3:PRINT #4,i$;sci$;"F";i$ 4060 GOSUB 5340:IF (A$<>CHR$(13)) AND (A$<>CHR$(32)) THEN 4060 4070 IF A$=CHR$(13) THEN 4100 4080 WINDOW #7,19+p*12,27+p*12,24,24:CLS #7:INPUT #7,"=",C(p) 4090 IF (C(p)<0) OR (C(p)>0.003) THEN 4080 4100 v=C(p):GOSUB 2950:LOCATE #4,19+p*12,3:PRINT #4,sci$;"F " 4110 RETURN 4120 REM Modif resistance 4130 v=R(p):GOSUB 2950:LOCATE #4,19+p*12,3:PRINT #4,i$;sci$;CHR$(191);i$; 4140 GOSUB 5340:IF (A$<>CHR$(13)) AND (A$<>CHR$(32)) THEN 4140 4150 IF A$=CHR$(13) THEN 4180 4160 WINDOW #7,19+p*12,27+p*12,24,24:CLS #7:INPUT #7,"=",R(p) 4170 IF (R(p)<0.1) OR (R(p)>=999000000) THEN 4160 4180 v=R(p):GOSUB 2950:LOCATE #4,19+p*12,3:PRINT #4,isc$;CHR$(191);" " 4190 RETURN 4200 ' 4210 REM * Calcul des impedances * 4220 L=0:Cinv=0:C=0 4230 FOR p=0 TO m 4240 IF L(p)<>0 THEN Z(p)= omega*L(p):L=L+L(p) 4250 IF C(p)<>0 THEN Z(p)=-1/(omega*C(p)):CInv=Cinv+1/C(p) 4260 IF (R(p)<>0) AND (L(p)=0) THEN Z(p)=0 4270 NEXT 4280 IF Cinv<>0 THEN C= 1/Cinv 4290 SRT=0.001:SZT=0:FOR p=0 TO m:SRT=SRT+R(p):SZT=SZT+Z(p):NEXT 4300 SR1=0.001:SZ1=0:FOR p=m1 TO m:SR1=SR1+R(p):SZ1=SZ1+Z(p):NEXT 4310 SR2=0.001:SZ2=0:FOR p=m2 TO m:SR2=SR2+R(p):SZ2=SZ2+Z(p):NEXT 4320 ZT=SQR(SRT^2+SZT^2):Z1=SQR(SR1^2+SZ1^2):Z2=SQR(SR2^2+SZ2^2) 4330 fi=ATN(SZ2/SR2)-ATN(SZ1/SR1):V1m=amp*Z1/ZT:V2m=amp*Z2/ZT 4340 RETURN 4350 ' 4360 REM Ajustement des vitesses 4370 WHILE 1/F<8*VIT(K) AND k<22 :K=K+1:WEND 4380 WHILE 1/F>8*VIT(k) AND K>1 :K=K-1:WEND 4390 GOSUB 2910:RETURN 4400 REM Ajuste calibres V1 et V2 4410 WHILE V1m < 4*CAL(i) AND i<12 :i=i+1:WEND 4420 WHILE V1m > 4*CAL(i) AND i>1 :i=i-1:WEND 4430 WHILE V2m < 4*CAL(j) AND j<12 :j=j+1:WEND 4440 WHILE V2m > 4*CAL(j) AND j>1 :j=j-1:WEND 4450 GOSUB 2850:GOSUB 2880:REM Affichages 4460 RETURN 4470 REM * Pause * 4480 CALL &BB06:LOCATE #7,1,3:PRINT #7,CHR$(20) 4490 RETURN 4500 ' 4510 REM * AIDE * 4520 ' 4530 ORIGIN 120,143,120,518,64,143:CLG 4540 DRAWR 0,-79:DRAWR 400,0 4550 WINDOW #7,17,65,17,20:CLS #7 4560 LOCATE #7,22,1:PRINT#7,i$;" AIDE ";i$ 4570 LOCATE#7,11,3:PRINT #7,i$;"f0";i$;" Constitution du circuit" 4580 GOSUB 4470 4590 LOCATE#7,12,3:PRINT#7,i$;"SHIFT";i$;" ";i$;"f0";i$;" Choix du signal" 4600 GOSUB 4470 4610 LOCATE#7,16,3:PRINT#7,i$;"f7";i$;" Trace la voie 1"; 4620 GOSUB 4470 4630 LOCATE#7,12,3:PRINT#7,i$;"SHIFT";i$;" ";i$;"f7";i$;" Trace la voie 2" 4640 GOSUB 4470 4650 LOCATE#7,10,3:PRINT#7,i$;"CONTROL";i$;" ";i$;"f7";i$;" Trace en mode X,Y 4660 GOSUB 4470 4670 LOCATE#7,4,3:PRINT#7,i$;"f8";i$;" Efface l'ecran : "; 4680 PRINT#7,i$;"f9";i$;" Hardcopy DMP2000" 4690 GOSUB 4470 4700 LOCATE#7,10,3:PRINT#7,i$;" ";CHR$(240);" ";i$;" ou "; 4710 PRINT#7,i$;" ";CHR$(241);" ";i$;" Deplacent la voie 1" 4720 GOSUB 4470 4730 LOCATE#7,7,3:PRINT#7,i$;"SHIFT";i$;" "; i$;" ";CHR$(240);" ";i$;" ou "; 4740 PRINT#7,i$;" ";CHR$(241);" ";i$;" Deplacent la voie 2" 4750 GOSUB 4470 4760 LOCATE#7,11,3:PRINT#7,i$;" M ";i$;" Modifications du circuit" 4770 GOSUB 4470 4780 LOCATE#7,3,3:PRINT#7,i$;" F ";i$; 4790 PRINT#7," Nouvelle frequence : Signal sinusoidal" 4800 GOSUB 4470 4810 LOCATE#7,3,3:PRINT#7,i$;" E ";i$; 4820 PRINT#7," Nouvelle valeur de E : Signal echelon " 4830 GOSUB 4470 4840 GOSUB 2520:RETURN:REM trace l'ecran 4850 REM * Calibres et vitesse de balayage * 4860 ' 4870 RESTORE 4910:FOR n= 1 TO 12:READ cal$(n):NEXT 4880 RESTORE 4930:FOR n=1 TO 22: READ vit$ (n):NEXT 4890 RESTORE 4980:FOR n=1 TO 12:READ CAL(n):NEXT 4900 RESTORE 4990:FOR n=1 TO 22:READ VIT(n):NEXT 4910 DATA " 20 V"," 10 V"," 5 V "," 2 V "," 1 V "," .5 V" 4920 DATA " .2 V", " .1 V","50 mV","20 mV","10 mV"," 5 mV" 4930 DATA " 1 s "," .5 s"," .2 s"," .1 s","50 ms","20 ms" 4940 DATA "10 ms"," 5 ms"," 2 ms"," 1 ms",".5 ms",".2 ms" 4950 REM Dans les deux lignes suivantes, pour chaque 7, pressez la touche 4955 REM ( [ ) pour obtenir le caratere "mu = 7 " sur l'ecran 4960 DATA ".1 ms","50 新","20 新","10 新"," 5 新"," 2 新" 4970 DATA " 1 新",".5 新",".2 新",".1 新" 4980 DATA 20,10,5,2,1,0.5,0.2,0.1,5E-2,2E-2,1E-2,5E-3 4990 DATA 1,0.5,0.2,0.1,5E-2,2E-2,1E-2,5E-3,2E-3,1E-3,5E-4,2E-4,1E-4,5E-5 5000 DATA 2E-5,1E-5,5E-6,2E-6,1E-6,5E-7,2E-7,1E-7 5010 RETURN 5020 REM * Definition des touches de fonction * 5030 ' 5040 KEY DEF 4,0,238:REM fonct F6; vit croit 5050 KEY DEF 5,0,237:REM fonct F3; vit decroit 5060 KEY DEF 12,0,236:REM fonct F5 cal2; croit 5070 KEY DEF 14,0,235:REM fonct F2 cal2; decroit 5080 KEY DEF 20,0,234:REM fonct F4 cal1; croit 5090 KEY DEF 13,0,233:REM fonct F1 cal1; decroit 5100 KEY DEF 15,0,232,231:REM fonct f0 def. circuit et signal 5110 KEY DEF 3,0,230:REM fonct F9 copie d'ecran 5120 KEY DEF 11,0,229:REM fonct F8 efface la courbe 5130 KEY DEF 10,0,228,227,226:REM trace courbe voie 1 et 2 et X.Y 5140 KEY DEF 0,1,225,224:REM voie 1 ou voie 2 momtent 5150 KEY DEF 2,1,223,222:REM voie 1 ou voie 2 descendent 5160 RETURN 5170 REM * Copie d'ecran sur DMP2000 cf. notice (adaptee) * 5180 ' 5190 RESTORE 5200:FOR n=0 TO 191:READ cod:POKE (&A500+n),cod:NEXT:RETURN 5200 DATA 205,46,189,216,205,168,165,62,27,205,159,165,62,51,205,159 5210 DATA 165,62,17,205,159,165,205,186,187,205,231,187,50,182,165,17 5220 DATA 0,0,33,143,1,34,180,165,62,7,50,179,165,62,10,205 5230 DATA 159,165,62,13,205,159,165,62,27,205,159,165,62,42,205,159 5240 DATA 165,62,6,205,159,165,62,127,205,159,165,62,2,205,159,165 5250 DATA 14,0,58,179,165,71,229,197,213,205,240,187,209,193,33,182 5260 DATA 165,190,225,55,32,1,167,203,17,43,0,16,233,121,205,159 5270 DATA 165,19,229,33,127,2,55,237,82,225,56,5,42,180,165,24 5280 DATA 207,205,27,187,254,50,32,2,24,30,124,180,32,4,125,181 5290 DATA 40,22,124,254,255,40,17,17,0,0,34,180,165,24,142,205 5300 DATA 46,189,56,251,205,43,189,201,62,27,205,159,165,62,64,205 5310 DATA 159,165,201,0,0,0,0,0,0,0,0,0,0,0,0,0 5320 REM reinitialisation du clavier si Break** 5330 CALL &BB00:KEY DEF 17,0,183:MODE 2:END 5340 REM * get a$ * 5350 A$=UPPER$(INKEY$):IF A$="" THEN 5350 5360 RETURN |