	Extensions systŠmes sur le TRAP #10
	***********************************


	Supposons qu'avec ces trois lignes:

	move.l #buffer,a0
	move.l #$3130000a,d0
	trap #10

	vous puissiez tramer en 216 couleurs une image True Color, que de
maniŠre aussi rapide vous puissiez lancer un Timer, g‚rer du son, etc...
En bref, acc‚der … de nouveaux outils avec un protocole encore plus simple
que celui de l'AES/VDI: c'est le but de l'extension TRAP #10.


Philosophie
-----------

	Il s'agit de fournir au programmeur une base d'outils de
programmation qui lui ‚vitent de r‚-inventer la roue … chacun de ses
programmes. Vous me direz que chaque programmeur a ses propres
bibliothŠques... oui, mais avec ce systŠme chacun pourra disposer
‚galement de la bibliothŠque des autres! C'est ainsi que la meilleure
routine de tramage, si elle est diffus‚e ainsi, pourra profiter … tous. Il
en va de mˆme pour toutes les autres petites m‚thodes (tris, traitements
de sons, calculs sur des r‚els sans copro, etc...).

Principe
--------

	Les routines s'installent sur le Trap #10 (du nom de l'instruction
assembleur qui permet d'y basculer) par l'interm‚diaire d'un Gestionnaire
que je fournis: TRAP_10.PRG … loger dans le dossier AUTO. Ensuite, en
quelques octets de code, vous ou tout autre programme pouvez acc‚der …
ce nouvel outil.
	Le gestionnaire supporte jusqu'… 256 routines qui, elles-mˆmes,
supportent jusqu'… 256 sous-fonctions chacune. La fonction 0 correspond au
gestionnaire, les 255 autres sont programmables … souhait.
	Il va de soi que si vous n'enregistrez pas votre fonction par mon
interm‚diaire, nous aurons vite de nombreux conflits. Ma page WEB sera un
lieu id‚al pour la diffusion des outils et des syntaxes des nouveaux
appels. Les pages de ST mag devraient aussi permettre un suivi de
leurs d‚veloppements.
	Pour appeler une routine, voici la m‚thode:

	En entr‚e:
	A0: pointe sur un tableau de paramŠtres variant selon la fonction
	D0: valeur cl‚ + num‚ro de fonction (yy) et de sous fonction (xx)

	move.l #...,a0
	move.l #$3130xxyy,d0
	trap #10

	En retour:
	d0=LONG 10: Ok
	d0='NULL': fonction inexistante
	d0='UNKN': sous-fonction inconnue

	La valeur D0 contient dans le mot sup‚rieur $3130='10' comme cl‚.
Si cette valeur n'est pas rencontr‚e, alors la routine saute au Trap #10
pr‚c‚demment install‚. Ainsi, ce systŠme n'est pas bloquant pour les
installations ant‚rieures … TRAP_10.PRG.
	Le mot inf‚rieur contient deux informations: yy=num‚ro de fonction
(de 0 … 255) et xx=num‚ro de sous-fonction (de 0 … 255).

Le Gestionnaire
---------------

	Il comprend pour l'instant 3 appels (sous-fonctions 0,1 et 2):

	00/00=demande d'infos
	*********************
		move.l #zone,a0
		move.l #$31300000,d0
		trap #10

		retour: d0=10
			zone=LONG version (ex='1.00')
			zone+4=LONG adresse table 256 pointeurs

	00/01=installer une fonction
	****************************
		entr‚e: zone=WORD numero de fonction d‚sir‚
			zone+2=LONG adresse de la routine (finie par RTS)

		move.l #zone,a0
		move.l #$31300100,d0
		trap #10

		retour: d0=10 alors fonction install‚e
			d0=-1 fonction d‚j… occup‚e!!!

	00/02=d‚sinstaller une fonction
	*******************************
		entr‚e: zone=WORD num‚ro de fonction … lib‚rer

		move.l #zone,a0
		move.l #$31300200,d0
		trap #10

		retour: d0=10 alors ok, fonction d‚sinstall‚e
			d0=-2 emplacement d‚j… libre!!!

	Voil… de quoi installer vos propres outils et en faire profiter
