	11 .	Routines additionnelles


	11.1 Macros


		Les macro-instructions sont trs utiles pour rendre un code plus 
lisible, elles augmentent la portabilit mais il faut les utiliser  bon es-
cient sinon on grossit la taille du code gnr de faon dmesure : tu-
dier si un BSR ne serait pas aussi efficace.
		Les macros prennent parfois des paramtres en entre : ils sont 
\1 pour le premier, \2 pour le second et ainsi de suite.

save:
	Cette macro sert  sauvegarder un ou plusieurs registres sur la pile. Il 
faut prciser la taille des registres : mot ou mot long.
	exemple : save.w d0/d5 ou bien save.l d0-a6

load:
	Cette macro vient en complment de la prcdente : elle permet de re-
charger des registres stocks sur la pile, prcisez ici aussi la taille des re-
gistres.
	exemple : load.w d0/d5 ou bien load.l d0-a6

appel:
	Cette macro permet d'appeler une fonction bios, xbios ou autre en une 
seule ligne :
	exemple :
	 appel dos,7,2 : fera un appel  la fonction 7 du DOS en restaurant la 
pile le 2 octets (1 mot) aprs l'appel. C'est quivalent aux 3 lignes de co-
de suivantes :

		move.w #7,-(sp)
		trap #dos
		addq.l #2,sp

SYNCHRO_GEM:
	Permet de se synchroniser avec le GEM avant de sortir d'un program-
me. Vide les buffers clavier en attente, synchronisation trame verticale.

RESOLUT:
	Permet de changer de rsolution, en prenant quatre paramtres :
		\1 : le mode vido parmi :
			- res64048016
			- res640480256	
			- res320480tc
			- res32020016		: compatible basse
			- res32024016
			- res32048016
			- res320240256
			- res320240tc
		\2 : le type de rsolution => 0:ST / 3:FALCON
		\3 : l'adresse de l'cran logique
		\4 : l'adresse de l'cran physique

MOUSEOFF:
	Permet de cacher la souris.

MOUSEON:
	Permet de montrer la souris si elle a t cache avec mouseoff par 
exemple.

FILE_OPEN:
	permet d'ouvrir un fichier en lecture, criture en un seul appel : 3 para-
