Mini calculatrice RPN

un pet, un vic, un 64...

Modérateur : Politburo

Répondre
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

Mini calculatrice RPN

Message par Ben »

Salut,

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
J'attends vos remarques sur l'utilisation de la pile :-)

Ben
Avatar du membre
Miskatonic91
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 477
Enregistré le : 27 août 2016 17:28
Localisation : Valdemarnie

Re: Mini calculatrice RPN

Message par Miskatonic91 »

Très intéressant!
Le programme est-il transposable facilement sur d'autres Basic (je n'ai pas de C128)? :wink:
Un peu de tout, mais toujours de bon goût :wink:
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

Re: Mini calculatrice RPN

Message par Ben »

Miskatonic91 a écrit :Très intéressant!
Le programme est-il transposable facilement sur d'autres Basic (je n'ai pas de C128)? :wink:
Je pense bien, c'est du basic tout à fait classique. Si tu hésites sur une instruction, n'hésite pas.

Je vais le convertir sur le PC1246 (j'adore ce petit sharp)
Avatar du membre
rogeroge
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4227
Enregistré le : 14 mai 2010 21:41
Localisation : Entre Nancy et Bercy : à Torcy

Re: Mini calculatrice RPN

Message par rogeroge »

Ben a écrit :..........

Je vais le convertir sur le PC1246 (j'adore ce petit sharp)
Alors tu vas adorer aussi le Sharp PC-1247.
Il faut être fou pour venir sur ce site mais encore plus fou pour ne pas y revenir !
Avatar du membre
Miskatonic91
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 477
Enregistré le : 27 août 2016 17:28
Localisation : Valdemarnie

Re: Mini calculatrice RPN

Message par Miskatonic91 »

Ben a écrit : Si tu hésites sur une instruction, n'hésite pas.
Je n'hésite donc pas! Que font les instructions FAST et CHAR?
Merci de ta réponse! :wink:
EDIT: je suppose que FAST est un mode plus rapide (mais pourquoi?). CHAR doit positionner le curseur à un emplacement spécifique de l'écran en mode texte?
Ben a écrit : Je vais le convertir sur le PC1246 (j'adore ce petit sharp)
Bonne idée, je vais pouvoir l'adapter plus facilement sur mon PC-1403! :wink:
Un peu de tout, mais toujours de bon goût :wink:
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

Re: Mini calculatrice RPN

Message par Ben »

Miskatonic91 a écrit :Je n'hésite donc pas! Que font les instructions FAST et CHAR?
Comme tu l'as deviné. Fast est pour passer le processeur en mode 2Mhrz, par défaut, il est à 1Mhrz.
Char, imprime une chaîne de caractère à la position X,Y sur l'écran.
rogeroge a écrit :Bonne idée, je vais pouvoir l'adapter plus facilement sur mon PC-1403
Je te tiens au courant quand je l'ai adapté. :-)
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

Re: Mini calculatrice RPN

Message par Ben »

rogeroge a écrit :
Ben a écrit :..........

Je vais le convertir sur le PC1246 (j'adore ce petit sharp)
Alors tu vas adorer aussi le Sharp PC-1247.
Je n'ai pas encore de PC-1247 ;-)

Par contre, j'ai un petit souci. L'instruction INKEY$ du sharp efface l'écran lors de son exécution.
Avatar du membre
rogeroge
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4227
Enregistré le : 14 mai 2010 21:41
Localisation : Entre Nancy et Bercy : à Torcy

Re: Mini calculatrice RPN

Message par rogeroge »

Ben a écrit :
rogeroge a écrit :
Ben a écrit :..........

Je vais le convertir sur le PC1246 (j'adore ce petit sharp)
Alors tu vas adorer aussi le Sharp PC-1247.
Je n'ai pas encore de PC-1247 ;-)

Par contre, j'ai un petit souci. L'instruction INKEY$ du sharp efface l'écran lors de son exécution.
Je regarde ça mais pour l'instant, j'ai à faire avec La Gazette et il me faut retrouver ce petit Sharp probablement
bien dissimulé dans mon Big Bazar.
Il faut être fou pour venir sur ce site mais encore plus fou pour ne pas y revenir !
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

Re: Mini calculatrice RPN

Message par Ben »

Merci rogeroge :)

Voici un petit programme de test sur le PC-1246

Code : Tout sélectionner

900 WAIT 10
905 PRINT V
910 N$=INKEY$
915 IF N$="" THEN 910
920 V=V*10+VAL(N$)
930 GOTO 905
J'ai dû mettre 10 au WAIT pour apercevoir quelque sur l’écran lorsque je tape des chiffres
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

Re: Mini calculatrice RPN

Message par Ben »

Je viens d'essayer avec un PC-1500, ça fonctionne bien :?
Avatar du membre
badaze
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 8385
Enregistré le : 12 févr. 2007 18:36
Localisation : Pas très loin de Lyon
Contact :

Re: Mini calculatrice RPN

Message par badaze »

Ben a écrit :Je viens d'essayer avec un PC-1500, ça fonctionne bien :?
Ce sujet avait été abordé il y a un peu de 6 ans !!! Dont ma version pour PC 1500.

viewtopic.php?f=46&t=23928&hilit=rpn&start=15
Tout est bon dans le pocket.
Moi j'aime tout.... Casio, HP, Sharp, TI et les autres sauf que les TI semblent ne pas m'aimer :(
http://www.emmella.fr
Mes Casio - HP - Sharp - TI
Homme invisible.
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

Re: Mini calculatrice RPN

Message par Ben »

J'avoue que je n'ai pas vraiment fait de recherche sur le site.
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

Re: Mini calculatrice RPN

Message par Ben »

Voici ma version PC-1500. Sur la version C-128, la variable M permet d'augmenter la taille de la pile. Ici, elle est de 4.

Code : Tout sélectionner

5 WAIT 0
10 DIM S(4): E=0:F=0:D=0:P=0
40 PRINT S(1)
50 N$=INKEY$
60 IF N$="" then 50
70 IF N$>="0" AND N$<="9" AND F=1 GOSUB 170:PRINT S(1):F=0:GOTO 150
80 IF N$>="0" AND N$<="9" AND E=1 LET S(1)=0:E=0:GOTO 150
90 IF N$>="0" AND N$<="9" AND D=0 LET S(1)=S(1)*10+VAL(N$):PRINT S(1):F=0:GOTO 150
100 IF N$>="0" AND N$<="9" AND D=1 LET P=P-1:S(1)=S(1)+VAL(N$)*10^P:PRINT S(1):F=0:GOTO 150
110 IF N$="+"OR N$="-"OR N$="*"OR N$="/" GOSUB 390:PRINT S(1):E=1:F=1:D=0:P=0:GOTO 150
120 IF N$="." LET D=1:GOTO 150
130 IF N$=CHR$ (13) GOSUB 170:PRINT S(1):E=1:D=0:P=0:GOTO 150
140 IF N$="C" LET S(1)=0:PRINT S(1):D=0:P=0
150 GOTO 50
170 FOR I=3 TO 1 STEP -1
180 S(I+1)=S(I)
190 NEXT I
200 RETURN
390 IF N$="+" LET S(1)=S(2)+S(1)
400 IF N$="*" LET S(1)=S(2)*S(1)
410 IF N$="-" LET S(1)=S(2)-S(1)
420 IF N$="/" LET S(1)=S(2)/S(1)
430 FOR I=2 TO 3:S(I)=S(I+1):NEXT I
440 S(4)=0
450 RETURN
@Miskatonic91: Si tu veux voir si ça fonctionne sur le PC-1401 :-)

Ben
Avatar du membre
Miskatonic91
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 477
Enregistré le : 27 août 2016 17:28
Localisation : Valdemarnie

Re: Mini calculatrice RPN

Message par Miskatonic91 »

Ben a écrit : @Miskatonic91: Si tu veux voir si ça fonctionne sur le PC-1401 :-)
Ben
Faut déjà que je remette des piles dedans... :lol:
A l'occasion, c'est promis, dès que j'ai un moment...
Un peu de tout, mais toujours de bon goût :wink:
Répondre

Retourner vers « Commodore 8bits »