				Le compilateur
				**************

	Ce programme spar permet, avec la librairie FORTH.LIB, de gnrer un
programme excutable indpendant  partir d'un fichier source cr sous
l'interprteur FORTH.

1 Installation
**************

	Il faut pour cela disposer de:
	COMP.PRG		le compilateur
	FORTH.LIB		la librairie
	COMP.INF		quelques paramtres gnraux

comp.inf
--------
	fichier texte de 4 lignes contenant les infos suivantes:
	Premire ligne
	Taille  rserver pour la compilation (le source+FORTH.LIB+la table
de relogement+la partie compile elle mme) au format:
	%xxx+ (ou -)yyyyy, c'est  dire xxx% de la mmoire libre plus (ou
moins) yyyyy Ko. Par exemple %100-400 rservera tout moins 400Ko. Si le
code contient la commande >exec (appel d'un programme externe), il
faudra absolument laisser de la place.

	Deuxime ligne
	chemin d'accs aux fichiers sources *.FOR

	Troisime ligne
	chemin complet d'accs  forth.lib

	Quatrime ligne
	chemin d'accs au rpertoire des excutables (*.PRG) gnrs.

	Un fichier possible est:

	%50+100
	F:\FORTH\SOURCES\*.FOR
	F:\FORTH\FORTH.LIB
	F:\FORTH\PROGRAMS\*.PRG

2 Utilisation
*************

	Pour compiler un programme, il suffit d'avoir cr un fichier source
sous l'interprteur (*.FOR) et de lancer COMP:
	1) dans le slecteur, choisissez le fichier source  compiler
	2) dans la fentre s'inscrivent les oprations ralises:
		- si une erreur se produit elle est signale et le traitement
interrompu
		- si tout va bien, un slecteur s'ouvre  nouveau
	3) indiquez le nom et le chemin pour le programme  crire
	Le programme est maintenant disponible sur disque. Il ne faut pas
s'inquiter de sa taille impressionnante pour un source de quelques lignes, la
taille augmente peu par la suite avec un source plus gros.
	Attention: Sous le compilateur, on ne peut pas utiliser les fichiers
*.TXT obtenus avec export, il faut imprativement utiliser les fichiers *.FOR
obtenus avec saveb ou append.

3 Piges  viter
*****************

	Un programme tournant parfaitement sous l'interprteur peut parfois
avoir un comportement surprenant une fois compil. Voici des erreurs
classiques:

1)	J'cris sous l'diteur ceci:
	: plus
		fastopen drop
		1 2 + .
		key drop ;
	Je le compile avec compilb puis je le lance, il m'affiche bien 3 sous
l'interprteur. Je le passe  COMP et le programme excutable ne fait rien
(retour immdiat au bureau).
	Ce qui manque  mon source, c'est l'opration 'lancer le mot plus' que
j'excutais  part sous l'interprteur. Il faut donc ajouter  mon source une
ligne contenant le mot  excuter:

	plus

	En fait un programme compil ragit comme l'interprteur, et ce
source ne comportait aucune partie excutable, seulement une dfinition. De
ce fait, le programme s'est content d'enrgistrer la dfinition et n'a rien
trouv  excuter!

2)	Le compilateur (ainsi que l'interprteur) ne s'occupent que des lignes
valides par Enter, il faut donc qu'il y ait une ligne vide qui suive la dernire
ligne de texte. En l'absence de cette ligne fantme, les derniers ordres du
programme pourraient tre oublis.

3)	Sous l'interprteur il existe toujours une fentre ouverte, l'utilisation
de Fastopen n'est donc pas ncessaire, par contre pour un programme
indpendant ceci est indispensable avant toute sortie graphique (textes ou
autres), de plus Fastopen renvoit le handle de la fentre, ce qui permet de la
personnaliser (en changeant le titre par exemple avec wind_set).

4 Programmes "normaux"
**********************

	On dira qu'un programme est "normal" lorsqu'il est excut  partir du
bureau et non  partir du dossier AUTO ou en tant qu'accessoire. Dans ce cas
une station VDI interne est ouverte (pour les sorties textes simples) ainsi
qu'une station externe pour l'utilisateur avec l'identificateur dans la variable
mot handle.
	Dans ce cas, fastopen ouvre une fentre semblable  celle de
l'interprteur FORTH et fastclose la referme (inutile en fin de programme,
car la routine de sortie assure la fermeture avant de revenir au bureau).
	En gnral, la taille de la zone rserve au dictionnaire est suffisante
