Autres articles / Other articles

Gestion des fichiers sources par blocs

publication: 18 juillet 2021 / mis à jour 3 avril 2022

Read this page in english

 


Appel à collaboration

Vous développez des montages, simples ou complexes avec ESP32 et ESP32forth.

Partagez-les ici sur ce site.

ESP32forth ne pourra se développer qu'avec la collaboration active de toutes les bonnes volontés.

Vos montages peuvent aider d'autres développeurs.

Les montages des autres développeurs peuvent vous aider.

Pour proposer un article ou un montage, cliquez ici


Les blocs

Ici un bloc sur un ancien ordinateur:

Un bloc est un espace de stockage dont l'unité a comme dimensions 16 lignes de 64 caractères. La taille d'un bloc est donc de 16x64=1024 octets. C'est très exactement la taille d'un Kilo-octet!

Ouvrir un fichier de blocs

Un fichier est déjà ouvert par défaut au démarrage de ESP32forth.

C'est le fichier blocks.fb

En cas de doute, exécutez default-use.

Pour savoir ce qu'il y a dans ce fichier, utilisez les commandes de l'aditeur en tapant d'abord editor.

Voici nos premières commandes à connaître pour gérer le contenu des blocs:

ATTENTION: un bloc a toujours un numéro compris entre 0 et n. Si vous vous retrouvez avec un numéro de bloc négatif, celà génère une erreur.

Editer le contenu d'un bloc

Maintenant que nous savons sélectionner un bloc en particulier, voyons comment y insérer du code source en langage FORTH...

Une stratégie consiste à créer un fichier source sur votre ordinateur à l'aide d'un éditeur de texte. Il suffira ensuite d'effectuer un copié/collé par ligne de votre code source vers les fichiers de blocs.

Voici les commandes essentielles pour gérer le contenu d'un bloc:

Voici notre bloc 0 en cours d'édition:

En bas d'écran, la ligne 10 R 6428 , 6561 , ..... est en cours d'intégration dans notre bloc à la ligne 10.

Vous remarquez que la ligne 0 n'a pas de contenu. Ceci génère une erreur à la compilation du code FORTH. Pour y remédier, on tape simplement 0 R suivi de deux espaces.

Avec un peu d'entrainement, en quelques minutes, vous aurez inséré votre code FORTH dans ce bloc.

Procédez de même pour les blocs suivants si nécessaires. Au moment de passer au bloc suivant, vous forcez la sauvegarde du contenu des blocs en tapant flush.

Compilation du contenu des blocs

Avant de compiler le contenu d'un fichier de blocs, nous allons vérifier que leur contenu est bien sauvegardé. Pour celà:

Pour compiler le contenu de vos blocs, vous disposez de deux mots:

La vitesse d'exécution et/ou de compilation du contenu des blocs est quasi instantanée.

Exemple pratique pas à pas

Nous allons voir, avec un exemple pratique, comment insérer un code source dans le bloc 1. Voici le code provenant de notre article intitulé Définition et manipulation de registres remis en forme et prêt à intégrer dans notre bloc:

1 list
editor
 0 r \ tools for REGISTERS definitions and manipulations
 1 r : mclr { mask addr -- }    addr @  mask invert and addr !  ;
 2 r : mset { mask addr -- }    addr @  mask or addr !  ;
 3 r : mtst { mask addr -- x }  addr @  mask and ;
 4 r : defREG: \ define a register, similar as constant
 5 r     create ( addr1 -- <name> )  ,
 6 r     does>  ( -- regAddr )       @  ;
 7 r : .reg ( reg -- ) \ display reg content
 8 r     base @ >r binary @ <#  
 9 r     4 for aft 8 for aft # then next
10 r     bl hold  then next  #> 
11 r     cr space ." 33222222 22221111 11111100 00000000"
12 r     cr space ." 10987654 32109876 54321098 76543210"
13 r     cr type  r> base !  ;
14 r : defMASK:  create ( mask0 position -- )    lshift ,
15 r     does> ( -- mask1 )              @  ;
save-buffers

Procédez simplement par des copié/collé partiels du code ci-dessus et exécutez ce code par ESP32 Forth:

Eteignez la carte ESP32. Redamarrez-là. Si vous tapez 1 list vous devez voir le code édité et sauvegardé.

Pour compiler ce code, tapez simplement 1 load.

Conclusion

L'espace de fichiers disponible pour ESP32forth est proche de 1,8Mo. Vous pouvez donc gérer sans souci des centaines de blocs pour les fichiers sources en langage FORTH. Il est conseillé d'installer des codes sources de parties de codes stables. Ainsi, lors de la phase de mise au point de programmes, il sera bien plus aisé d'intégrer à votre code en phase de mise au point:

2 5 thru \ integrate pwm commands for motors 

au lieu de recharger systématiquement ce code par ligne série ou WiFi.

L'autre intérêt des blocs est de permettre l'embarquement in situ de paramètres, tables de données, etc... utilisables ensuite par vos programmes.


Legal: site web personnel sans commerce / personal site without seling