fxtran -- Codez en Fortran pour votre Casio !
Posté le 24/04/2022 15:15
Bonjour à tous.tes !
Lundi dernier je me suis levé avec une (mauvaise) idée : coder en Fortran pour ma Casio.
Une semaine plus tard est né
fxtran, qui réalise ce rêve (
rêve hum hum) !
Le projet utilise le
fxsdk de
Lephenixnoir ainsi que
f2c, un programme permettant de transformer du code Fortran 77 en code C.
Une petite démo tout de suite :
Je crée un nouveau projet fxsdk :
$ fxsdk new demo
Je le configure pour fxtran :
$ fxtran configure
Dans le dossier src j'ai donc un fichier main.f qui contient un programme d'exemple. Let's programming something !
Je fais une petite démo, voici donc le code :
INTEGER FUNCTION FIBO(n)
INTEGER n
INTEGER FIBO
IF (n .EQ. 0) THEN
FIBO=0
RETURN
ELSE IF (n .EQ. 1) THEN
FIBO=1
RETURN
ELSE
FIBO=FIBO(n-1) + FIBO (n-2)
END IF
END
PROGRAM DEMO
INTEGER FIBO,a
REAL b
PRINT *,"Suite de Fibonacci :"
DO a = 1,16
PRINT *,FIBO(a)
WAIT
END DO
b=sqrt(9.00)
PRINT *,"Racine de 9 :",int(b)
WAIT
PRINT *,"Racine de 2 :", sqrt(2.00)
PI=4.D0*DATAN(1.D0)
WAIT
PRINT *,"Pi :",PI
END
Ici je déclare une fonction FIBO(n) qui me renvoie le terme de rang n de la suite de Fibonacci (j'utilise l'algorithme récursif naïf), puis dans le programme principal j'affiche les 16 premiers termes de la suite de Fibonacci. Entre chaque terme j'utilise la fonction WAIT qui n'existe pas en Fortran, elle est crée par fxtran et met en pause le programme jusqu'à l'appui d'une touche (équivalent de la fonction getkey() avec Gint). Ensuite j'affiche différentes racines, puis le nombre π. Le code est vraiment typique du Fortran 77.
Compilons ceci :
fxtran build-fx
Voilà, le g1a est généré dans MyAddin.g1a !
On se retrouve après le transfert, pour une petite vidéo :
Et voilà !
Installation
Pour installer fxtran, il faut :
- Installer le
fxsdk de
Lephenixnoir
- Puis :
git clone https://github.com/harrypotter360/fxtran.git && cd fxtran
chmod +x install && sudo ./install
Et voilà, fxtran est installé !
Utilisation
Pour utiliser fxtran :
- On crée un projet fxsdk :
fxsdk new demo && cd demo
- On le rend compatible fxtran :
fxtran configure
Et ensuite, on peut coder en Fortran 77 dans le fichier src/main.f !
Pour build :
fxtran build-fx
(build-cg existe mais ne marche pas encore)
Et on transfère le g1a sur la calto !
Voilà, j'espère que ça vous plaira !
Enjoy !
@RDP
Citer : Posté le 25/04/2022 19:07 | #
Yo, alors ça c'est à la fois ballzy et cool. Il va falloir mettre à jour le topic de Cake : https://www.planet-casio.com/Fr/forums/topic14371-1-est-ce-que-je-peux-programmer-en-tel-langage-sur-ma-calto.html
Je réalise que le pseudo-shell, le Generic, etc, c'était tout pour ça xD
Est-ce que c'est possible d'interfacer avec du C ? Je suppose qu'il n'y a pas d'autres fonctions que print() (et peut-être quelques autres) supportées du côté Fortran.
(Note : soit tu installes dans ~/.local soit tu installes dans /usr, faut choisir !)
Citer : Posté le 25/04/2022 19:13 | #
Oui tu peux interfacer avec du C, via la fonction CALL de Fortran mais aussi directement en modifiant le fichier .c généré. Je le supprime dans le script bash après la compilation pour l'utilisateur, tu peux supprimer la ligne qui rm main.c mais je vais essayer d'en faire un flag, bonne idée.
Je suppose qu'il n'y a pas d'autres fonctions que print() (et peut-être quelques autres) supportées du côté Fortran.
Mmm, je comprends pas très bien ce que tu veux dire par là...
(Note : soit tu installes dans ~/.local soit tu installes dans /usr, faut choisir !)
Ah oui merde. C'est quoi l'équivalent de /usr/bin dans ~/.local ?
C'est vraiment codé de manière dégueulasse, juste un projet "vite fait" qui sert à rien ahah
Citer : Posté le 25/04/2022 19:14 | #
T'as pas une instruction DRAW_SPRITE ?
Ce serait ~/.local/bin. Lequel n'est pas forcément dans le PATH, ce qui peut être chiant (mais si le fxSDK est installé normalement c'est le cas).
Citer : Posté le 25/04/2022 19:20 | #
Ah oui ok d'accord. Normalement tu peux appeler n'importe quelle fonction qui vient du C (gint du coup) avec CALL, ce qui permet d'appeler dimage() ou d'autres.
Après pour ça ça pose quelques soucis de déclaration de la BOPTI_IMAGE_T, j'ai déjà quelques idées que je vais approfondir
Okkay, super merci. De toute façon le fxSDK est obligé d'être installé pour que fxtran fonctionne donc c'est génial.