mtre :
		\1 : read (lecture seule) /write (cration ou efface s'il existe) / 
read_write (lecture ou criture :  associer avec des fseek)
		\2 : nom du fichier soit dans un registre (a0-a6) soit un label : 
pour un pea.
		\3 : registre de destination pour le handle ou le code d'erreur en 
retour.

RESERVE_SCREENS:
	permet de rserver un certain nombre d'crans et de changer de rsolu-
tion. (pour un swapping d'crans d'une dmo par exemple) Les deux pa-
ramtres sont :
		\1 : nombre d'crans
		\2 : resolution (cf. RESOLUT)
	Doivent tre dfinies aussi les 3 constantes suivantes :
		x_max_p : nombre de pixels horizontaux
		y_max_p : nombre de pixels verticaux
		nb_bits_per_pix : nombre de bits pour un pixel dans la rsolu-
tion spcifie.

	Les x adresse (x * 1.L) des crans seront disponibles dans un tableau 
commenant au label ecrans. Ces crans seront aligns sur des multiples 
de 256 octets.

CHANGE_RESOLUT:
	Cette macro est la mme que RESERVE_SCREENS avec unique-
ment la partie changement de rsolution, sans rservation d'cran.

RESTORE_SCREENS:
	Cette macro restaure l'adresse et la rsolution de l'cran aprs l'usage 
de CHANGE_RESOLUT.

COLOR256:	
	Cette macro permet de mettre la couleur du fond  une certaine couleur 
si vous tes en mode 256 couleurs. Si le flag FLG_INIBE_COLOR est 
dfini, le changement ne sera pas effectu. Cette macro est utile pour es-
timer un temps machine en phase dbug et on dfinit le flag quand on ne 
veut plus de changement.

COLOR:
	Identique a la macro COLOR256 mais en 16 couleurs ici.

ZILOGR:
	Ceci sert  lire un registre du Zilog prsent sur le Falcon. Les 3 para-
mtres sont :
		\1 : registre du Zilog
		\2 : registre de destination de lecture
		\3 : canal : 'A' ou 'B'

ZILOGW:
	Ceci sert  crire un registre du Zilog prsent sur le Falcon. Les 3 para-
mtres sont :
		\1 : registre du Zilog
		\2 : octet  t crire
		\3 : canal : 'A' ou 'B'

COPY_STRING:
	Trs utile lors de la manipulation de chanes de texte pour copier une 
chane d'une adresse vers une autre. Les 3 paramtres sont :
		\1 : adresse de la chane source pointe par une registre.
		\2 : adresse de destination pointe par une registre.
		\3 : octet qui marque la fin de la chane source : lui aussi sera 
copi.

COPY_STRING_0:
	Idem  COPY_STRING mais pour le cas trs frquent d'une chane 
termine par un 0. Ne prend que 2 paramtres :
		\1 : adresse de la chane source pointe par une registre.
		\2 : adresse de destination pointe par une registre.


Les macros suivantes sont des fonctions systme mises en macro car el-
les sont souvent utilises.

CRAWCIN:
	Attend une touche au clavier et la renvoie dans d0.

SUPEXEC:
	Execute une fonction superviseur dont l'adresse est dans : \1 et qui se 
termine par un rts.

VSYNC:
	Synchronisation avec le balayage vertical.

VSETMODE:
	Change de mode vido.

CCONWS:
	Affiche une chane  l'cran en mode terminal: \1 adresse de la chane.

FATTRIB:
	Lit est modifie les attributs d'un fichier : \1 attribut, \2 flag, \3 nom du 
fichier.

FDELETE:
	Efface un fichier : \1 nom du fichier.

FREAD:
	Lecture d'un fichier :	
		\1 : adresse du buffer.
		\2 : longueur  lire
		\3 : handle du fichier

FWRITE:
	criture d'un fichier :	
		\1 : adresse du buffer.
		\2 : longueur  crire
		\3 : handle du fichier

FSEEK:
	Dplacement du pointeur de lecture/criture dans un fichier.
		\1 : mode : 0:depuis le dbut 1:depuis l'endroit courant 2:depuis 
la fin
		\2 : handle du fichier
		\3 : offset dans le fichier

FCLOSE:
	Fermeture d'un fichier dont le handle est : \1.

FSFIRST:
	Trouve le premier ficher correspondant aux attributs :
		\1 : attributs du chier
		\2 : pointeur sur une chane reprsentant le masque du nom du 
fichier.
	Le rsultat sera dans le buffer DTA courant.

FSNEXT:
	Trouve le fichier suivant correspondant aux critres spcifis avec 
FSFIRST.
	Le rsultat sera dans le buffer DTA courant.

DGETDRV:
	Donne le lecteur courant dans d0.

DSETDRV:
	Change le lecteur courant  celui spcifi dans \1.

DGETPATH:
	Recherche du chemin courant sur le lecteur spcifi :
		\1 : lecteur dont on veut le chemin courant.
		\2 : tampon o stocker le chemin en retour.

DSETPATH:
	Change le chemin par dfaut sur le lecteur courant  celui spcifi dans 
\1.

FSETDTA:
	Change l'adresse du buffer DTA  l'adresse spcifie dans \1.

FGETDTA:
	Rcupre d'adresse du DTA courant dans d0.

MALLOC:
	Alloue la quantit de mmoire \1 et retourne dans d0 l'adresse.

MXALLOC:
	Permet d'allouer de la mmoire en choisissant son type :
		\1 : type de mmoire : 
			RAM_ST		: ST - Ram uniquement
			RAM_TT		: TT - Ram uniquement
			RAM_ST_TT	: si possible ST - Ram sinon TT - Ram
			RAM_TT_ST 	: si possible TT - Ram sinon ST - Ram
		\2 : quantit en octets

MFREE:
	Libration d'un bloc de mmoire allou quel que soit son type. \1 poin-
te sur le dbut du bloc.

SUPER:
	Passe en mode superviseur si \1=0 ou bien dtermine en quel mode on 
se trouve (User ou Superviseur) si \1=1.

USER:
	Passe du mode Superviseur en mode User.


	11.2 Librairies tendues


	Ce sont des fonctions dont se sert le noyau Visual. Vous pouvez y faire 
appel pour votre gestion systme, l'ensemble des routines qui peuvent 
tre utiles  un programmeur averti en GEM y sont prsentes.
	Certaines de ces fonctions sont implantes en fonction des dfinitions 
places dans le fichier .DEF. Reportez-vous  la section concernant le fi-
chier .DEF pour plus de renseignement.

GWVA_COUNT_BYTES_0:
	Entre		a0.l	= pointeur.
	Sortie		d0.l	= longueur de la chane.

	Retourne dans d0.l la longueur de la chane pointe en son dbut par 
a0.l et termine par un 0.

GWVA_COUNT_BYTES:
	Entre		a0.l	= pointeur,
			d1.b	= valeur de fin de chane.
	Sortie		d0.l	= longueur de la chane.

	Retourne dans d0.l la longueur de la chane pointe en son dbut par 
a0.l et termine par l'octet contenu dans d1.b.

GWVA_APP_OBJ_STORE_CURRENT_PATH:
	Entre		a0.l	= pointeur
	Sortie

	Stocke  l'adresse pointe par a0.l le chemin complet courant sous le 
format suivant :
	X:\PATH\		X est l'unit et PATH le chemin entier par ex. 
\TOOLS\COMMS\

GWVA_APP_OBJ_SET_PATH:
	Entre		a0.l	= pointeur
	Sortie

	Change le chemin et le lecteur courant pour qu'il soit celui spcifi par 
la chane pointe par a0.l et termin par un 0. Par ex. X:\PATH\

GWVA_APP_OBJ_SEARCH_SYSTEM_COOKIES:
	Entre
	Sortie

	Cette fonction sert  l'initialisation pour chercher les cookies par d-
faut, vous ne devriez pas vous en servir autrement qu'en exemple.
	Fonction  appeler par un SUPEXEC.

GWVA_APP_OBJ_SEARCH_ONE_COOKIE:
	Entre		Dans GWVA_APP_OBJ_SEARCH_IN_OUT
	Sortie		Dans GWVA_APP_OBJ_SEARCH_IN_OUT

	Recherche d'un cookie.
	Il faut spcifier dans GWVA_APP_OBJ_SEARCH_IN_OUT la 
chane de 4 caractres identifiant le cookie et on aura en sortie dans le 
mme pointeur soit 0.l s'il n'a pas t trouv soit un pointeur sur le mot 
long suivant la chane qui tait cherche.
	Fonction  appeler par un SUPEXEC.

GWVA_APP_OBJ_SEARCH_ONE_XBRA:
	Entre		Dans GWVA_APP_OBJ_SEARCH_IN_OUT
	Sortie		Dans GWVA_APP_OBJ_SEARCH_IN_OUT

	Cette fonction permet de rechercher une routine XBRA pour un vec-
teur donn.
	Indiquez dans GWVA_APP_OBJ_SEARCH_IN_OUT le vecteur 
(exemple : $44e.l), et indiquez dans 
GWVA_APP_OBJ_SEARCH_IN_OUT+4 le texte du vecteur (exemple 
"XHDI").
	En retour, vous recevrez dans 
GWVA_APP_OBJ_SEARCH_IN_OUT un pointeur sur le mot long 
aprs la chane textuelle demande ou 0.L si la chane reste introuvable.
	Fonction  appeler par un SUPEXEC si une adresse de base se situe 
dans une zone inaccessible en mode user.

GWVA_APP_OBJ_INSTALL_ONE_XBRA:
	Entre		Dans GWVA_APP_OBJ_SEARCH_IN_OUT
	Sortie		Dans GWVA_APP_OBJ_SEARCH_IN_OUT

	Cette routine permet d'insrer facilement une routine XBRA dans un 
vecteur systme.
	Prcisez dans GWVA_APP_OBJ_SEARCH_IN_OUT le vecteur o 
installer la routine, et prcisez dans 
GWVA_APP_OBJ_SEARCH_IN_OUT+4 un pointeur sur la nouvelle 
routine (les trois mots longs qui la prcde doivent tre : XBRA, "TEXT" 
et 0.L)
	Vous aurez en retour dans GWVA_APP_OBJ_SEARCH_IN_OUT un 
0.L si l'installation s'est passe correctement.
	Fonction  appeler par un SUPEXEC si une adresse de base se situe 
dans une zone inaccessible en mode user.

GWVA_APP_OBJ_REMOVE_ONE_XBRA:
	Entre		Dans GWVA_APP_OBJ_SEARCH_IN_OUT
	Sortie		Dans GWVA_APP_OBJ_SEARCH_IN_OUT

	Cette routine permet de supprimer facilement une routine XBRA dans 
un vecteur systme.
	Prcisez dans GWVA_APP_OBJ_SEARCH_IN_OUT le vecteur o 
se trouve la routine  dsinstaller et prcisez dans 
GWVA_APP_OBJ_SEARCH_IN_OUT+4 le texte correspondant  la 
routine XBRA  dsinstaller.
	Vous recevrez en retour dans GWVA_APP_OBJ_SEARCH_IN_OUT 
soit -1 si la routine n'a pas t trouve, ou 0.L si la routine a t correcte-
ment enleve.
	Fonction  appeler par un SUPEXEC si une adresse de base se situe 
dans une zone inaccessible en mode user.

GWVA_SHOW_MENU:
	Entre		a0.l	= pointeur du menu
	Sortie		

	Affiche une barre de menu en haut de l'cran avec dans a0.l le pointeur 
sur son arbre.

GWVA_HIDE_MENU:
	Entre		a0.l	= pointeur du menu
	Sortie		

	Permet de cacher un menu (avant de faire un PEXEC en systme mo-
notche par exemple) en passant dans a0.l l'adresse de l'arbre du menu.

GWVA_CHECK_MENU:
	Entre		a0.l	= pointeur du menu
			d0.w	= numro du menu
			d1.w	= effacer le tag (0), afficher le tag (1)
	Sortie		

	Permet de tagger un lment de menu en passant dans a0.l l'adresse de 
l'arbre menu dans d0.w le numro du menu et dans d1.w soit 0 pour effa-
cer le tag soit 1 pour l'afficher.

GWVA_GREY_MENU:
	Entre		a0.l	= pointeur du menu
			d0.w	= numro du menu
			d1.w	= griser(0), d-griser (1)
	Sortie		

	Permet de griser un lment de menu en passant dans a0.l l'adresse de 
l'arbre menu, dans d0.w le numro du menu et dans d1.w soit 0 pour le 
griser soit 1 pour l'tat normal.

GWVA_FIND_FATHER_OBJECT:
	Entre		a0.l	= pointeur du menu
			d0.w	= numro de l'objet
	Sortie		a0.l	= pointeur sur le pre
			d0.w	= numro du pre
			d7.w	= 0 si le numro du pre est valide, -1 sinon

	Cette routine permet de trouver le pre d'un objet dans un formulaire 
en connaissant son fils. Indiquez dans a0.l le pointeur sur l'arbre formu-
laire contenant l'objet, et dans d0.w le numro du fils dont on cherche le 
pre.

GWVA_ENABLE_DISABLE_OBJECT:
	Entre		d0.w	= numro de l'arbre formulaire
			d1.w	= numro de l'objet dans l'arbre
			d2.w	= nouvel tat  : 0=activ 1=dsactiv
	Sortie

	Permet de changer l'tat (activ/dsactiv) d'un objet dans un formulai-
re.

GWVA_SHOW_HIDE_TREE:
	Entre		d0.w	= numro de l'arbre formulaire
			d1.w	= numro de l'objet dans l'arbre
			d2.w	= nouvel tat : 0=normal 1=cach
	Sortie

	Permet de cacher ou non un objet et ses fils dans un formulaire.

GWVA_CALL_FSEL_CP_BSS_UPDATE_FORM:
	Entre		a0.l	= texte utilisateur pour le fileselector : 35 caract-
res max.
			a1.l	= masque pour le fileselector: 18 caractres max
			a2.l	= pointeur sur un ventuel ancien pathname : 
"A:\TEMP\" ou sinon 0.l
			a3.l	= pointeur sur le BSS utilisateur  remplir avec le 
retour du fileselctor
			a4.l	= pointeur sur la structure de la fentre-formulaire 
o est l'objet  redessiner
			d0.w	= numro du formulaire o se trouve le texte  
remplir pour mise  jour
				   graphique ou 0.w si pas de mise  jour (d1-d2 
inutiliss dans ce cas)
			d1.w	= numro de l'objet graphique texte  remplir avec 
le contenu du
				   fileselector en faisant attention de ne pas dpas-
ser la taille
			d2.w	= si longueur de la slection > longueur de l'objet 
dans le formulaire alors :
					0 : alignement  gauche (PATH~)
					1 : alignement  droite (~PATH)
					2 : centr (PATH~NAME)
			d3.w	= 0 : recopier le nom (8+3) uniquement (cf. fi-
le_selector)
				   1 : recopier le path uniquement
				   2 : recopier tout le pathname
	Sortie		d7.w	= 0 : opration OK ou bien <>0 : erreur fileselector

	Cette fonction trs puissante, permet d'appeler un slecteur de fichier 
et de faire la mise  jour d'un buffer avec le rsultat et en option la copie 
vers un objet graphique (objet texte dans formulaire).
	Typiquement : vous avez un texte dans un formulaire ; sur un click 
dessus, vous dsirez qu'un slecteur de fichiers soit appel et qu'un de 
vos buffers interne soit rempli avec la slection de l'utilisateur et qu'en 
plus, bien sur, le contenu de votre objet graphique soit rempli avec la 
nouvelle slection et qu'un REDRAW soit effectu.
	Cette fonction a besoin, pour compiler, que les labels 
LIB_FSEL_BSS_FORM et LIB_FILESELECTOR soient dfinis.

GWVA_NO_FSEL_CP_BSS_UPDATE_FORM:
	Entre		a0.l	= pointeur sur la structure de la fentre o est l'ob-
jet  redessiner (ne sert
				   pas si pas de redraw)
			a1.l	= pointeur sur le buffer texte source pour la recopie 
dans le formulaire.
			d0.w	= numro du formulaire o se trouve le texte  
remplir pour la mise  jour
				   graphique
			d1.w	= numro de l'objet graphique texte  remplir avec 
le contenu du buffer
				   source.
			d2.w	= si la longueur de la slection>longueur de l'objet 
dans le formulaire alors :
					0 : alignement  gauche (PATH~)
					1 : alignement  droite (~PATH)
					2 : centr (PATH~NAME)
			d3.w	= 0 : pas de redraw de la fentre, 1=faire un redraw

	Cette fonction est la pendante de la prcdente (qui l'appelle d'ailleurs).
	Elle copie un texte dans un objet graphique texte d'un formulaire avec 
justification si le texte source a une longueur suprieure  la longueur 
prvue dans le formulaire.
	Typiquement cette fonction servira en association avec la prcdente, 
pour l'initialisation des champs de texte du formulaire avant le premier 
appel d'un slecteur de fichier.
	Elle a besoin des mmes dfinitions que sa soeur. (cf. ci-avant)

RSC_ALERT_BOX:
	Entre		d0.w	= numro de l'alert-box dans le ressource
			d1.w	= numro du bouton par dfaut : gauche(1), mi-
lieu(2), droite(3)
	Sortie		d0.w	= numro du bouton slectionn

	La faon la plus simple de faire une bote d'alerte dans un programme, 
c'est de l'inclure dans le ressource puis d'appeler cette routine avec com-
me paramtres :
	On a en retour dans d0.w le numro du bouton choisi finalement.

ALERT_BOX:
	Entre		a0.l	= pointeur sur une chane d'alerte
			d0.w	= numro du bouton par dfaut gauche(1), mi-
lieu(2), droite(3)
	Sortie		d0.w	= numro du bouton slectionn

	Cre une boite d'alerte GEM. La chane d'alerte  le format :
	"[numro boite 
d'alerte][ligne1|ligne2|...|ligne5][bouton1|bouton2|bouton3]",0
	Le numro de la boite peut aller de 0  3 (jusqu' 5 sur l'AES 4.1.)

RETURN_TREE_OBJ_PTR:
	Entre		a0.l	= pointeur,
			d0.w	= numro de l'arbre.
	Sortie		Dans (a0.l)

	Cette fonction va stocker dans le mot long point par a0.l l'adresse de 
base du formulaire dont le numro de l'arbre est spcifi dans d0.w.

GWVA_PRG_MODAL_FORM:
	Entre		d0.w	= numro de l'arbre
	Sortie		d0.w	= numro de l'objet

	Cette fonction permet d'appeler un formulaire d'une faon bloquante, 
en passant dans d0.w le numro de l'arbre, on rcupre en retour dans 
d0.w le numro de l'objet exit ou touch-exit qui a t click.

RETURN_FORM_OBJ_SCULPTURE:
	Entre		d0.w	= numro de l'arbre
	Sortie		a0.l	= pointeur sur l'objet
			d0.w	= bord gauche
			d1.w	= bord haut
			d2.w	= bord droit
			d3.w	= bord bas

	Cette fonction permet de connatre la taille des sculptures additionnel-
les d'un formulaire.

RETURN_OBJ_IN_FORM_OBJ_PTR:
	Entre		d0.w	= numro du formulaire
			d1.w	= numro de l'objet
	Sortie	 	a1.l	= pointeur sur l'objet

	Cette fonction permet de retourner un pointeur sur un objet dans un 
formulaire.

RETURN_TEXT_OBJ_IN_FORM_OBJ_PTR:
	Entre		d0.w	= numro du formulaire
			d1.w	= numro de l'objet
	Sortie		a1.l	= pointeur sur le champs texte.

	Cette fonction, parmi les plus utilises, permet de retourner un poin-
teur sur le texte d'un objet quelque soit son type (bouton, texte ...)
	A n'utiliser que pour des objets contenant du texte.

AFFICH_HEXA:
	Entre		d0.l	=donne
			d1.b	=nombre de bits  afficher (jusqu' 32)
	Sortie

	Affichage sur le terminal d'un registre en mode hexadcimal.

STOCK_HEXA:
	Entre		a1.l	= adresse de destination pour le stockage
			d0.w	= donne
			d1.b	= nombre de bits  prendre en compte dans d0 
(8/16/32)
	Sortie		Dans (a1.l)

	Routine de transformation du contenu d'un registre en chane ASCII, et 
stockage.
	En sortie on a la proprit suivante :  (a1-1)=0.b

HEXA2VALUE:
	Entre		a0.l	= pointeur sur la chane
			d0.w	= octet reprsentant le marqueur de fin de chane
	Sortie		d1.l	= valeur convertie
			d7.w	= erreur de traitement si d7=-1

	Cette fonction transforme une chane ASCII en valeur hexadcimale :
	En sortie on a la proprit suivante  : (a0-1)=d0 si d7=0

STOCK_DECI:
	Entre		a1.l	= destination o stocker le chiffre en dcimal sign
			d0.l	= valeur  traiter
	Sortie		Dans (a1.l)

	Une des fonctions les plus utilises : conversion d'une valeur dcimale 
en chane ASCII, et stockage.
	En sortie on a la proprit suivante  : (a1-1)=0.b

DECI2VALUE:
	Entre		a0.l	= pointeur sur la chane
			d0.b	= octet de fin de chane
	sortie		d1.l	= valeur convertie
			d7.w	= erreur de conversion si d7=-1

	Transforme une chane ASCII en une valeur dcimale.
	En sortie on a la proprit suivante  : (a0-1)=d0 si d7=0

FILE_SELECTOR:
	Entre		a0.l	= texte d'explication (35 caractres maximum)
			a1.l	= masque (exemple *.ASC,*.SP) (18 caractres 
maximum)
			a2.l	= ancien chemin (X:\PATH) pour le remettre ou 
bien 0.l si aucun
	Sortie		a0.l	= nom du fichier slectionn (8+1+3 caractres : 
EX.PRG)
			a1.l	= chemin du fichier slectionn (C:\AUTO\)
			a2.l	= chemin+nom de fichier slectionn (C:\AU-
TO\EX.PRG)
			d0.w	= si d0=0 l'utilisateur a annul si d0<0 alors erreur 
DOS.

	Appelle le slecteur de fichier GEM.

SAVE_PALETTES:
	Entre
	Sortie

	Sauvegarde la palette physique 16 et 256 couleurs dans un BSS.

RESTORE_PALETTES:
	Entre
	Sortie

	Sert pour restaure les 2 palettes physique sauves avec SAVE_PA-
LETTES.

GET_FILE_LENGTH:
	Entre		a0.l	= pointeur sur une chane reprsentant le nom du 
fichier.
	Sortie		d0.l	= longueur du fichier demand (d0<0 si fichier non 
trouv)

	Permet de se renseigner sur la longueur d'un fichier.

LOAD_FILE_IN_MEM:
	Entre		a0.l	= pointe sur une chane reprsentant le nom du fi-
chier
			d0.w	= mode d'allocation de la mmoire (cf. macro 
MXALLOC)
	Sortie		a0.l	= pointeur sur la zone de mmoire alloue
			d0.l	= longueur de la zone alloue, identique  la taille 
fichier
				(d0<0 si fichier non trouv)

	Permet de charger un fichier en mmoire en s'occupant de rien d'autre 
que le nom complet du fichier et dans quel type de mmoire on veut qu'il 
soit charger.
	Cette fonction ncessite que LIB_FLENGTH soit dfini dans le fichier 
.DEF de l'application.

RS232_SEND_STRING_WITH_TIMEOUT:
	Entre		a0.l	= pointeur sur le buffer
			d0.l	= longueur de la chane
			d1.w	= numro du port BIOS
			d2.l	= timeout en 1/200s au bout duquel il faut ressortir 
si le buffer de sortie 
				est plein et ne s'est pas vid.
	Sortie

	Permet d'envoyer une chane de caractres sur un port BIOS sans res-
ter bloqu si le buffer de sortie ne se vide pas.

RS232_SEND_STRING_WITHOUT_CONTROL:
	Entre		a0.l	= pointeur sur le buffer
			d0.l	= longueur de la chane
			d1.w	= numro du port BIOS
	Sortie

	Permet d'envoyer une chane de caractres sur un port BIOS sans vri-
fication de timeout (plus rapide mais bloquante si le port est satur).

RS232_TEST_IF_CHAR_PRESENT:
	Entre		d0.w	= port sortie
	Sortie		d7.w	= 0=(au moins 1 car prsent) -1=(aucun car pr-
sent)

	Teste un port BIOS pour savoir s'il y a au moins un caractre en atten-
te de lecture.

RS232_GET_AVAILABLE_CHARS:
	Entre		a0.l	= adresse d'un buffer o seront stocks les caract-
res
			d0.l	=nombre maximum de caractres  capturer (lon-
gueur de votre buffer  
				priori)
			d1.w	= port BIOS
	Sortie		d0.l	= nombre d'octets effectivement capturs

	Permet de lire un certain nombre d'octets sur un port BIOS.

GWVA_GET_FORMATED_DATE:
	Entre		a1.l	= pointeur
	Sortie		Dans (a1.l)

	Stocke dans le buffer point par a1.l une chane ASCII reprsentant la 
date courante formate comme suit : "JJ/MM/AAAA" exemple : 
29/06/1995

GWVA_GET_FORMATED_TIME:
	Entre		a1.l	= pointeur
	Sortie		Dans (a1.l)

	Stocke dans le buffer point par a1.l une chane ASCII reprsentant 
l'heure courante formate comme suit : "HH:MM:SS" exemple : 
19:20:00

GWVA_GET_200HZ_COUNTER:	
	Entre
	Sortie		Dans GWVA_CUR_200HZ_COUNTER

	Stocke le compteur 200 hertz dans le pointeur 
GWVA_CUR_200HZ_COUNTER. Excutez cette routine en supervi-
seur ou avec un SUPEXEC.

GWVA_GET_200HZ_DELAY_SINCE_LAST_CALL:
	Entre		Dans GWVA_OLD_200HZ_COUNTER
	Sortie		d0.l	= dlai en 1/200s entre deux appels

	Permet de savoir combien de temps s'est coul entre deux instants 
donns.
	Commencez par faire un "clr.l GWVA_OLD_200HZ_COUNTER" 
avant votre premier appel. Puis  chaque fois que vous appellerez cette 
routine vous obtiendrez dans d0.l le nombre de fois 1/200 seconde qui s-
pare votre appel  cette routine du prcdent.


	11.3 Librairie de relocation de ressource


Cette librairie permet d'avoir son fichier ressource en mmoire (enten-
dez en DATA dans votre excutable) et de le reloger en passant dans a0.l 
l'adresse de dbut.
Cette routine est excute par le Visual Assembleur au lancement du 
programme si vous le dfinissez comme tel dans le fichier .OBJ de votre 
application (bit 0 de GWVA_APP_OBJ_FLAGS). Vous devez alors aus-
si placer MDL_RELOCATE_RSC dans le fichier .DEF.
La relocation du ressource fonctionne sur tous les AES. Le seul pro-
blme existant est pour les icnes couleurs. Si vous disposer d'une ver-
sion de l'AES infrieur  4.0, les icnes auront de mauvaises couleurs en 
true-color.


	11.4 Librairie d'appels XHDI