pour toutes les applications, mais dans certains cas l'utilisation de "reserve"
pourra tre ncessaire (voir le paragraphe suivant). Cette taille est gale aux
trois quarts de la mmoire libre.

5 Accessoires
*************

	Comme pour un programme normal, deux stations VDI sont ouvertes
et fastopen/fastclose ne grent que la fentre simple.
	Un accessoire, par nature, reste prsent en mmoire attendant qu'on
le rveille. De ce fait, si les 3/4 de la mmoire lui sont allous, il ne restera
pas grand chose pour les autres applications. Un mot grant la taille du
dictionnaire est donc indispensable:

reserve
-------
	n  p  reserve  : fixe la taille du dictionnaire  p% de la mmoire libre
plus n koctets. Par exemple:
	10  0  reserve		: rserve 10 ko
	0   100 reserve	: rserve toute la mmoire
	-50  100 reserve	: toute la mmoire moins 50Ko
	0  75  reserve		: les 3/4 de la mmoire
	Renvoit sur la pile un code d'erreur GEMDOS (ngatif) ou la taille en
octets alloue (positif).
	Effet de bord: reserve re-alloue une table de gestion des variables
dynamiques de 1028 octets. Voir les structures et l'instruction settable. De ce fait il
faut au moins laisser 1028 octets libres avec reserve!

	En l'absence d'instruction reserve, les 3/4 de la mmoire sont allous
comme pour un programme normal. Si on utilise reserve, cette instruction
doit prcder toutes celles utilisant le dictionnaire (dclaration de variables,
cration de mots, instructions assembleur etc...), le plus simple est de mettre
reserve sur la premire ligne du source!
	Pour dterminer la taille ncessaire, il suffit de lancer l'accessoire sans
reserve et, au moment ou vous jugez que l'utilisation qu'il fait du
dictionnaire est maximale, lui faire afficher la valeur de full (mmoire
occupe dans le dictionnaire).

6 Les programmes AUTO
*********************

	Ce sont les programmes excuts  partir du dossier AUTO avant
l'installation de l'AES. De ce fait les instructions AES ne sont pas disponibles!
Lors du lancement, aucune station VDI n'est ouverte. C'est fastopen qui le
ralisera (une station physique interne pour les sorties de texte plus une
station virtuelle pour l'utilisateur). Ceci permet de modifier la rsolution de
l'cran avant puis d'ouvrir proprement une station VDI aux nouvelles
dimensions. Fastopen ouvre la page0 sur tout l'cran et l'efface par la mme
occasion, pour l'instant, la valeur renvoye par fastopen est toujours 1 dans
un programme AUTO, et donc inutile.
	Fastclose referme les deux stations (attention, plus d'instructions VDI
utilisables! plus de sorties de textes non plus (sauf avec les mots GEMDOS)).
Ceci permet par exemple de commencer un programme en basse rsolution
puis de passer  la moyenne rsolution, toujours en accdant proprement au
VDI avec plusieurs couples fastopen et fastclose successifs. Fastclose n'est pas
ncessaire en fin de programme car la routine de sortie s'en charge.
	Rappelons que la souris (mousex, mousey, mousek, v_show_c,
v_hide_c) est gre par le VDI, donc accessible dans un programme AUTO
ds que fastopen est appel.

7 Programmes STE ou TT/Falcon
*****************************

	En utilisant COMPSTE.PRG et FORTHSTE.LIB on gnrera des
programmes compatibles avec le STE (et peut-tre avec le STF). C'est  dire
qui vitent l'utilisation de codes rservs au MC68030 et au coprocesseur
MC68882. Ces programmes tournent galement sur TT et Falcon. Avec
COMP.PRG et FORTH.LIB les programmes ne tourneront que sur TT/Falcon.
	Il faudra galement crer des fichiers FORTHSTE.INF et
COMPSTE.INF pour fixer les paramtres gnraux.

8 Instructions complmentaires
******************************

basepage
--------
	renvoie l'adresse de la Basepage du programme, sous l'diteur il s'agit
de la basepage du FORTH.

vq_aes
------
	renvoie 0 si l'AES est disponible et -1 si le programme est lanc 
partir du dossier AUTO. Sous l'interprteur on obtient toujours 0.

_app
----
	renvoie 0 si le programme est lanc en tant qu'accessoire (ACC) et
une valeur non nulle si il est lanc en tant qu'application (PRG, TOS, TTP...).
Sous l'interprteur on obtient toujours une valeur non nulle.