Program: calc 1 '(c) LOGI'STICK 84 3 CLEAR 0:CLEAR(FRE(0)-999)/14*11:E=(FRE(0)-970)/6:CONSOLE0,4,0,1,0 5 BEEP 99,1:CLS:PRINT"FORMAT ?";INT(E);"?":LOCATE 2,1:INPUT"LONGUEUR";R:LOCATE 3,2 7 INPUT"LARGEUR";P:IF R<1 OR R>26 OR P<3 OR P>40 OR R*P>E THEN 5 9 R=R-1:P=P-1:GOSUB 40:CLS 11 ON ERRORGOTO 270:J$=" ":GOSUB 30 13 A$=INKEY$:IF A$="" THEN 13 ELSE A=ASC(A$) 14 IF A=94 THEN IT=-IT:GOTO 11 15 IF A=30 AND Y>0 THEN Y=Y-1:GOTO 11 17 IF A=28 AND X0 THEN X=X-1:GOTO 11 23 IF A=32 THEN K=K+1:IF K<3 THEN 11 ELSE K=0:GOTO 11 25 IF A>64 AND A<80 THEN 28 27 GOTO 13 28 ON A-64GOTO 50,70,60,90,80,100,112,120,130,140,150,160,190,320,500 30 LOCATE 0,0:PRINT"?";CHR$(X+65);":"; 31 IF IT=1 THEN PRINT"ABCDEFGHIJKLMNO^?";:GOTO 33 32 PRINTA$(X,0);LEFT$(J$+" ",17-LEN(A$(X,0))); 33 FOR T=1 TO 3:LOCATE 3,T:PRINTJ$; 34 LOCATE 0,T:PRINTRIGHT$(STR$(Y+T),2);":"; 36 IF B=0 THEN PRINTA$(X,Y+T-1); ELSE PRINTB$(X,Y+T-1); 38 NEXT T:LINE(12,11+K*8)-(16,11+K*8):RETURN 40 DIM A$(R,P),B$(R,P),H(7),F(3),I(3):CONSOLE0,4,0,1,0:IT=1:PR=14:RETURN 50 A$="CALCUL...":GOSUB 258:GOTO 202 60 A$="FORMULE":C$=B$(X,Y+K):GOSUB 260:B$(X,Y+K)=C$:GOTO 11 70 A$="ETIQUETTE":C$=A$(X,Y+K):GOSUB 260:A$(X,Y+K)=C$:GOTO 11 80 A$="TAB-FOR":GOSUB 258:B=1:GOTO 91 90 A$="TAB-ETI":GOSUB 258:B=0 91 FOR Z=1 TO 200:NEXT Z:GOTO 11 100 A$="CA:(S)AVE/(L)OAD":GOSUB 258 101 A$=INKEY$:IF A$="" THEN 101 ELSE IF A$="S" THEN 105 ELSE IF A$="L" THEN 110 ELSE 11 105 A$="SAVE":C$="":GOSUB 260:INIT?1,C$,10+(R+1)*(P+1)*25:GOTO 400 110 A$="LOAD":C$="":GOSUB 260:INIT?1,C$:GOTO 410 112 A$="CA:(E)FF/(D)IR":GOSUB 258 113 A$=INKEY$:IF A$="" THEN 113 ELSE IF A$="E" THEN 115 ELSE IF A$="D" THEN 118 ELSE 11 115 A$="EFFACEMENT":C$="":GOSUB 260:DELETE C$,"D":GOTO 91 118 A$="DIR":GOSUB 258:CLS:DIR 119 IF INKEY$="" THEN 119 ELSE 11 120 A$="PRINT":C$="":GOSUB 260:LPRINTCHR$(18):LPRINT"C0":LPRINT"S0":LPRINT"Q1" 121 LPRINT"M470,-80":LPRINT"P";C$:LPRINT"M450,-100":LPRINT"I":FOR E=0 TO R 122 FOR F=0 TO P:IF E=0 THEN LPRINT"M";-F*10;",30":LPRINT"P";F+1 123 LPRINT"M";-F*10;",0":IF B=0 THEN LPRINT"P";A$(E,F) ELSE LPRINT"P";B$(E,F) 124 NEXT F:LPRINT"M10,-48":LPRINT"P";CHR$(E+65):LPRINT"M0,-102":LPRINT"I":NEXT E 125 LPRINTCHR$(17):GOTO 11 130 A$="END=1":GOSUB 258 131 A$=INKEY$:IF A$="" THEN 131 ELSE IF A$<>"1" THEN 11 ELSE CLS:END 140 A$="MOVE":C$="":GOSUB 260 141 IF C$="" THEN 11 142 Z=ASC(LEFT$(C$,1))-65:W=VAL(RIGHT$(C$,LEN(C$)-1))-1 144 IF Z<0 OR Z>R OR W<0 OR W>P-2 THEN 140 ELSE X=Z:Y=W:GOTO 11 150 A$="SLEEP=1":GOSUB 258 151 A$=INKEY$:IF A$="" THEN 151 ELSE IF A$<>"1" THEN 11 ELSE SLEEP:GOTO 11 160 A$="TRANSPOSITION":C$="":GOSUB 260 161 A$=A$(X,Y+K):IF B=1 THEN A$=B$(X,Y+K) 162 IF A$="" OR C$="" THEN 11 ELSE W=ASC(C$) 163 LOCATE 3,1:PRINTJ$;:LOCATE 3,1:INPUT"PAS";N 164 IF(W>47 AND W<58) OR W=46 THEN 170 ELSE IF W>64 AND W64 AND LR+65 OR B=0 THEN 185 183 Z=VAL(MID$(A$,V+1,2)):IF Z<1 OR Z>P THEN 185 184 A$=LEFT$(A$,V)+MID$(STR$(Z+N),2,2)+RIGHT$(A$,LEN(A$)-V-LEN(STR$(Z))+1) 185 IF LEN(A$)>V+1 THEN V=V+1:GOTO 182 186 NEXT V:IF LEN(A$)>16 THEN A$=LEFT$(A$,16) 187 IF B=1 THEN B$(W-65,F)=A$ ELSE A$(W-65,F)=A$ 188 NEXT F:BEEP 99,3:GOTO 11 190 A$="RAM:":GOSUB 258:LOCATE 8,0:PRINTFRE(A$):GOTO 91 202 FOR E=0 TO R:FOR F=0 TO P:C$=B$(E,F):LOCATE 13,0 204 PRINTCHR$(E+65);RIGHT$(STR$(F+1),2):IF C$="" THEN 212 206 M=0:FOR Z=1 TO LEN(C$):IF MID$(C$,Z,1)="(" THEN S=Z+1:GOTO 210 208 IF MID$(C$,Z,1)=")" THEN F(M)=Z-1:O=Z-1:GOSUB 214:GOSUB 221:I(M)=J:M=M+1 210 NEXT Z:M=0:S=1:O=LEN(C$):GOSUB 214:M=0:GOSUB 221:C$=STR$(J):GOSUB 280 212 NEXT F:NEXT E:BEEP 200,3:GOTO 11 214 N=0:FOR V=S TO O:W=ASC(MID$(C$,V,1)):IF(W>47 AND W<58) OR W=46 THEN 240 216 IF W>64 AND W0 THEN J=J/C:GOTO 236 226 IF W=42 THEN J=J*C:N=N+1:NEXT V:RETURN 228 IF W=43 THEN J=J+C:N=N+1:NEXT V:RETURN 230 IF W=45 THEN J=J-C:N=N+1:NEXT V:RETURN 232 IF W=94 THEN N=N+1:IF C<>0 THEN J=J^C:NEXT V:RETURN 234 IF W=40 THEN V=F(M)+1:M=M+1 236 NEXT V:RETURN 240 H(N)=VAL(RIGHT$(C$,LEN(C$)-V+1)):V=V-2+LEN(STR$(H(N))):N=N+1:GOTO 220 242 L=VAL(MID$(C$,V+1,2))-1:IF L<0 OR L>P THEN 220 243 H(N)=VAL(A$(W-65,L)):V=V+2:N=N+1:GOTO 220 258 BEEP 99,1:LOCATE 3,0:PRINTA$;LEFT$(J$,16-LEN(A$));:RETURN 260 GOSUB 258:GOTO 275 262 A$=INKEY$:IF A$="" THEN 262 ELSE A=ASC(A$) 264 IF A=29 AND LEN(C$)>0 THEN C$=LEFT$(C$,LEN(C$)-1):GOTO 275 265 IF A=30 THEN C$="":GOTO 275 266 IF A=13 THEN RETURN 267 IF LEN(C$)<16 THEN C$=C$+A$:LOCATE 3,K+1:PRINTC$; 269 IF INKEY$<>"" THEN 269 ELSE 262 270 BEEP 150,2:CLS:LOCATE 4,1:PRINT"ERREUR No";ERR 271 IF INKEY$="" THEN 271 ELSE RESUME 11 275 LOCATE 2,K+1:PRINT"=";C$;LEFT$(J$,16-LEN(C$));:GOTO 269 280 IF LEN(C$)>16 THEN C$=LEFT$(C$,12)+RIGHT$(C$,4) 281 IF PR=14 THEN Z=0 ELSE Z=.5 282 A$(E,F)=STR$((INT(VAL(C$)*10^PR+Z))/10^PR):RETURN 320 A$="K7:(S)AVE/(L)OAD":GOSUB 258 322 A$=INKEY$:IF A$="" THEN 322 ELSE IF A$="S" THEN 324 ELSE IF A$="L" THEN 328 ELSE 11 324 A$="SAVE":GOSUB 258:INIT?1,"CASO:",1200,"B":GOTO 400 328 A$="LOAD":GOSUB 258:INIT?1,"CASI:",1200,"B":GOTO 410 400 PRINT?1,R,P:FOR E=0 TO R:FOR F=0 TO P:PRINT?1,A$(E,F),B$(E,F):NEXT F:NEXT E 401 BEEP 99,3:GOTO 11 410 ERASE A$,B$,H,F,I:INPUT?1,R,P:GOSUB 40:FOR E=0 TO R:FOR F=0 TO P 411 INPUT?1,A$(E,F),B$(E,F):NEXT F:NEXT E:BEEP 99,3:GOTO 11 500 A$="PRE-DEC:0-14":C$="":GOSUB 260:IF C$="" THEN 11 501 PR=INT(VAL(C$)):IF PR<0 OR PR>14 THEN 500 ELSE 11