Installation de eForth et SDL2
publication: 5 novembre 2024 / mis à jour 5 novembre 2024
L’installation de l’environnement de développement en langage Forth pour SDL2 ne nécessite que deux composants:
- la version eForth pour Windows de Brad NELSON ;
- la librairie SDL2 dans un fichier dll ;
- un bon éditeur de fichiers texte.
C’est un environnement très compact qui associe, grâce à eForth, un interpréteur et un compilateur.
Installation de eForth pour Windows
La version eForth pour Windows est disponible ici :
https://eforth.appspot.com/windows.html
Télechargez la version uEf64-7.0.7.20.exe. C’est une version 64 bits. Elle est très stable et très robuste. Le fichier ne fait que 265 Ko.
Créez un dossier eforth dans votre espace de travail habituel :
📁 eforth
Copiez le fichier précédemment téléchargé dans ce dossier:
📁 eforth 📄 uEf64-7.0.7.20.exe
Exécutez ce programme depuis ce dossier eforth. Souvent, Windows émet un avertissement. Si c’est le cas, acceptez l’exécution de ce programme. Vous devez vous retrouver avec cette fenêtre :
Voilà ! Vous avez la main sur une version Forth disposant de trois piles :
- une pile de données
- une pile de retour
- une pile pour les nombres réels
Chaque pile dispose d’un espace de données de 64Ko. Comme chaque élément pèse 64 bits (8 octets) dans la pile, ce sont 8000 valeurs qui peuvent être empilées !
Le dictionnaire dispose d’un espace libre de 10.178.992 octets ! On dispose donc d’un espace de développement plus que confortable.
eForth c’est un interpréteur ET un compilateur. Le tout premier mot à votre disposition, histoire de voir ce qu’il y sous le capot est words dont l’exécution affiche ceci, résumé aux trois premières lignes :
FORTH graphics argv argc visual set-title page at-xy normal bg fg ansi editor list copy thru load flush update empty-buffers buffer block save-buffers default-use use open-blocks block-id scr block-fid file-exists? needs required… ...etc.
Tous ces mots constituent le langage permettant de compiler et exécuter les programmes écrits en langage Forth.
Installation de la librairie SDL2
Accès au site SDL2 :
https://www.libsdl.org/
Ce site fournit beaucoup de ressources et documentations pour comprendre l’utilisation de la librairie SDL2.
ATTENTION : les fonctions en langage C sont adaptées à eForth Windows. Nous verrons ceci plus loin.
Pour télécharger la version SDL2 la plus récente : https://github.com/libsdl-org/SDL/releases/tag/release-2.30.8
Récupérez le fichier SDL2-2.30.8-win32-x64.zip.
Ouvrez ce fichier zip et transférez le seul fichier SDL2.dll dans le répertoire eforth :
📁 eforth 📄 uEf64-7.0.7.20.exe 📄 SDL2.dll
Voilà ! Il n’y a rien d’autre à faire coté installation. Voyons maintenant comment préparer l’environnement de développement.
Organisation des fichiers
Il faut maintenant organiser l’espace de développement. Pour ce faire, on crée un sous-répertoire SDL2 :
📁 eforth 📄 uEf64-7.0.7.20.exe 📄 SDL2.dll 📁 SDL2
On va remplir ce répertoire avec les fichiers disponibles ici :
https://github.com/MPETREMANN11/SDL2-eForth-windows/tree/main/SDL2
Ne récupérez que ces fichiers :
📁 eforth 📄 uEf64-7.0.7.20.exe 📄 SDL2.dll 📁 SDL2 📄 SDL2.fs 📄 SDLconstants.fs 📄 main.fs 📄 tests.fs
Contenu de ces fichiers :
- SDL2.fs contient tous les mots accédant à la librairie SDL contenue dans SDL2.dll ;
- SDLconstants.fs contient un certain nombre de constantes d’usage courant et propres à leur emploi avec les mots définis dans le vocabulaire SDL2 ;
- main.fs est le script principal chargé d’agréger les divers composants de votre application ;
- tests.fs fichier fourre-tout pour réaliser des tests.
ATTENTION : le contenu de ces fichiers est susceptibles d’évoluer en permanence sur le dépôt Github. Il est donc fortement conseillé d’en surveiller le contenu.
Il reste un dernier fichier à installer dans le répertoire eforth :
📁 eforth 📄 uEf64-7.0.7.20.exe 📄 SDL2.dll 📁 SDL2 📄 SDL2.fs 📄 SDLconstants.fs 📄 main.fs 📄 tests.fs 📄 SDL2.fs
Contenu de ce fichier SDL2.fs :
\ pre-load tools \ s" tools/dumpTool.fs" required \ load SDL2 s" SDL2/main.fs" included
Considérez le contenu de ce fichier comme un traitement par lot, mais exécutable seulement depuis eForth.
Pour vérifier si la librairie SDL2 fonctionne bien, lancez eForth, puis entrez cette commande :
include SDL2.fs
Cette commande charge le contenu du fichier SDL2.fs situé dans la racine du sous-répertoire eforth. Tapez ensuite :
SDL2 vlist
Vous devez voir apparaître les mots définis dans le vocabulaire SDL2
, ici les trois premières lignes :
SDL.CreateWindow SDL.init SetRenderDrawColor Quit RenderPresent RenderClear PollEvent Init GetError GetCursor GetCPUCount GetBasePath GetAudioStatus DestroyWindow DestroyRenderer CreateWindow CreateRenderer SDL_MAX_LOG_MESSAGE ...etc…
ATTENTION : le contenu de ce vocabulaire évolue en permanence. Il ne représente que la compilation des définitions décrites dans le fichier SDL2/SDL2.fs.
Le fichier main.fs
C’est le fichier contenant le script chargé d’agréger les composants de vos applications. Exemple de contenu de ce fichier :
\ load SDL2 library s" SDL2.fs" included \ load SDL2 tests s" tests.fs" included
Vous pouvez modifier son contenu sans souci. Prenons le cas où vous voulez tester l’affichage de fenêtres.
Vous créez un fichier testWindows.fs dans lequel vous allez mettre les tests de fenêtres avec les mots du vocabulaire
SDL2
. Voici comment intégrer ce fichier testWindows.fs dans main.fs :
\ load SDL2 library s" SDL2.fs" included \ load SDL2 tests \ s" tests.fs" included \ load windows tests with SDL2 s" testWindowss.fs" included
Le mot \
met en commentaire le reste de la ligne. Au prochain chargement de SDL2.fs qui
est dans le répertoire racine eforth, seul le contenu des fichiers SDL2/SDL2.fs
et SDL2/testWindows.fs sera traité par eForth.
Vous pouvez donc facilement enchaîner des tests ou des portions de code pour l’application finale.
Pour éviter l’écrasement accidentel de votre travail, il est conseillé de créer plusieurs sous-répertoires, par exemple sandbox où vous pourrez faire plein de petits tests :
📁 eforth 📄 uEf64-7.0.7.20.exe 📄 SDL2.dll 📁 SDL2 📄 SDL2.fs 📄 SDLconstants.fs 📄 main.fs 📄 tests.fs 📄 SDL2.fs 📁 sandbox 📄 SDL2.fs 📄 SDLconstants.fs 📄 main.fs 📄 tests.fs 📄 sandbox.fs
Exemple du contenu de sandbox.fs :
\ s" tools/dumpTool.fs" required \ load sandbox s" sandbox/main.fs" included
Ainsi, au lancement de eForth, il suffira de saisir :
include sandbox.fs
A vous de vous organiser pour être le plus efficace lors de vos développements.
Legal: site web personnel sans commerce / personal site without seling