les autres programmeurs.

Fonctions d‚j… implant‚es
-------------------------

	Fonction 10: tramage 216 couleurs
	*********************************

	Sur la fonction 10 j'ai implant‚ des routines de tramage 216
couleurs avec 3 sous-fonctions selon le type d'image source:

	en entr‚e:
	zone:   LONG adresse image source
		LONG adresse image dest
		WORD largeur
		WORD hauteur
		LONG adresse palette retour

	move.l #zone,a0
	move.l #$3130xx0a,d0
	trap #10

	xx=00, l'image source est en 24 bits R,V,B
	xx=01, l'image source est en 15 bits Intel (VVVBBBBB xRRRRRVV)
	xx=02, l'image source est en 16 bits Falcon (RRRRRVVV VVVBBBBB)

	En retour l'image dest contient les indexs de couleur (0 … 215) et
la palette contient 648 octets (216 fois trois octets R,V,B).

Fonctions pr‚vues
-----------------

	Je compte aussi ajouter le tramage monochrome, les transformations
mode Atari (plans entrelac‚s) vers mode cartes graphiques (octets) ainsi
qu'un appel permettant de lancer … la fr‚quence voulue n'importe quel
timer du MFP ST ou du MFP TT: en effet, cette machine dispose d'un second
MFP qui apporte 4 timers suppl‚mentaires!

Cool...
-------

	Ce systŠme l'est en effet. Il ‚vite toute gestion de modules, de
m‚moire, son protocole est archi-simple, le nombre d'octets n‚cessaires
pour l'accŠs … un outils est ridicule (remplissage du tableau + 14 octets
pour l'appel), il est gratuit.

...mais limit‚
--------------

	Ce systŠme l'est aussi. Il doit se r‚duire … une s‚rie de petits
programmes peu gourmands en m‚moire: en effet, les routines sont
r‚sidentes! Cependant, rien ne vous empˆche de choisir les outils que vous
d‚sirez installer sur votre systŠme.


Appel … tous
------------

	Vous avez une bonne id‚e gratuite? Faites-en profiter les autres.
Votre fonction sera ajout‚e … celles disponibles avec vos coordonn‚es pour
qu'on puisse vous contacter en cas de problŠme ou simplement pour "causer"
entre programmeurs dans la mˆme branche.
	Pour vous guider, je pense que des routines graphiques, des
routines de gestion (stats, divers tris), des routines trŠs systŠmes
(gestion des interruptions, chrono, etc...), des routines sonores (travail
sur un ‚chantillon, capture ou restitution d'un son en RAM) seraient les
bienvenues.

	Pour obtenir TRAP_10.PRG, il suffit de m'‚crire (avec une
disquette et une enveloppe timbr‚e pour le retour). Vous recevrez
‚galement le source assembleur d'un exemple de fonction qu'on ajoute au
Trap #10. Ce dernier pourra ˆtre utilis‚ comme point de d‚part … vos
propres r‚alisations.
	J'espŠre aussi pouvoir fournir un fichier OBJET directement linkable
en "C" amenant l'appel suivant:

	retour=TRAP_10(fn,sub_fn,zone)

	WORD fn,sub_fn
	LONG retour
	LONG zone


	A vos claviers! Depuis le nombre inattendu de demandes du FORTH,
je sais qu'il y a encore pas mal de programmeurs sur Atari: Ecrivez-moi,
recevez TRAP_10.PRG et augmentez le nombre d'outils! Chacun est comp‚tant
dans un domaine, autant que tous en profitent,

        Guillaume TELLO
        240 rue Estienvrin
        49260 Montreuil-Bellay
        gtello@wanadoo.fr