Cette librairie regroupe l'ensemble des appels XHDI qui vous sont of-
ferts. Ils dpendent grandement du driver de disque utilis, alors com-
mencez par tester la version du driver avant de faire des appels.
En premier lieu, vous devez initialiser les routines en faisant :
		JSR XH_LOCATE_DRIVER
En retour dans d7.w : 0 si le driver XHDI est prsent, -1 sinon


	11.5 Librairie de recherche rcursive de 
fichiers


Cette librairie contient une routine qui permet de rechercher un ou plu-
sieurs fichiers  travers une arborescence, ventuellement rcursivement, 
en spcifiant uniquement un chemin de dpart et un masque de recher-
che.
Pour ce fair, vous devez dclarer le label suivant : LIB_RECURSI-
VE_FILE_SEARCH.
Un simple saut  la routine SEARCH_FILE_RECURSIVELY suffira 
 lancer la recherche, qui ressortira quand tous les fichiers auront t exa-
mins. Une routine dont vous spcifiez l'adresse sera appele chaque fois 
qu'un fichier rencontr correspondra aux critres que vous avez fixs.

	Paramtres d'entre :
		a0.l	= pointeur sur une chane donnant le chemin de dpart de 
recherche.
			Exemple : U:\PATH
		a1.l	= pointeur sur un masque multiple termin par deux 0.b
			(maximum 100 caractres)
			Exemple : *.F?D 0 AZERTY.* 0 *.MOD 0 0
		a2.l	= adresse de la routine o sauter
		d0.w	= 0 recherche normale dans le rpertoire spcifi, 1 re-
cherche rcursive.

	Paramtres de sortie :
		d7.w	= 0 =OK -2=bad path -1=user stop(vous avez rendu d0<0 
lors de
			l'appel  votre routine)

	Appel de votre routine :
		Entre	a0	: pointeur sur un nom de fichier rpondant 
aux critres que
					vous avez donns. Exemple : U:\PATH\FI-
LE.EXT
		Sortie		faites un rts avec d0=0 = continue ou bien d0=-1 
arrte la
				recherche. cf ci dessus d7=-1


	11.6 Librairie pour le multi-formulaire


Dans ce fichier, sont regroups les trois routines pour la gestion des 
sauvegardes des formulaires. Ces routines ont t prcdemment dcrites 
dans les mthodes des fentres formulaires.

