Communiquer avec Flash Forth
publication: 22 mai 2019 / mis à jour 11 juin 2019
Le développement d'applications FORTH sur ARDUINO passe par un logiciel de type terminal. Nous avons choisi, pour les premiers pas, un terminal très simple: PuTTY. Mais vous êtes libres d'exploiter n'importe quel terminal de votre choix.
Installation de PuTTY pour Windows
Le programme PuTTY est disponible ici: putty.org.
Dans cette page, suivez le lien: "You can download PuTTY here".
Dans la page suivante, vous aurez le choix entre différentes versions:

Etant sous Windows 10, nous avons téléchargé la version 64 bits (putty-64bit-0.71-installer.msi).
Une fois téléchargé, lancez cette application en toute confiance.

Menez l'installation à son terme.
Paramétrage de PuTTY
Une fois installé, lancez PuTTY. Vous devez voir ceci:

Nous allons créer une session personnalisée permettant de communiquer avec la carte ARDUINO MEGA 2560 qui utilise maintenant le langage FORTH.
On sélectionne le port COM7 pour notre cas. Cette valeur peut être différente sur votre PC. Vous trouverez le port de communication utilisé par la carte ARDUINO en ouvrant périphériques sous Windows:

On sélectionne la vitesse de communication à 38400 bps.
Enfin, on sélectionne Default Settings et on clique sur Save. Cette sauvegarde vous permettra de retrouver les paramétrages de PuTTY à la prochaine session terminal.
Utilisation du terminal PuTTY
On lance maintenant le terminal en cliquant sur Open en bas de PuTTY.
Si tout se passe bien, vous devez voir ceci:

FORTH est opérationnel!
Nous allons vérifier que tout fonctionne bien en exécutant notre premier mot: words.
Ceci affiche le contenu du dictionnaire FORTH:
p2+ pc@ @p hi d. ud. d> d< d= d0< d0= dinvert d2* d2/ d- d+ dabs ?dnegate dnegate s>d rdrop endit next for in, inline repeat while again until begin then else if zfl pfl xa> >xa x>r dump .s words >pr .id ms ticks r0 s0 latest state bl 2- ['] -@ ; :noname : ] [ does> postpone create cr [char] ihere char ' lit abort" ?abort ?abort? abort prompt quit true false .st inlined immediate shb interpret 'source >in tiu tib ti# number? >number ud/mod ud* sign? digit? find immed? (f) c>n n>c @+ c@+ place cmove word parse /string source user base pad hp task ulink rsave bin hex decimal . u.r u. sign #> #s # digit <# hold up min max ?negate tuck nip / u*/mod u/ * u/mod um/mod um* 'key? 'key 'emit p++ p+ pc! p! p@ r>p !p>r !p u> u< > < = 0< 0= <> within +! 2/ 2* >body 2+ 1- 1+ negate invert xor or and - m+ + abs dup r@ r> >r rot over swap drop allot ." ," s" type accept 1 umax umin spaces space 2swap 2dup 2drop 2! 2@ cf, chars char+ cells cell+ aligned align cell c, , here dp ram eeprom flash >< rp@ sp@ 2constant constant 2variable variable @ex execute key? key emit Fcy mtst scan skip n= rshift lshift mclr mset ic, i, operator iflush cwd wd- wd+ pause turnkey to is defer value fl+ fl- c! c@ @ x! x@ a> ! >a literal int! ;i di ei ver warm empty rx1? rx1 tx1 rx0? rx0 tx0 load- load+ busy idle exit
Notre première définition
Si le terminal PuTTY (ou tout terminal de votre choix) communique parfaitement
avec votre carte ARDUINO, vous pouvez maintenant créer de nouveaux mots. En FORTH,
un mot est l'équivalent en langage C d'une fonction. Notre premier mot bonjour:
: bonjour ( --)
." Bonjour tout le monde" cr
." Bienvenue dans mon application" cr ;
Vous pouvez taper cet exemple depuis le clavier, ou faire un copié/collé dans le terminal. Sous Windows, c'est l'appui sur le bouton droit de la souris qui va coller le texte dans le terminal.
attention à la casse des caractères
La version FORTH Flash Forth pour ARDUINO est sensible à la casse. En clair, si un mot est disponible ou compilé en caractères minuscules, il devra être utilisé avec ces mêmes caractères minuscules.
Appuyez ensuite une ou deux fois sur Enter au clavier et tapez bonjour
pour exécuter le code compilé. Affichage:

Voilà! Vous venez de compiler votre premier mot en FORTH, puis de l'exécuter!
Le même programme en langage C aurait nécessité une compilation sur PC, puis téléversement
vers l'Arduino. Ici, certes, notre premier mot bonjour est très simple.
Mais dès que les programmes deviennent plus complexes, ce sera d'incessantes compilations et téléversements nécessaires pour la phase de mise au point.
Tandis que FORTH embarque l'interpréteur et le compilateur dans la carte ARDUINO. Cette intercativité et cette souplesse seront un atout majour pour mettre au point des mots complexes.
Revenons à notre nouveau mot bonjour. Il fait maintenant partie du
dictionnaire FORTH comme tous les autres mots déjà définis. Avec FORTH, il n'y a pas
le langage et l'application. Votre application FORTH devient une extension du langage
FORTH. Pour bien comprendre ceci, tapons au clavier le mot words qui
affiche le contenu du dictionnaire. Ici les 3 dernières lignes qui s'affichent suite à l'exécution
de words:
x! x@ a> ! >a literal int! ;i di ei ver warm empty rx1? rx1 tx1 rx0? rx0 tx0 load- load+ busy idle exit bonjour marker ok<#,ram>
On y voit notre mot bonjour.
Débranchons la carte ARDUINO et fermons le terminal PuTTY.
Rebranchons la carte ARDUINO et relançons le terminal PuTTY. Tapons à nouveau
words. Le mot bonjour précédement compilé est
toujours dans le dictionnaire!
Et pour l'exécuter, il suffit de taper à nouveau bonjour.
Oui. Mais on veut passer à des applications plus sérieuses et ne pas s'encombrer
avec ce mot bonjour. C'est très simple, on tape
empty warm et le mot bonjour aura disparu du dictionnaire
et l'espace mémoire pris par ce mot récupéré et donc disponible pour d'autres nouveaux mots.
