Autres articles / Other articles

Installation de eForth et SDL2

publication: 5 novembre 2024 / mis à jour 5 novembre 2024

Read this page in english

 


L’installation de l’environnement de développement en langage Forth pour SDL2 ne nécessite que deux composants:

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 :

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 :

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