		INITIATION AU FORTH
		*******************


	Suite  l'article du ST Mag 121 vous avez t plus nombreux que
prvu  me demander le pack complet de dveloppement en FORTH, ce qui,
soit dit en passant, m'a fait normment plaisir.
	Puisque vous vous lancez dans un langage tout nouveau pour
certains, je vous propose de vous guider dans les premiers pas afin que
la lecture de l'norme manuel ne vous fasse pas baisser les bras.

L'INTERPRETEUR
**************

	Il est limit au strict minimum en ce qui concerne l'interface:
une fentre. Il m'a sembl plus simple, puisqu'on a  faire  un langage
de programation, d'utiliser le moins possible le GEM. Ainsi, votre
programme peut afficher sa barre de menu, utiliser 6 autres fentres,
etc... sans qu'une partie des ressources soient rserves 
l'interprteur.
	Si on dsire accder aux accessoires ou autres applications,
redimensionner la fentre, on utilise la commande "desk" qui vous permet
de vous promener dans le bureau sans quitter le FORTH. (Prenez garde  la
distinction majuscules minuscules avec ce langage: desk n'est pas gal 
DESK).

EXECUTER UN PROGRAMME
*********************

	On trouve sur la disquette quelques petits programmes de
dmonstration. Par exemple WINDOW3 qui met en oeuvre les messages GEM dans
la gestion simultane de 3 fentres.
	Tapez "loadb" (load buffers) et, dans le slecteur de fichier,
choisissez "WINDOW3.FOR". Pour visualiser le source, tapez "edit" et
promenez vous dans le texte. On revient  l'interprteur avec la touche "Esc".
Pour l'excuter tapez "compilb" (compile buffers), le programme se lance
automatiquement. L, vous pouvez grer vos tois fentres, on en sort en
les fermant toutes.
	Pour relancer le programme, il ne faut pas recompiler, le mot
principal s'appelle "main" et reste prsent en mmoire tant qu'on ne l'a
pas effac. En tapant "main" on retourne  nos fentres!
	Important: avant de lancer un nouveau programme, il faut effacer
l'ancien! En effet, le mode par dfaut en FORTH est la fusion des donnes!
("merge" pour le Basic). Alors, tapez "vlist" et s'affiche la liste des
mots crs par l'utilisateur. Cette liste commence par "n X Y L H ..." et
se termine par " ... main" pour WINDOW3. Il suffit d'excuter "forget n"
afin que le mot "n" ainsi que tous ceux qui le suivent soient effacs du
dictionnaire (forget = oublier). Deuxime travail, il faut aussi vider le
texte de l'diteur, c'est encore la fusion qui est le mode par dfaut sous
l'diteur, le mot "buf!" s'en charge.

CREONS UN PETIT PROGRAMME
*************************

	Assurez vous, avec "vlist" que tout est effac, ainsi qu'avec
"buf!" que l'diteur est vide. Si vous n'tes pas srs de vous, quittez le
FORTH et relancez-le (c'est un peu brutal, mais efficace).
	A l'aide de "edit" on passe sous l'diteur. Nous allons programmer
un mot qui fournit en retour la racine carre (valeur entire par dfaut)
d'un nombre entier. Nous utilisons pour a l'algorithme de Babylone bien
connu qui n'est finalement qu'un cas particulier de mthode de Newton
applique  la fonction f(x)=x^2-A.

	Tapez donc ceci:

: racine
	dup 2/
	31 ndo
		over over
		/
		+
		2/
	nloop
	swap drop
;

	Pensez  bien valider la dernire ligne contenant le ";" car le
FORTH ne conserve que les lignes valides par Return. Sortez avec "Esc" et
compilez le programme avec "compilb". Vrifiez avec "vlist" que le mot
racine est bien prsent.

	Ensuite essayez:

	250 racine .

	Le point sert  afficher le rsultat, vous obtenez 15. En effet,
15*15=225<250 et 16*16=256>250. Essayez pour d'autres valeurs, le mot
fourni bien la partie entire de la racine carre.

	Si vous voulez vous rendre compte de l'algorithme en lui mme vu de
l'intrieur, tapez la ligne suivante:

	1 trace 250 racine . untrace

	Vous basculez en mode "trace" et le bas de l'cran affiche, pour
chaque mot excut, l'tat de la pile juste AVANT son excution. Avancez
pas  pas avec Return. Vous verrez que, bien avant la fin des 31 boucles,
la valeur 15 est dj atteinte. Ceci car 250 est un nombre assez petit.
	L'algorithme calcule  chaque itration (x + A/x)/2 et utilise
cette valeur comme nouvel x, plus proche  chaque fois de la racine carre
de A qu'on recherche. Le programe commence avec x=A/2.

COURAGE!
********

	Ne pensez pas que ce FORTH ne soit qu'un petit jeu de l'esprit et
qu'aucune application srieuse ne peut tre dvelopp avec. Il en est
sorti un soft de gnalogie: chargement de la base de donnes, gestions
d'images, de sons, utilisation de SpeedoGDOS pour les fontes ainsi que
pour l'impression couleur, utilisation d'un menu, gestion des vnements
GEM, lecture des Cookies pour l'adaptation  la carte graphique, etc...
	D'ici la prochaine fois, imprimez votre manuel et testez les
petits bouts de programmes qui sont donns en exemple tout au long des
chapitres. Par la suite, nous concevrons une petite application avec un
micro menu, bonne lecture!

	Guillaume Tello
	gtello@wanadoo.fr