1 GOTO 64000
10 x=x+1 20 t$=t$+z$:IF t$="fin" THEN t$="":z$="" ELSE t$="bonjour" 30 FOR i=1 TO n:NEXT i 40 t$="" 50 ON x GOTO 60,70 60 IF t$="jhgjh" THEN i=6 64000 GOSUB 64910 64005 LOCATE 3,17:PRINT "Aide a l'analyse de programme BASIC" 64010 LOCATE 12,24:PRINT "Alain Beaussant" 64015 PRINT TAB(18) "1986"; 64020 FOR i=1 TO 2500:NEXT i 64025 ' ** MENU PRINCIPAL ** 64030 LOCATE 1,6:PRINT CHR$(20) 64035 LOCATE 13,6:PRINT "MENU PRINCIPAL":PRINT TAB(13) STRING$(14,CHR$(208)) 64040 LOCATE 1,10:PRINT "1 SCANNER : examen des lignes BASIC" 64045 LOCATE 1,12:PRINT "2 SAUTS : liste des pts d'appel" 64050 LOCATE 1,14:PRINT "3 VARIABLES : recherche et classement" 64055 LOCATE 1,16:PRINT "5 SOUS PROG. : debut, fin, pts appel" 64060 LOCATE 1,18:PRINT "6 FIN de travail" 64065 ml1=10:ml2=20 64070 GOSUB 64945 64075 IF choix=5 THEN CLS:END 64080 ON choix GOSUB 64090,64285,64395,64535 64085 GOTO 64025 64090 ' ** MENU SCANNER ** 64095 LOCATE 1,6:PRINT CHR$(20) 64100 LOCATE 16,6:PRINT "SCANNER":PRINT TAB(16) STRING$(7,CHR$(208)) 64105 PRINT :PRINT TAB(6) "Examen du format de stockage":PRINT TAB(4) "d'un programme BASIC en memoire" 64110 LOCATE 1,12:PRINT "1 Tout le programme" 64115 LOCATE 1,14:PRINT "2 une partie du Pg." 64120 LOCATE 1,16:PRINT "3 Une seule ligne" 64125 ml1=12:ml2=18 64130 GOSUB 64945 64135 ON choix GOTO 64150,64155 64140 LOCATE 15,20:PRINT CHR$(20):INPUT "Ligne : ",ld 64145 la=ld:GOTO 64165 64150 ld=1:la=63999:GOTO 64165 64155 LOCATE 1,19:PRINT CHR$(20):LOCATE 15,20:INPUT "Ligne de depart : ",ld 64160 LOCATE 15,21:INPUT "Ligne d'arrivee : ",la 64165 GOSUB 65030 64170 ' ** SCANNER ** 64175 MODE 2 64180 nl=0:l=0:k1=368:flag1=0 64185 IF flag1=0 THEN PRINT "Suite = <Enter>":PRINT 64190 WHILE nl<ld:GOSUB 65005:WEND 64195 WHILE nl<=la 64200 flag1=1 64205 FOR h=h1 TO h2 STEP 8 64210 j=0 64215 PRINT #(h),k;PEEK(k),k+1;PEEK(k+1),"longueur de ligne =";l 64220 PRINT #(h),k+2;PEEK(k+2),k+3;PEEK(k+3),"numero de ligne =";nl 64225 FOR i=k+4 TO k+l-1 64230 PRINT #(h),TAB(j) i;PEEK(i); 64235 j=j+14:IF j>78 THEN j=0 64240 NEXT i 64245 PRINT #(h),CHR$(10)+CHR$(13) 64250 NEXT h 64255 INPUT "",r$ 64260 GOSUB 65005 64265 WEND 64270 IF flag1=0 THEN PRINT "pas de ligne a ce numero." 64275 PRINT:INPUT"retour au menu : <Enter> ",r$ 64280 GOSUB 64910:RETURN 64285 ' ** SAUTS *** 64290 GOSUB 65090 64295 DIM st$(300,1):k1=368:x=0:flag2=2 64300 GOSUB 65005 64305 WHILE nl<=63999 64310 FOR i=k+4 TO k+l-1 64315 IF PEEK(i)=159 OR PEEK(i)=160 OR PEEK(i)=151 OR PEEK(i)=235 OR PEEK(i)=202 OR PEEK(i)=198 OR PEEK(i)=199 OR PEEK(i)=200 THEN 64320 ELSE 64345 64320 FOR j=i+1 TO k+l-1 64325 IF PEEK(j)<>30 THEN IF PEEK(j)=1 OR PEEK(j)=161 THEN 64345 ELSE 64340 64330 x=x+1:st$(x,0)=STR$(PEEK(j+1)+(PEEK(j+2)*256)):st$(x,1)=STR$(nl) 64335 j=j+2:i=j 64340 NEXT j 64345 NEXT i 64350 GOSUB 65005 64355 WEND 64360 GOSUB 64850:IF x=0 THEN LOCATE 1,21:PRINT CHR$(7);"Pas de ligne d'appel":GOSUB 65125:GOTO 64390 ELSE GOSUB 65030 64365 IF h1>0 THEN 64385 64370 MODE 2:WINDOW #1,1,80,1,3 64375 PRINT #1, " Ligne ù";TAB(15) "appelee par lignes :" TAB(60) " Suite : <ENTER> )":PRINT #1, STRING$(80,"_");:LOCATE #1,8,2:PRINT #1,"ù":PRINT #1, TAB(8) "ù"; 64380 LOCATE 8,4:PRINT "ù";:j=9 64385 vs=9:GOSUB 64790 64390 ERASE st$:RETURN 64395 ' *** VARIABLES *** 64400 GOSUB 64910:LOCATE 15,6:PRINT "VARIABLES":PRINT TAB(15) STRING$(9,CHR$(208)):PRINT :PRINT " Recherche et classement des variables." 64405 PRINT :PRINT TAB(9) "Lignes d'utilisation." 64410 LOCATE 11,18:PRINT "veuillez patienter" 64415 DIM st$(300,1):k1=368:x=0:flag2=3 64420 GOSUB 65005 64425 WHILE nl<=63999 64430 FOR i=k+4 TO k+l-1 64435 IF PEEK(i)=2 OR PEEK(i)=3 OR PEEK(i)=4 OR PEEK(i)=13 THEN 64440 ELSE 64480 64440 IF PEEK(i+1)<>0 OR PEEK(i+2)<>0 OR PEEK(i-1)=30 THEN 64480 64445 IF PEEK(i)=2 THEN ty$="%" ELSE IF PEEK(i)=3 THEN ty$="$" ELSE IF PEEK(i)=4 THEN ty$="!" ELSE ty$="" 64450 x1=i+3:x=x+1 64455 IF PEEK(x1)>=128 THEN 64465 64460 st$(x,0)=st$(x,0)+CHR$(PEEK(x1)):x1=x1+1:GOTO 64455 64465 st$(x,0)=st$(x,0)+CHR$(PEEK(x1)-128)+ty$ 64470 IF PEEK(x1+1)=40 THEN st$(x,0)=st$(x,0)+"()" 64475 st$(x,1)=STR$(nl):i=x1+1 64480 NEXT i 64485 GOSUB 65005 64490 WEND 64495 GOSUB 64850:IF x=0 THEN LOCATE 1,21:PRINT CHR$(7);"pas de variables":GOSUB 65125:GOTO 64530 64500 GOSUB 65030 64505 IF h1>0 THEN 64525 64510 MODE 2:WINDOW #1,1,80,1,3 64515 PRINT #1," VARIABLES" TAB(16) "ù" TAB(18) "utilisees lignes :" TAB(60) "( Suite : <ENTER> )":PRINT #1,STRING$(80,"_"):LOCATE #1,16,2:PRINT #1,"ù":PRINT #1,TAB(16) "ù"; 64520 LOCATE 16,4:PRINT "ù";:j=17 64525 vs=17:GOSUB 64790 64530 ERASE st$:RETURN 64535 ' ** SOUS-PROGRAMMES ** 64540 GOSUB 64910:LOCATE 12,6:PRINT "SOUS-PROGRAMMES":PRINT TAB(12) STRING$(15,CHR$(208)):PRINT :PRINT "Recherche et classement:" 64545 PRINT :PRINT TAB(9) "Debut et Fin":PRINT TAB(9) "Lignes d'appels":PRINT TAB(9) "Sorties conditionnelles" 64550 LOCATE 11,18:PRINT "veuillez patienter" 64555 DIM st$(300,1):k1=368:x=0:flag2=2 64560 GOSUB 65005 64565 WHILE nl<=63999 64570 FOR i=k+4 TO k+l-1 64575 IF PEEK(i)=159 THEN 64580 ELSE 64605 64580 FOR j=i+1 TO k+l-1 64585 IF PEEK(j)<>30 THEN IF PEEK(j)=1 OR PEEK(j)=161 THEN 64605 ELSE 64600 64590 x=x+1:st$(x,0)=STR$(PEEK(j+1)+(PEEK(j+2)*256)):st$(x,1)=STR$(nl) 64595 j=j+2:i=j 64600 NEXT j 64605 NEXT i 64610 GOSUB 65005 64615 WEND 64620 GOSUB 64850 64625 IF x=0 THEN LOCATE 1,11:PRINT CHR$(7);CHR$(20);"PAS DE SOUS-PROGRAMMES":LOCATE 11,18:GOSUB 65125:GOTO 64780 64630 GOSUB 65030 64635 x1=1:x2=0:MODE 2 64640 WHILE x1<=x 64645 CLS:LOCATE 30,12:PRINT "VEUILLEZ PATIENTER" 64650 k1=368:x2=x2+1:nsp$="":flag4=0 64655 GOSUB 65005:IF nl<VAL(st$(x1,0)) THEN 64655 64660 IF nl=VAL(st$(x1,0)) THEN FOR i=k+4 TO k+l-1:IF PEEK(i)=197 OR PEEK(i)=192 THEN FOR j=i+1 TO k+l-1:nsp$=nsp$+CHR$(PEEK(j)):NEXT j ELSE NEXT i 64665 IF nl>VAL(st$(x1,0)) THEN flag4=1 64670 DIM rc(20):x3=0 64675 flag1=0:FOR i=k+4 TO k+l-1 64680 IF PEEK(i)=161 THEN flag1=1 64685 IF (PEEK(i)=201 OR PEEK(i)=152) AND flag1=1 THEN x3=x3+1:rc(x3)=nl:flag1=0:GOTO 64695 64690 IF PEEK(i)=201 OR PEEK(i)=152 THEN rc(0)=nl:GOTO 64705 64695 NEXT i 64700 GOSUB 65005:GOTO 64675 64705 CLS:FOR h=h1 TO h2 STEP 8 64710 PRINT #h:PRINT #h,"SOUS-PROGRAMME ";x2:PRINT #h:LOCATE 1,5 64715 IF nsp$<>"" THEN PRINT #h,"Nom :",nsp$ 64720 PRINT #h,"Debut :",st$(x1,0);:IF flag4=1 THEN PRINT #h," ( NB : cette ligne n'existe pas )"; 64725 PRINT #h:PRINT #h,"Appel :",:x3=x1 64730 PRINT #h,VAL(st$(x3,1));:IF st$(x3,0)=st$(x3+1,0) THEN x3=x3+1:GOTO 64730 64735 PRINT #h:PRINT #h,"Fin :",rc(0) 64740 IF rc(1)=0 THEN 64755 64745 PRINT #h,"Retours conditionnels :",:x3=0 64750 x3=x3+1:IF rc(x3)<>0 THEN PRINT #h,rc(x3);:GOTO 64750 64755 IF h=0 THEN LOCATE 60,23:INPUT "<ENTER> ",r$ 64760 PRINT #h:NEXT h 64765 ERASE rc 64770 x1=x1+1:IF st$(x1-1,0)=st$(x1,0) THEN 64770 64775 WEND 64780 ERASE st$:GOSUB 64910:RETURN 64785 ' *** EDITION TABLEAU *** 64790 j=vs 64795 FOR h=h1 TO h2 STEP 8:FOR i = 1 TO x 64800 IF st$(i,0)=st$(i-1,0) THEN 64820 64805 IF h=8 THEN PRINT #8,CHR$(10)+CHR$(13); 64810 IF h=0 THEN INPUT "",r$ 64815 PRINT #(h),st$(i,0);TAB(vs-1)"ù";:j=vs:z=1 64820 IF st$(i,1)=st$(i+1,1) AND st$(i,0)=st$(i+1,0)THEN z=z+1:GOTO 64830 64822 IF z=1 THEN 64826 64824 PRINT #h,TAB(j) "(";z;")";:z=1 64825 j=j+8:IF j>78 THEN j=vs:PRINT #(h),TAB(vs-1) "ù"; 64826 PRINT #(h),TAB(j) st$(i,1); 64828 j=j+8:IF j>78 THEN j=vs:PRINT #(h),TAB(vs-1) "ù"; 64830 NEXT i:IF h=8 THEN PRINT #8,CHR$(10)+CHR$(13) 64835 NEXT h 64840 PRINT :PRINT :IF h1=0 THEN INPUT "retour au menu : <ENTER> ",r$ 64845 GOSUB 64910:RETURN 64850 ' *** TRI TABLEAU SAUTS / VARIABLES *** 64855 flag1=0:IF x=0 THEN 64905 64860 FOR i = 1 TO x-1 64865 IF flag2=2 THEN 64875 64870 IF st$(i,0)<=st$(i+1,0) THEN 64895 ELSE 64880 64875 IF VAL(ST$(i,0))<=VAL(ST$(i+1,0)) THEN 64895 64880 st$(0,0)=st$(i,0):st$(i,0)=st$(i+1,0):st$(i+1,0)=st$(0,0) 64885 st$(0,1)=st$(i,1):st$(i,1)=st$(i+1,1):st$(i+1,1)=st$(0,1) 64890 flag1=1 64895 NEXT i 64900 IF flag1=1 THEN 64855 64905 RETURN 64910 ' ** analys ** 64915 MODE 1:LOCATE 14,1 64920 PRINT CHR$(204); STRING$(9,CHR$(208));CHR$(205) 64925 PRINT TAB(14) CHR$(211);" ANALYSE ";CHR$(209) 64930 PRINT TAB(14) CHR$(205);STRING$(9,CHR$(210));CHR$(204) 64935 RETURN 64940 ' ** gestion curseur de choix ** 64945 ml=ml1 64950 LOCATE 8,23:PRINT "Deplacement par 'spc bar'" 64955 LOCATE 9,25:PRINT "Validation par 'Enter'"; 64960 LOCATE 3,ml:PRINT CHR$(146); CHR$(243);:mp=VPOS(#0) 64965 r$=INKEY$:IF r$="" THEN 64965 64970 IF r$=CHR$(13) THEN 64995 64975 LOCATE 3,ml:PRINT SPC(2) 64980 ml=ml+2 64985 IF ml=ml2 THEN ml=ml1 64990 GOTO 64960 64995 choix=(mp-ml1)/2+1 65000 RETURN 65005 ' ** lecture n. et l. de ligne ** 65010 l=PEEK(k1)+(PEEK(k1+1)*256):nl=PEEK(k1+2)+(PEEK(k1+3)*256) 65015 k=k1:k1=k1+l 65020 RETURN 65025 ' ** MENU D'EDITION ** 65030 LOCATE 1,6:PRINT CHR$(20) 65035 LOCATE 16,6:PRINT "EDITION":PRINT TAB(16) STRING$(7,CHR$(208)) 65040 LOCATE 1,10:PRINT "1 ECRAN" 65045 LOCATE 1,12:PRINT "2 IMPRIMANTE" 65050 LOCATE 1,14:PRINT "3 Ecran ET Imprimante" 65055 ml1=10:ml2=16 65060 GOSUB 64945 65065 ON choix GOTO 65075,65080 65070 h1=0:h2=8:GOTO 65085 65075 h1=0:h2=0:GOTO 65085 65080 h1=8:h2=8 65085 RETURN 65090 ' *** Menu SAUTS *** 65095 GOSUB 64910:LOCATE 17,6:PRINT "SAUTS":PRINT TAB(17) STRING$(5,CHR$(208)) 65100 PRINT :PRINT "Recherche des lignes appelees par :":PRINT 65105 PRINT "1 - GOTO, GOSUB, ON... , THEN et ELSE.":PRINT 65110 PRINT "2 - RUN, RENUM, RESTORE et RESUME" 65115 LOCATE 11,18:PRINT "VEUILLEZ PATIENTER" 65120 RETURN 65125 INPUT "Retour au menu : <ENTER> ",r$:RETURN |