Je me suis lancé dans le développement d'une mini calculatrice 4 opérations en RPN. Les points lors de l'affichage doivent être remplacé par les caractères graphiques du C128. Ca fait juste un cadre autour de l'affichage de la pile.
Voici le premier jet:
Code : Tout sélectionner
10 FAST
20 M=4:DIM S(M):E%=0:F%=0:D%=0:P%=0
30 GOSUB 220
40 GOSUB 330
50 GET N$
60 IF N$="" THEN 50
70 IF N$>="0" AND N$<="9" AND F%=1 THEN GOSUB 170:GOSUB 330:F%=0
80 IF N$>="0" AND N$<="9" AND E%=1 THEN S(1)=0:E%=0
90 IF N$>="0" AND N$<="9" AND D%=0 THEN S(1)=S(1)*10+VAL(N$):GOSUB 330
100 IF N$>="0" AND N$<="9" AND D%=1 THEN P%=P%-1:S(1)=S(1)+VAL(N$)*10^P%:G
OSUB 330
110 IF N$="+" OR N$="-" OR N$="*" OR N$="/" THEN GOSUB 390:GOSUB 330:E%=1:
F%=1:D%=0:P%=0
120 IF N$="." THEN D%=1
130 IF N$=CHR$(13) THEN GOSUB 170:GOSUB 330:E%=1:D%=0:P%=0
140 IF N$="C" THEN S(1)=0:GOSUB 330:D%=0:P%=0
150 GOTO 50
160 REM MANUPULATION DU STACK
170 FOR I=M-1 TO 1 STEP -1
180 S(I+1)=S(I)
190 NEXT I
200 RETURN
210 REM ****AFFICHAGE DE LA CALCULATRICE *****
220 SCNCLR
230 PRINT "CALCULATRICE RPN"
240 PRINT "................"
250 PRINT "................."
260 PRINT ".T. ."
270 PRINT ".Z. ."
280 PRINT ".Y. ."
290 PRINT ".X. ."
300 PRINT "................."
310 RETURN
320 REM **** AFFICHAGE DU STACK ET DU REGISTRE ****
330 FOR I=1 TO M
340 CHAR 1,3,7-I," "
350 CHAR 1,3,7-I,STR$(S(I))
360 NEXT I
370 RETURN
380 REM ***** OPERATION *****
390 IF N$="+" THEN S(1)=S(2)+S(1)
400 IF N$="*" THEN S(1)=S(2)*S(1)
410 IF N$="-" THEN S(1)=S(2)-S(1)
420 IF N$="/" THEN S(1)=S(2)/S(1)
430 FOR I=2 TO M-1:S(I)=S(I+1):NEXT I
440 S(M)=0
450 RETURN
Ben