COURS207.TXT/fr: Difference between revisions

From Atari Wiki
Jump to navigation Jump to search
(Created page with "<pre> ****************************************************************** * * * COURS D'ASSEM...")
 
No edit summary
Line 4: Line 4:
 
* COURS D'ASSEMBLEUR 68000 SUR ATARI ST *
 
* COURS D'ASSEMBLEUR 68000 SUR ATARI ST *
 
* *
 
* *
−
* par Le F
+
* par Le F�roce Lapin (from 44E) *
 
* *
 
* *
−
* Seconde s
+
* Seconde s�rie *
 
* *
 
* *
−
* Cours num
+
* Cours num�ro 7 *
 
******************************************************************
 
******************************************************************
   
 
Inutile de vous complimenter inutilement, mais si vous avez suivi
 
Inutile de vous complimenter inutilement, mais si vous avez suivi
−
bien tranquillement les cours depuis le d
+
bien tranquillement les cours depuis le d�but, si vous avez pris
 
soin de vous exercer avec des petites applications, vous devez
 
soin de vous exercer avec des petites applications, vous devez
  +
d�j� avoir un niveau correct en assembleur! N'oubliez donc pas les
−
d‚j… avoir un niveau correct en assembleur! N'oubliez donc pas les
 
−
commandements principaux: bien commenter les programmes, r
+
commandements principaux: bien commenter les programmes, r�fl�chir
 
simplement, utiliser papier et crayon etc... Plus vous avancerez
 
simplement, utiliser papier et crayon etc... Plus vous avancerez
 
et plus vos listings seront longs, et plus une programmation
 
et plus vos listings seront longs, et plus une programmation
−
propre sera indispensable!!! De m
+
propre sera indispensable!!! De m�me cherchez par vous m�me avant
  +
de poser d�s questions, cela �vitera bien souvent de demander
−
de poser dŠs questions, cela ‚vitera bien souvent de demander
 
 
n'importe quoi...
 
n'importe quoi...
   
Line 26: Line 26:
   
 
Concernant ces 2 sujets, les critiques vont bon train: la ligne A
 
Concernant ces 2 sujets, les critiques vont bon train: la ligne A
−
c'est pas commode, c'est nul et le GEM, pouah!!! Apr
+
c'est pas commode, c'est nul et le GEM, pouah!!! Apr�s pas mal de
  +
temps pass� � discuter et � �couter les opinions de plusieurs
−
temps pass‚ … discuter et … ‚couter les opinions de plusieurs
 
−
personnes, je suis arriv
+
personnes, je suis arriv� � la conclusion suivante: Tout d'abord
 
les critiqueurs sont rarement les programmeurs Ligne A ou GEM.
 
les critiqueurs sont rarement les programmeurs Ligne A ou GEM.
−
Ensuite, imaginons un cours instant notre ST sans GEM et pr
+
Ensuite, imaginons un cours instant notre ST sans GEM et pr�parons
  +
nous � faire un effort, GEM nous le rend bien! En dernier lieu je
−
nous … faire un effort, GEM nous le rend bien! En dernier lieu je
 
−
dirais que ces cours sont destin
+
dirais que ces cours sont destin�s � faire de vous des
 
programmeurs et pas des bidouilleurs. Vous devez donc avoir
 
programmeurs et pas des bidouilleurs. Vous devez donc avoir
−
connaissances des possibilit
+
connaissances des possibilit�s de la ligne A et de celles du GEM.
−
Ne pensez pas cependant trouver dans ces cours la totalit
+
Ne pensez pas cependant trouver dans ces cours la totalit� des
−
commandes GEM. Ces cours sont destin
+
commandes GEM. Ces cours sont destin�s � levez un coin du voile,
−
et si possible
+
et si possible � vous donnez de quoi continuer vos recherches.
   
 
En tout cas je peux vous assurer que la ligne A et le GEM ne sont
 
En tout cas je peux vous assurer que la ligne A et le GEM ne sont
 
pas plus dur qu'autre choses (D'ailleurs y a t-il quelques chose
 
pas plus dur qu'autre choses (D'ailleurs y a t-il quelques chose
−
de dur en assembleur?????). Il y a
+
de dur en assembleur?????). Il y a �galement un avantage
  +
non-n�gligeable concernant la ligne A et surtout GEM: Jusqu'�
−
non-n‚gligeable concernant la ligne A et surtout GEM: Jusqu'…
 
−
maintenant, nous avons utilis
+
maintenant, nous avons utilis� des instructions assembleur 68000,
−
et il semblait
+
et il semblait �vident que dans un ouvrage sur le PASCAL, le BASIC
−
GFA ou le C, nous aurions eu du mal
+
GFA ou le C, nous aurions eu du mal � trouver des pr�cisions sur
 
l'instruction MOVEM.L par exemple ! Concernant la ligne A, mais
 
l'instruction MOVEM.L par exemple ! Concernant la ligne A, mais
 
surtout GEM, nous allons utiliser principalement des macros (vous
 
surtout GEM, nous allons utiliser principalement des macros (vous
−
voyez pourquoi ce sujet a
+
voyez pourquoi ce sujet a �t� abord� avant!). Or ces macros ont
−
chacune un nom, et ce nom est un nom 'GEM' et non pas relatif
+
chacune un nom, et ce nom est un nom 'GEM' et non pas relatif �
−
tel ou tel assembleur!! Ainsi ouvrir une fen
+
tel ou tel assembleur!! Ainsi ouvrir une fen�tre pour la faire
  +
appara�tre sur l'�cran, se fera avec une macro nomm�e WIND_OPEN.
−
apparaŒtre sur l'‚cran, se fera avec une macro nomm‚e WIND_OPEN.
 
−
L'avantage c'est que cette fonction GEM est utilis
+
L'avantage c'est que cette fonction GEM est utilis�e en Pascal, en
 
C etc... Pour cette raison, vous pouvez chercher de la documen-
 
C etc... Pour cette raison, vous pouvez chercher de la documen-
−
tation sur GEM quelque soit le langage utilis
+
tation sur GEM quelque soit le langage utilis� dans cette
 
documentation. Dans 99% des cas ce sera le C.
 
documentation. Dans 99% des cas ce sera le C.
   
−
Pour ma part mes connaissances en C sont r
+
Pour ma part mes connaissances en C sont r�duites et pourtant, une
 
grande partie des documents GEM avec lesquels je travaille, fait
 
grande partie des documents GEM avec lesquels je travaille, fait
  +
r�f�rence � ce langage. Surtout ne vous contentez pas des ouvrages
−
r‚f‚rence … ce langage. Surtout ne vous contentez pas des ouvrages
 
−
traitant du GEM en assembleur car vous serez bien vite d
+
traitant du GEM en assembleur car vous serez bien vite d�go�t�!!
   
−
Idem pour la ligne A, les param
+
Idem pour la ligne A, les param�tres n�cessaires ne d�pendent pas
 
du langage!!
 
du langage!!
   
−
Un autre avantage tr
+
Un autre avantage tr�s important, surtout pour le GEM, concerne
−
les formats de donn
+
les formats de donn�es. Ayant la chance de pouvoir travailler sur
 
des Macs, de nombreuses choses y rendent la manipulation des pro-
 
des Macs, de nombreuses choses y rendent la manipulation des pro-
−
grammes plus ais
+
grammes plus ais�e que sur ST. Par exemple on charge un logiciel
 
de dessin, on fait un petit gribouillis, ensuite on charge
 
de dessin, on fait un petit gribouillis, ensuite on charge
 
n'importe quel traitement de texte et hop on y colle notre
 
n'importe quel traitement de texte et hop on y colle notre
 
gribouillis. Sur ST il y a 99% de chance que le format de l'un ne
 
gribouillis. Sur ST il y a 99% de chance que le format de l'un ne
 
soit pas reconnu par l'autre! Si on jette un coup d'oeil vers le
 
soit pas reconnu par l'autre! Si on jette un coup d'oeil vers le
−
monde PC, on se rend compte qu'il n'existe pas de format normalis
+
monde PC, on se rend compte qu'il n'existe pas de format normalis�
−
pour ce type de machine, et que c'est l'anarchie
+
pour ce type de machine, et que c'est l'anarchie � ce niveau. De
−
tels formats normalis
+
tels formats normalis�s existent sur Mac, ils sont respect�s, et
−
les rares softs ne se pliant pas
+
les rares softs ne se pliant pas � cette norme sont vou�s � un
 
formatage rapide de la disquette!!! Le comble c'est que sur ST de
 
formatage rapide de la disquette!!! Le comble c'est que sur ST de
 
telles normes de formats existent, mais elles ne sont pas
 
telles normes de formats existent, mais elles ne sont pas
  +
respect�es....
−
respect‚es....
 
   
 
En fait l'utilisation de la ligne A et surtout celle du GEM,
 
En fait l'utilisation de la ligne A et surtout celle du GEM,
−
doivent nous amener
+
doivent nous amener � une r�flexion plus globale sur ce qu'est la
−
programmation. Raymond Loewy (1893-1986), que l'on peut consid
+
programmation. Raymond Loewy (1893-1986), que l'on peut consid�rer
  +
comme le p�re du design industriel, a eu beaucoup de r�flexions
−
comme le pŠre du design industriel, a eu beaucoup de r‚flexions
 
 
sur ce qu'il faut donner au consommateur. Dans notre langage nous
 
sur ce qu'il faut donner au consommateur. Dans notre langage nous
−
parlons d'utilisateur de softs mais c'est en fait de la m
+
parlons d'utilisateur de softs mais c'est en fait de la m�me
 
personne qu'il s'agit. Comparons un soft Mac et un soft ST.
 
personne qu'il s'agit. Comparons un soft Mac et un soft ST.
  +
L'�cran est allum�, le soft est charg�, et la seule chose que nous
−
L'‚cran est allum‚, le soft est charg‚, et la seule chose que nous
 
−
faisons, c'est promener notre oeil sur les ic
+
faisons, c'est promener notre oeil sur les ic�nes et la souris
−
dans la barre de menu. Difficile de juger des qualit
+
dans la barre de menu. Difficile de juger des qualit�s respectives
 
des 2 softs sans aller plus loin. Pourtant, la simple disposition
 
des 2 softs sans aller plus loin. Pourtant, la simple disposition
  +
des entr�es dans les menus, le positionnement des ic�nes, le
−
des entr‚es dans les menus, le positionnement des ic“nes, le
 
−
faible nombre de celles-ci mais en m
+
faible nombre de celles-ci mais en m�me temps leur impression de
  +
clart� donne dans 99% des cas l'avantage au Mac Intosh. Sur le ST,
−
clart‚ donne dans 99% des cas l'avantage au Mac Intosh. Sur le ST,
 
  +
les menus d�gueulent de partout (surtout dans les softs r�cents),
−
les menus d‚gueulent de partout (surtout dans les softs r‚cents),
 
  +
et les ic�nes recouvrent un bureau qui n'en demande pas tant! Ceci
−
et les ic“nes recouvrent un bureau qui n'en demande pas tant! Ceci
 
  +
est � rapprocher d'une r�flexion de Raymond Loewy que je vous
−
est … rapprocher d'une r‚flexion de Raymond Loewy que je vous
 
  +
demande de m�diter: "Un v�hicule a�rodynamique bien dessin� donne
−
demande de m‚diter: "Un v‚hicule a‚rodynamique bien dessin‚ donne
 
−
une impression de vitesse, m
+
une impression de vitesse, m�me quand il est arr�t�". Inutile donc
−
d'en rajouter
+
d'en rajouter � la pelle, les 14524874 fonctions du softs ST sont
−
simplement des d
+
simplement des d�lires de programmeurs alors que les 20 fonctions
−
du softs Mac ont
+
du softs Mac ont �t� pens�es pour l'utilisateur. Lorsque Raymond
  +
Loewy a �t� demand� pour faire le nouveau logo de la soci�t�
−
Loewy a ‚t‚ demand‚ pour faire le nouveau logo de la soci‚t‚
 
 
Shell, ainsi que tout le design des stations services, il a
 
Shell, ainsi que tout le design des stations services, il a
−
simplement dit
+
simplement dit � ses employeurs: "Vos clients, ce ne sont pas les
−
automobiles, ce sont les automobilistes". Evident, sauf qu'
+
automobiles, ce sont les automobilistes". Evident, sauf qu'�
  +
l'�poque la Shell vendait pour les automobiles, sans s'en rendre
−
l'‚poque la Shell vendait pour les automobiles, sans s'en rendre
 
 
compte!
 
compte!
   
 
Eh bien, sur ST les programmeurs programment pour le ST (ou pour
 
Eh bien, sur ST les programmeurs programment pour le ST (ou pour
−
eux!) mais tr
+
eux!) mais tr�s rarement pour les utilisateurs...
   
  +
Tout ceci �tant dit, nous allons aborder maintenant la ligne A, en
−
Tout ceci ‚tant dit, nous allons aborder maintenant la ligne A, en
 
  +
esp�rant cependant que cela vous fera r�fl�chir lorsque vous
−
esp‚rant cependant que cela vous fera r‚fl‚chir lorsque vous
 
 
concevrez vos programmes!
 
concevrez vos programmes!
   
Line 120: Line 120:
   
 
Doc officielle Atari, Chapitre Ligne A: Bon descriptif des
 
Doc officielle Atari, Chapitre Ligne A: Bon descriptif des
  +
diff�rentes fonctions, assez brut mais efficace.
−
diff‚rentes fonctions, assez brut mais efficace.
 
   
−
Bible ST: Bon descriptif des fonctions Livre du d
+
Bible ST: Bon descriptif des fonctions Livre du d�veloppeur: idem
−
mais en plus descriptif des donn
+
mais en plus descriptif des donn�es dont on peut d�duire l'empla-
 
cement avec la ligne A.
 
cement avec la ligne A.
   
−
Doc du GFA 3.00: Assez
+
Doc du GFA 3.00: Assez �trange. Si les fonctions ligne A du GFA
  +
sont appel�es de la m�me mani�re qu'en assembleur, le concepteur
−
sont appel‚es de la mˆme maniŠre qu'en assembleur, le concepteur
 
−
de ce langage a r
+
de ce langage a r�ussi � 'inventer' des fonctions en clamant bien
−
haut qu'il s'agit de fonction Ligne A !!! Peut-
+
haut qu'il s'agit de fonction Ligne A !!! Peut-�tre pour que le
 
GFA soit encore moins compatible... A ce propos, il semblerait que
 
GFA soit encore moins compatible... A ce propos, il semblerait que
−
la ligne A ne soit plus officiellement support
+
la ligne A ne soit plus officiellement support�e par le TT.... A
 
voir...
 
voir...
   
−
Dans le premier kilo de m
+
Dans le premier kilo de m�moire de notre machine, nous avons un
−
bon paquet d'adresses utilis
+
bon paquet d'adresses utilis�es par le microprocesseur. Nous avons
  +
pass� pas mal de temps � �plucher le principe de fonctionnement de
−
pass‚ pas mal de temps … ‚plucher le principe de fonctionnement de
 
 
ce kilo, qui sert au 68000 de 'relais' afin qu'il trouve l'adresse
 
ce kilo, qui sert au 68000 de 'relais' afin qu'il trouve l'adresse
−
de la routine qu'il doit ex
+
de la routine qu'il doit ex�cuter pour telle ou telle raison.
  +
J'esp�re de tout coeur que vous avez parfaitement assimil� ce
−
J'espŠre de tout coeur que vous avez parfaitement assimil‚ ce
 
 
principe car pour la ligne A, le GEM, les interruptions etc...
 
principe car pour la ligne A, le GEM, les interruptions etc...
−
c'est encore et toujours ce m
+
c'est encore et toujours ce m�me principe qui est appliqu� !
−
Prenez la feuille qui vous a
+
Prenez la feuille qui vous a �t� fournie avec les cours de la
  +
s�rie 1, et qui montre ce premier kilo. Le vecteur 10 (adresse 40
−
s‚rie 1, et qui montre ce premier kilo. Le vecteur 10 (adresse 40
 
  +
en d�cimal et $28 en hexa.) poss�de comme 'description': �mulateur
−
en d‚cimal et $28 en hexa.) possŠde comme 'description': ‚mulateur
 
−
ligne 1010. Convertissons 1010 en hexad
+
ligne 1010. Convertissons 1010 en hexad�cimal, nous obtenons....
  +
$A ! Premi�re constatation, si ce vecteur est dans le premier kilo
−
$A ! PremiŠre constatation, si ce vecteur est dans le premier kilo
 
  +
de m�moire, c'est donc que l'�mulateur ligne A n'est pas une
−
de m‚moire, c'est donc que l'‚mulateur ligne A n'est pas une
 
  +
particularit� du ST mais bien du 68000. Ces vecteurs vont donc
−
particularit‚ du ST mais bien du 68000. Ces vecteurs vont donc
 
−
nous donner acc
+
nous donner acc�s � une ou des routines, en utilisant toujours le
  +
m�me principe:
−
mˆme principe:
 
   
 
Ordre au 68000, celui-ci analyse l'ordre, saute dans le premier
 
Ordre au 68000, celui-ci analyse l'ordre, saute dans le premier
  +
kilo de m�moire � l'adresse correspondant � cet ordre, y trouve
−
kilo de m‚moire … l'adresse correspondant … cet ordre, y trouve
 
−
l'adresse de la routine
+
l'adresse de la routine � ex�cuter, il ne lui reste plus qu'�
−
sauter
+
sauter � celle-ci.
   
−
Comment donc appeler les routines accessibles par l'interm
+
Comment donc appeler les routines accessibles par l'interm�diaire
  +
de l'�mulateur ligne A, que font ces routines, et comment 'discu-
−
de l'‚mulateur ligne A, que font ces routines, et comment 'discu-
 
−
ter' avec elles, c'est
+
ter' avec elles, c'est � dire comment leur passer d'�ventuels pa-
  +
ram�tres ?
−
ramŠtres ?
 
   
 
Dans le cas de l'Atari ST, les routines accessibles par le biais
 
Dans le cas de l'Atari ST, les routines accessibles par le biais
  +
de l'�mulateur ligne A sont des routines graphiques. Ces routines
−
de l'‚mulateur ligne A sont des routines graphiques. Ces routines
 
 
sont les routines graphiques de base de notre machine. Elles sont
 
sont les routines graphiques de base de notre machine. Elles sont
  +
utilis�es par le GEM. Leur acc�s est rustique et mal commode mais
−
utilis‚es par le GEM. Leur accŠs est rustique et mal commode mais
 
  +
la commodit� n'est pas le but recherch�. G�n�ralement en assem-
−
la commodit‚ n'est pas le but recherch‚. G‚n‚ralement en assem-
 
−
bleur on recherche souvent
+
bleur on recherche souvent � faire soit m�me ses routines (c'est
 
toujours mieux que celles des copains) Il faut cependant noter que
 
toujours mieux que celles des copains) Il faut cependant noter que
 
dans beaucoup de cas, une bonne utilisation de la Ligne A ou du
 
dans beaucoup de cas, une bonne utilisation de la Ligne A ou du
 
Gem est amplement suffisante. De plus, c'est bien souvent une
 
Gem est amplement suffisante. De plus, c'est bien souvent une
−
bonne connaissance de ces interfaces qui vous permettra d'am
+
bonne connaissance de ces interfaces qui vous permettra d'am�-
−
liorer vos routines. Une raison suppl
+
liorer vos routines. Une raison suppl�mentaire r�side dans la
  +
facilit� de mise en oeuvre et dans la facilit� d'am�lioration. Il
−
facilit‚ de mise en oeuvre et dans la facilit‚ d'am‚lioration. Il
 
−
est tout a fait possible que la soci
+
est tout a fait possible que la soci�t� pour laquelle vous avez
  +
r�alis� un soft, vous demande la version 2.00 plusieurs ann�es
−
r‚alis‚ un soft, vous demande la version 2.00 plusieurs ann‚es
 
  +
apr�s la version 1.00. Les inf�mes bidouilles pour gagner 3 cycles
−
aprŠs la version 1.00. Les infƒmes bidouilles pour gagner 3 cycles
 
 
d'horloges vous semblerons alors bien moins claires qu'un appel
 
d'horloges vous semblerons alors bien moins claires qu'un appel
  +
classique � la ligne A, peut �tre un peu plus lent. Mais l�
−
classique … la ligne A, peut ˆtre un peu plus lent. Mais l…
 
−
encore, il faut penser en se mettant
+
encore, il faut penser en se mettant � la place de l'utilisateur !
−
Ainsi SPECTRUM 512 est un excellent soft pens
+
Ainsi SPECTRUM 512 est un excellent soft pens� avec un esprit
−
programmeur et le r
+
programmeur et le r�sultat c'est que tout le monde utilise
 
DEGAS...
 
DEGAS...
   
 
Les routines ligne A sont donc des routines graphiques de base.
 
Les routines ligne A sont donc des routines graphiques de base.
−
Elles sont au nombre de 16, et sont num
+
Elles sont au nombre de 16, et sont num�rot�s de 0 � 15. Voici
−
leur fonctions par num
+
leur fonctions par num�ro:
   
 
0 = initialisation
 
0 = initialisation
−
1 = placer un pixel
+
1 = placer un pixel � une couleur donn�e
 
2 = demander la couleur d'un pixel
 
2 = demander la couleur d'un pixel
−
3 = trac
+
3 = trac� d'une ligne quelconque
−
4 = trac
+
4 = trac� d'un ligne horizontale
−
5 = trac
+
5 = trac� d'un rectangle rempli
 
6 = remplissage d'une ligne d'un polygone
 
6 = remplissage d'une ligne d'un polygone
 
7 = transfert d'un bloc de bit
 
7 = transfert d'un bloc de bit
−
8 = transfert de matrice de caract
+
8 = transfert de matrice de caract�re
 
9 = visualisation de la souris
 
9 = visualisation de la souris
 
10 = non-visualisation de la souris
 
10 = non-visualisation de la souris
Line 205: Line 205:
 
15 = remplissage de zone
 
15 = remplissage de zone
   
−
Nous avons r
+
Nous avons r�pondu � la premi�re question: "qu'est ce que �a
−
fait?" Nous pouvons passer
+
fait?" Nous pouvons passer � la suivante :"comment l'appelle-t-on
−
?" Un appel ligne A se fait
+
?" Un appel ligne A se fait � l'aide d'un word. Le poids faible de
−
ce word contient le num
+
ce word contient le num�ro de la fonction, et le poids fort est
  +
�quivalent � $A (d'o� le nom ligne A). Ainsi pour appeler la
−
‚quivalent … $A (d'o— le nom ligne A). Ainsi pour appeler la
 
−
fonction 3, on utilisera le word $A003. Mais o
+
fonction 3, on utilisera le word $A003. Mais o� le placer? Et bien
 
tout simplement dans notre programme ! Pour pouvoir le noter tel
 
tout simplement dans notre programme ! Pour pouvoir le noter tel
−
quel nous le ferons pr
+
quel nous le ferons pr�c�der de DC.W de fa�on � ce que DEVPACK ne
−
cherche pas
+
cherche pas � transformer ceci en code 68000 puisqu'aucune
  +
mn�monique ne correspond � ce nombre! Pour appeler la fonction 1
−
mn‚monique ne correspond … ce nombre! Pour appeler la fonction 1
 
 
de la ligne A nous mettrons donc dans notre programme:
 
de la ligne A nous mettrons donc dans notre programme:
   
 
DC.W $A001
 
DC.W $A001
   
−
Note: si cela vous int
+
Note: si cela vous int�resse, vous pouvez suivre les appels
−
ligne A de la m
+
ligne A de la m�me mani�re que les appels Trap, sous MONST, en
−
tout cas si vous avez une des derni
+
tout cas si vous avez une des derni�res versions de MONST.
   
−
Question suivante: comment passer des param
+
Question suivante: comment passer des param�tres. En effet si nous
−
voulons utiliser par exemple la fonction 2 pour conna
+
voulons utiliser par exemple la fonction 2 pour conna�tre la
−
couleur d'un pixel, il faudra bien fournir les coordonn
+
couleur d'un pixel, il faudra bien fournir les coordonn�es de
 
celui-ci. Nous avons vu avec Gemdos, Bios et Xbios que les
 
celui-ci. Nous avons vu avec Gemdos, Bios et Xbios que les
  +
param�tres �taient pass�s par la pile. Nous avons �galement
−
paramŠtres ‚taient pass‚s par la pile. Nous avons ‚galement
 
  +
utilis� ce principe dans nos propres routines. Empilage, saut � la
−
utilis‚ ce principe dans nos propres routines. Empilage, saut … la
 
 
routine (par BSR ou TRAP) puis correction de la pile. Concernant
 
routine (par BSR ou TRAP) puis correction de la pile. Concernant
−
la ligne A et le GEM, la pile n'est pas utilis
+
la ligne A et le GEM, la pile n'est pas utilis�e. En effet, la
−
ligne A et le GEM utilisent un syst
+
ligne A et le GEM utilisent un syst�me de tableau. Nous avons
  +
�tudi� les tableaux et nous avons vu comment lire dans ceux-ci. Et
−
‚tudi‚ les tableaux et nous avons vu comment lire dans ceux-ci. Et
 
−
bien c'est un peu ce principe qui va
+
bien c'est un peu ce principe qui va �tre utilis�. Les param�tres,
  +
parfois tr�s nombreux, vont �tre plac�s dans un ou plusieurs
−
parfois trŠs nombreux, vont ˆtre plac‚s dans un ou plusieurs
 
  +
tableaux, � des endroits pr�cis, avant l'appel de la fonction
−
tableaux, … des endroits pr‚cis, avant l'appel de la fonction
 
−
choisie. Celle-ci ira chercher les param
+
choisie. Celle-ci ira chercher les param�tres n�cessaires et
−
retournera ensuite ses r
+
retournera ensuite ses r�sultats �galement dans des tableaux.
−
L'avantage du syst
+
L'avantage du syst�me des macros devient �vident: si pour des
 
appels gemdos, bios et xbios il suffit d'empiler (le nombre de
 
appels gemdos, bios et xbios il suffit d'empiler (le nombre de
  +
param�tres n'est pas �norme et le principe et toujours le m�me),
−
paramŠtres n'est pas ‚norme et le principe et toujours le mˆme),
 
−
il faut en revanche une sacr
+
il faut en revanche une sacr� dose de m�moire pour se rappeler
−
dans quel tableau et surtout o
+
dans quel tableau et surtout o� dans ce tableau doivent �tre
  +
d�pos�s les param�tres de chaque fonction. Malheureusement dans la
−
d‚pos‚s les paramŠtres de chaque fonction. Malheureusement dans la
 
  +
biblioth�que de Devpack, il n'y a pas de macros pour la ligne A.
−
bibliothŠque de Devpack, il n'y a pas de macros pour la ligne A.
 
−
Nous allons donc d
+
Nous allons donc d�tailler quelques fonctions '� la main'. Etant
  +
donn� que vous avez sous la main le cours sur les macros, je ne
−
donn‚ que vous avez sous la main le cours sur les macros, je ne
 
−
peux que vous conseiller de r
+
peux que vous conseiller de r�aliser les macros correspondantes �
 
ces fonctions. Nous allons tout d'abord tracer un rectangle sur
 
ces fonctions. Nous allons tout d'abord tracer un rectangle sur
  +
l'�cran. Voir listing num�ro 5.
−
l'‚cran. Voir listing num‚ro 5.
 
   
−
Tout d'abord inclusion de la routine de d
+
Tout d'abord inclusion de la routine de d�marrage des programmes,
−
petit message de pr
+
petit message de pr�sentation en effa�ant l'�cran au passage.
 
Ensuite initialisation de la ligne A. En retour, nous avons en A0
 
Ensuite initialisation de la ligne A. En retour, nous avons en A0
−
l'adresse du tableau que nous allons remplir avec les param
+
l'adresse du tableau que nous allons remplir avec les param�tres.
−
Ceux-ci sont assez nombreux et doivent
+
Ceux-ci sont assez nombreux et doivent �tre pass�s � des endroits
  +
bien pr�cis. Certains demandent une petite explication: Le
−
bien pr‚cis. Certains demandent une petite explication: Le
 
−
clipping. C'est un syst
+
clipping. C'est un syst�me bien utile, que nous retrouverons dans
−
le GEM. Par exemple nous voulons afficher sur l'
+
le GEM. Par exemple nous voulons afficher sur l'�cran une image,
−
mais celle-ci ne doit appara
+
mais celle-ci ne doit appara�tre que dans un petit rectangle. Il
−
va donc falloir se compliquer s
+
va donc falloir se compliquer s�rieusement la tache afin e de ne
 
pas afficher toute l'image. Au lieu de cela nous pouvons utiliser
 
pas afficher toute l'image. Au lieu de cela nous pouvons utiliser
−
le clipping. Cela consistera
+
le clipping. Cela consistera � donner les coordonn�es du rectangle
−
dans lequel nous voulons que l'image apparaisse, et
+
dans lequel nous voulons que l'image apparaisse, et � dire que
−
c'est le rectangle de clipping. Ensuite il reste
+
c'est le rectangle de clipping. Ensuite il reste � afficher
−
l'image sur tout l'
+
l'image sur tout l'�cran et elle n'appara�tra que dans le
−
rectangle, le reste de l'
+
rectangle, le reste de l'�cran �tant 'clipp�'. La encore, il est
  +
bien �vident que cela ralenti l'affichage, nous avons en effet
−
bien ‚vident que cela ralenti l'affichage, nous avons en effet
 
  +
affich� tout une image pour n'en voir qu'un bout, et de plus le
−
affich‚ tout une image pour n'en voir qu'un bout, et de plus le
 
  +
syst�me a �t� oblig� de tester sans arr�t pour savoir s'il devait
−
systŠme a ‚t‚ oblig‚ de tester sans arrˆt pour savoir s'il devait
 
−
nous montrer ce pixel, puis l'autre etc... Cette m
+
nous montrer ce pixel, puis l'autre etc... Cette m�thode est
 
pourtant hyper-utile et nous verrons cela de nombreuses fois.
 
pourtant hyper-utile et nous verrons cela de nombreuses fois.
   
Line 276: Line 276:
 
comment va se faire l'affichage. 0= mode remplacement, 1=mode
 
comment va se faire l'affichage. 0= mode remplacement, 1=mode
 
transparent, 2=mo deXOR, 3=transparent inverse. Essayer de faire
 
transparent, 2=mo deXOR, 3=transparent inverse. Essayer de faire
−
2e rectangle qui se recouvre et observez le r
+
2e rectangle qui se recouvre et observez le r�sultat en faisant
 
varier les modes.
 
varier les modes.
   
 
Nous allons maintenant utiliser une autre fonction, qui demande la
 
Nous allons maintenant utiliser une autre fonction, qui demande la
−
couleur d'un pixel. Dans le cas du tra
+
couleur d'un pixel. Dans le cas du tra�age d'un rectangle nous
  +
avons utilis� la tableau dont l'adresse �tait en A0 pour passer
−
avons utilis‚ la tableau dont l'adresse ‚tait en A0 pour passer
 
  +
les param�tres. Pour la demande de couleur d'un pixel et pour le
−
les paramŠtres. Pour la demande de couleur d'un pixel et pour le
 
 
coloriage d'un pixel, nous allons utiliser d'autres tableaux.Alors
 
coloriage d'un pixel, nous allons utiliser d'autres tableaux.Alors
  +
l�, suivez bien parce que les tableaux que nous allons d�crire
−
l…, suivez bien parce que les tableaux que nous allons d‚crire
 
−
maintenant sont
+
maintenant sont �galement utilis�s pas le GEM? nous allons donc
 
faire d'une pierre deux coups !!!!!
 
faire d'une pierre deux coups !!!!!
   
−
Tout comme le GEM donc, la ligne A utilise des tableaux, destin
+
Tout comme le GEM donc, la ligne A utilise des tableaux, destin�s
  +
chacun � recevoir ou � rendre des choses diff�rentes. Le premier
−
chacun … recevoir ou … rendre des choses diff‚rentes. Le premier
 
−
tableau, c'est le tableau CONTRL (Control) Il re
+
tableau, c'est le tableau CONTRL (Control) Il re�oit le num�ro de
−
la fonction et quelques autres param
+
la fonction et quelques autres param�tres. Le second c'est le
 
tableau INT_IN. Cela signifie Integer In, c'est donc un tableau
 
tableau INT_IN. Cela signifie Integer In, c'est donc un tableau
 
qui va recevoir des entiers (un nombre entier c'est en Anglais un
 
qui va recevoir des entiers (un nombre entier c'est en Anglais un
−
integer) Le troisi
+
integer) Le troisi�me tableau c'est PTSIN (Points In). C'est un
  +
tableau destin� � recevoir les coordonn�es des points ou bien des
−
tableau destin‚ … recevoir les coordonn‚es des points ou bien des
 
 
dimensions. Disons que ce tableau va recevoir par exemple les
 
dimensions. Disons que ce tableau va recevoir par exemple les
  +
coordonn�es X et Y pour le centre d'un cercle, mais aussi son
−
coordonn‚es X et Y pour le centre d'un cercle, mais aussi son
 
  +
rayon. Il r�gne une certaine confusion dans les explications sur
−
rayon. Il rŠgne une certaine confusion dans les explications sur
 
−
ce tableau. En effet il re
+
ce tableau. En effet il re�oit entre autre des coordonn�es, qui
 
vont souvent par couple (X et obligatoirement Y), ce qui fait que
 
vont souvent par couple (X et obligatoirement Y), ce qui fait que
−
bien souvent on dit par exemple "il faut mettre 1 donn
+
bien souvent on dit par exemple "il faut mettre 1 donn�e dans
−
PTSIN" alors qu'en fait il faut mettre un couple de donn
+
PTSIN" alors qu'en fait il faut mettre un couple de donn�es! Le
  +
quatri�me tableau c'est INTOUT. C'est la m�me chose que INT_IN
−
quatriŠme tableau c'est INTOUT. C'est la mˆme chose que INT_IN
 
−
sauf que c'est en sortie, pour les r
+
sauf que c'est en sortie, pour les r�sultats. Vous vous en doutez
 
maintenant, le dernier tableau, c'est PTSOUT!!!!
 
maintenant, le dernier tableau, c'est PTSOUT!!!!
   
−
Jetons maintenant un coup d'oeil sur le listing num
+
Jetons maintenant un coup d'oeil sur le listing num�ro 6.Un peu de
  +
r�flexion et cela ne doit pas vous poser de probl�me. Essayez
−
r‚flexion et cela ne doit pas vous poser de problŠme. Essayez
 
 
cependant de refaire ce listing avec des boucles parce qu'avec le
 
cependant de refaire ce listing avec des boucles parce qu'avec le
−
coloriage d'un seul pixel, c'est bien sur un peu limit
+
coloriage d'un seul pixel, c'est bien sur un peu limit�... Juste
 
une chose, essayer de bien imaginer ce qui se passe avec les
 
une chose, essayer de bien imaginer ce qui se passe avec les
 
tableaux Contrl, Int_in, Ptsin, Intout et Ptsout parce dans le
 
tableaux Contrl, Int_in, Ptsin, Intout et Ptsout parce dans le
Line 316: Line 316:
   
 
Bon maintenant que vous savez tracer un rectangle, vous pouvez
 
Bon maintenant que vous savez tracer un rectangle, vous pouvez
  +
�galement tracer des lignes, demander la couleur d'un pixel etc...
−
‚galement tracer des lignes, demander la couleur d'un pixel etc...
 
−
La fonction la plus d
+
La fonction la plus d�licate est � mon avis celle qui sert pour
 
l'affichage de texte. Elle permet cependant des effets assez
 
l'affichage de texte. Elle permet cependant des effets assez
  +
int�ressants (�criture avec diff�rents styles).
−
int‚ressants (‚criture avec diff‚rents styles).
 
   
 
Pour utiliser maintenant la ligne A, reportez vous aux descriptifs
 
Pour utiliser maintenant la ligne A, reportez vous aux descriptifs
  +
donn�s dans la Bible et essayez! 2e remarque cependant: avec le
−
donn‚s dans la Bible et essayez! 2e remarque cependant: avec le
 
 
GEM et la ligne A nous abordons en quelque sorte le concept du
 
GEM et la ligne A nous abordons en quelque sorte le concept du
 
multi-utilisateur/multi-machines. En effet le GEM utilise beaucoup
 
multi-utilisateur/multi-machines. En effet le GEM utilise beaucoup
 
la ligne A et partage donc avec lui les tableaux. Or, votre
 
la ligne A et partage donc avec lui les tableaux. Or, votre
−
programme peut tr
+
programme peut tr�s bien �tre en train de tracer de jolis
−
rectangles lorsqu'il vient
+
rectangles lorsqu'il vient � l'utilisateur l'id�e de promener sa
−
souris dans le menu d
+
souris dans le menu d�roulant... Appel � GEM, modification des
−
tableaux communs au GEM et
+
tableaux communs au GEM et � la ligne A, et au retour adieu les
 
rectangles...
 
rectangles...
   
  +
L� encore prudence et r�flexion pour se mettre � la place de
−
L… encore prudence et r‚flexion pour se mettre … la place de
 
 
l'utilisateur...
 
l'utilisateur...
 
Seconde remarque, les adresses fournies par la ligne A.
 
Seconde remarque, les adresses fournies par la ligne A.
   
−
Nous pouvons prendre comme exemple les fontes. O
+
Nous pouvons prendre comme exemple les fontes. O� se trouvent-
−
elles? Avec MONST, en se balladant en m
+
elles? Avec MONST, en se balladant en m�moire, il sera toujours
−
possible de les trouver. Malheureusement elles ne sont pas au m
+
possible de les trouver. Malheureusement elles ne sont pas au m�me
 
endroit dans toutes les machines. Ce n'est pas grave, il suffit de
 
endroit dans toutes les machines. Ce n'est pas grave, il suffit de
 
passer par la ligne A. En effet la fonction $A000 permet
 
passer par la ligne A. En effet la fonction $A000 permet
 
d'initialiser mais en grande partie cela ne fait que nous fournir
 
d'initialiser mais en grande partie cela ne fait que nous fournir
−
des adresses. Gr
+
des adresses. Gr�ce � celles-ci nous pouvons en d�duire de tr�s
−
nombreuses choses (emplacement des fontes entre autre). L
+
nombreuses choses (emplacement des fontes entre autre). L� encore,
  +
il est pr�f�rable de passer par DC.W $A000 puis de faire des
−
il est pr‚f‚rable de passer par DC.W $A000 puis de faire des
 
  +
d�calage pour trouver ce qui nous int�resse. Le petit rigolo qui
−
d‚calage pour trouver ce qui nous int‚resse. Le petit rigolo qui
 
−
se vante d'avoir trouv
+
se vante d'avoir trouv� l'adresse cach�e qui donne les fontes se
 
rendra bien vite compte que cela ne marche pas tout le temps alors
 
rendra bien vite compte que cela ne marche pas tout le temps alors
−
qu'avec la ligne A, c'est moins frime mais c'est s
+
qu'avec la ligne A, c'est moins frime mais c'est s�r!
   
 
Pour l'utilisation de la ligne A, le descriptif des fonctions dans
 
Pour l'utilisation de la ligne A, le descriptif des fonctions dans
 
la bible est suffisant. Commencez par les rectangles, les lignes,
 
la bible est suffisant. Commencez par les rectangles, les lignes,
−
placez des points o
+
placez des points o� demander leur couleurs etc... Voici un
−
exemple qui a
+
exemple qui a �t� dans les premiers que j'ai r�alis� avec la ligne
−
A: Affichage d'un petit texte en haut
+
A: Affichage d'un petit texte en haut � gauche (environ 5 lignes
  +
de 20 caract�res). A l'aide d'un boucle, on demande la couleur des
−
de 20 caractŠres). A l'aide d'un boucle, on demande la couleur des
 
−
pixels, et on recolorie les pixels sur la droite de l'
+
pixels, et on recolorie les pixels sur la droite de l'�cran et de
  +
fa�on � ce que le texte apparaissent verticalement.
−
fa‡on … ce que le texte apparaissent verticalement.
 
   
−
Pour ce qui est de d
+
Pour ce qui est de d�terminer l'emplacement de certaines donn�es
  +
gr�ce � un saut dans les adresses d'initialisation ligne A, la
−
grƒce … un saut dans les adresses d'initialisation ligne A, la
 
−
bible est un peu silencieuse l
+
bible est un peu silencieuse l�-dessus alors que le Livre du
  +
D�veloppeur chez Micro-App est plus fourni.
−
D‚veloppeur chez Micro-App est plus fourni.
 
   
−
Conseil de derni
+
Conseil de derni�re minute: faites beaucoup d'exercices avec la
−
ligne A et surtout faites vous une biblioth
+
ligne A et surtout faites vous une biblioth�que de Macro pour ses
 
fonctions.
 
fonctions.
 
</pre>
 
</pre>

Revision as of 15:07, 23 November 2023

   ******************************************************************
   *                                                                *
   *               COURS D'ASSEMBLEUR 68000 SUR ATARI ST            *
   *                                                                *
   *                 par Le F�roce Lapin (from 44E)                 *
   *                                                                *
   *                         Seconde s�rie                          *
   *                                                                *
   *                         Cours num�ro 7                         *
   ******************************************************************

   Inutile  de vous complimenter inutilement, mais si vous avez suivi
   bien  tranquillement  les cours depuis le d�but, si vous avez pris
   soin  de  vous  exercer  avec des petites applications, vous devez
   d�j� avoir un niveau correct en assembleur! N'oubliez donc pas les
   commandements principaux: bien commenter les programmes, r�fl�chir
   simplement, utiliser  papier  et crayon etc... Plus vous avancerez
   et  plus  vos  listings  seront  longs, et  plus une programmation
   propre  sera indispensable!!! De m�me cherchez par vous m�me avant
   de  poser  d�s  questions, cela  �vitera  bien souvent de demander
   n'importe quoi...

   Dans  ce  cours  ainsi  que  dans les 2 suivants, nous aborderons2
   sujets tabous: la Ligne A et le GEM.

   Concernant  ces 2 sujets, les critiques vont bon train: la ligne A
   c'est  pas commode, c'est nul et le GEM, pouah!!! Apr�s pas mal de
   temps  pass�  �  discuter  et  � �couter les opinions de plusieurs
   personnes, je  suis  arriv� � la conclusion suivante: Tout d'abord
   les  critiqueurs  sont  rarement  les programmeurs Ligne A ou GEM.
   Ensuite, imaginons un cours instant notre ST sans GEM et pr�parons
   nous  � faire un effort, GEM nous le rend bien! En dernier lieu je
   dirais   que   ces  cours  sont  destin�s  �  faire  de  vous  des
   programmeurs  et  pas  des  bidouilleurs. Vous  devez  donc  avoir
   connaissances  des possibilit�s de la ligne A et de celles du GEM.
   Ne  pensez  pas  cependant  trouver dans ces cours la totalit� des
   commandes  GEM. Ces  cours sont destin�s � levez un coin du voile,
   et si possible � vous donnez de quoi continuer vos recherches.

   En  tout cas je peux vous assurer que la ligne A et le GEM ne sont
   pas  plus  dur qu'autre choses (D'ailleurs y a t-il quelques chose
   de   dur  en  assembleur?????).  Il  y  a  �galement  un  avantage
   non-n�gligeable  concernant  la  ligne A  et  surtout GEM: Jusqu'�
   maintenant, nous  avons utilis� des instructions assembleur 68000,
   et il semblait �vident que dans un ouvrage sur le PASCAL, le BASIC
   GFA  ou  le C, nous aurions eu du mal � trouver des pr�cisions sur
   l'instruction  MOVEM.L  par  exemple ! Concernant la ligne A, mais
   surtout  GEM, nous allons utiliser principalement des macros (vous
   voyez  pourquoi  ce  sujet a �t� abord� avant!). Or ces macros ont
   chacune  un  nom, et  ce nom est un nom 'GEM' et non pas relatif �
   tel  ou  tel  assembleur!! Ainsi  ouvrir une fen�tre pour la faire
   appara�tre  sur  l'�cran, se fera avec une macro nomm�e WIND_OPEN.
   L'avantage c'est que cette fonction GEM est utilis�e en Pascal, en
   C  etc... Pour  cette  raison, vous pouvez chercher de la documen-
   tation  sur  GEM  quelque  soit  le  langage  utilis�  dans  cette
   documentation. Dans 99% des cas ce sera le C.

   Pour ma part mes connaissances en C sont r�duites et pourtant, une
   grande  partie  des documents GEM avec lesquels je travaille, fait
   r�f�rence � ce langage. Surtout ne vous contentez pas des ouvrages
   traitant du GEM en assembleur car vous serez bien vite d�go�t�!!

   Idem pour la ligne A, les param�tres n�cessaires ne d�pendent pas 
   du langage!!

   Un  autre  avantage  tr�s important, surtout pour le GEM, concerne
   les  formats de donn�es. Ayant la chance de pouvoir travailler sur
   des  Macs, de nombreuses choses y rendent la manipulation des pro-
   grammes  plus  ais�e que sur ST. Par exemple on charge un logiciel
   de  dessin, on  fait  un  petit  gribouillis,  ensuite  on  charge
   n'importe  quel  traitement  de  texte  et  hop  on  y colle notre
   gribouillis. Sur  ST il y a 99% de chance que le format de l'un ne
   soit  pas  reconnu par l'autre! Si on jette un coup d'oeil vers le
   monde PC, on se rend compte qu'il n'existe pas de format normalis�
   pour  ce  type de machine, et que c'est l'anarchie � ce niveau. De
   tels  formats  normalis�s existent sur Mac, ils sont respect�s, et
   les  rares  softs  ne  se pliant pas � cette norme sont vou�s � un
   formatage  rapide de la disquette!!! Le comble c'est que sur ST de
   telles  normes  de  formats  existent,  mais  elles  ne  sont  pas
   respect�es....

   En  fait  l'utilisation  de  la  ligne A  et surtout celle du GEM,
   doivent  nous amener � une r�flexion plus globale sur ce qu'est la
   programmation. Raymond Loewy (1893-1986), que l'on peut consid�rer
   comme  le  p�re  du design industriel, a eu beaucoup de r�flexions
   sur  ce qu'il faut donner au consommateur. Dans notre langage nous
   parlons  d'utilisateur  de  softs  mais  c'est  en fait de la m�me
   personne  qu'il  s'agit. Comparons  un  soft  Mac  et  un soft ST.
   L'�cran est allum�, le soft est charg�, et la seule chose que nous
   faisons, c'est  promener  notre  oeil  sur les ic�nes et la souris
   dans la barre de menu. Difficile de juger des qualit�s respectives
   des  2 softs sans aller plus loin. Pourtant, la simple disposition
   des  entr�es  dans  les  menus, le  positionnement  des ic�nes, le
   faible  nombre  de celles-ci mais en m�me temps leur impression de
   clart� donne dans 99% des cas l'avantage au Mac Intosh. Sur le ST,
   les  menus d�gueulent de partout (surtout dans les softs r�cents),
   et les ic�nes recouvrent un bureau qui n'en demande pas tant! Ceci
   est  �  rapprocher  d'une  r�flexion  de Raymond Loewy que je vous
   demande  de m�diter: "Un v�hicule a�rodynamique bien dessin� donne
   une impression de vitesse, m�me quand il est arr�t�". Inutile donc
   d'en  rajouter � la pelle, les 14524874 fonctions du softs ST sont
   simplement  des d�lires de programmeurs alors que les 20 fonctions
   du  softs  Mac ont �t� pens�es pour l'utilisateur. Lorsque Raymond
   Loewy  a  �t�  demand�  pour  faire  le nouveau logo de la soci�t�
   Shell, ainsi  que  tout  le  design  des  stations  services, il a
   simplement  dit � ses employeurs: "Vos clients, ce ne sont pas les
   automobiles, ce  sont  les  automobilistes".  Evident,  sauf  qu'�
   l'�poque  la  Shell vendait pour les automobiles, sans s'en rendre
   compte! 

   Eh  bien, sur  ST les programmeurs programment pour le ST (ou pour
   eux!) mais tr�s rarement pour les utilisateurs...

   Tout ceci �tant dit, nous allons aborder maintenant la ligne A, en
   esp�rant  cependant  que  cela  vous  fera  r�fl�chir lorsque vous
   concevrez vos programmes!

   LA LIGNE A

   Doc  officielle  Atari,  Chapitre  Ligne  A:  Bon  descriptif  des
   diff�rentes fonctions, assez brut mais efficace.

   Bible  ST: Bon descriptif des fonctions Livre du d�veloppeur: idem
   mais  en plus descriptif des donn�es dont on peut d�duire l'empla-
   cement avec la ligne A. 

   Doc  du  GFA  3.00: Assez �trange. Si les fonctions ligne A du GFA
   sont  appel�es  de la m�me mani�re qu'en assembleur, le concepteur
   de  ce langage a r�ussi � 'inventer' des fonctions en clamant bien
   haut  qu'il  s'agit  de fonction Ligne A !!! Peut-�tre pour que le
   GFA soit encore moins compatible... A ce propos, il semblerait que
   la  ligne A  ne soit plus officiellement support�e par le TT.... A
   voir...

   Dans  le  premier  kilo de m�moire de notre machine, nous avons un
   bon paquet d'adresses utilis�es par le microprocesseur. Nous avons
   pass� pas mal de temps � �plucher le principe de fonctionnement de
   ce kilo, qui sert au 68000 de 'relais' afin qu'il trouve l'adresse
   de  la  routine  qu'il  doit  ex�cuter pour telle ou telle raison.
   J'esp�re  de  tout  coeur  que  vous avez parfaitement assimil� ce
   principe  car  pour  la  ligne A, le GEM, les interruptions etc...
   c'est  encore  et  toujours  ce  m�me  principe qui est appliqu� !
   Prenez  la  feuille  qui  vous  a �t� fournie avec les cours de la
   s�rie  1, et qui montre ce premier kilo. Le vecteur 10 (adresse 40
   en d�cimal et $28 en hexa.) poss�de comme 'description': �mulateur
   ligne  1010. Convertissons  1010 en hexad�cimal, nous obtenons....
   $A ! Premi�re constatation, si ce vecteur est dans le premier kilo
   de  m�moire, c'est  donc  que  l'�mulateur  ligne A  n'est pas une
   particularit�  du  ST  mais  bien du 68000. Ces vecteurs vont donc
   nous donner  acc�s � une ou des routines, en utilisant toujours le
   m�me principe:

   Ordre  au  68000, celui-ci  analyse l'ordre, saute dans le premier
   kilo  de  m�moire  � l'adresse correspondant � cet ordre, y trouve
   l'adresse  de  la  routine  �  ex�cuter, il ne lui reste plus qu'�
   sauter � celle-ci.

   Comment  donc appeler les routines accessibles par l'interm�diaire
   de  l'�mulateur ligne A, que font ces routines, et comment 'discu-
   ter' avec  elles, c'est � dire comment leur passer d'�ventuels pa-
   ram�tres ?

   Dans  le  cas de l'Atari ST, les routines accessibles par le biais
   de  l'�mulateur ligne A sont des routines graphiques. Ces routines
   sont  les routines graphiques de base de notre machine. Elles sont
   utilis�es par le GEM. Leur  acc�s est rustique et mal commode mais
   la  commodit�  n'est  pas le but recherch�. G�n�ralement en assem-
   bleur  on  recherche souvent � faire soit m�me ses routines (c'est
   toujours mieux que celles des copains) Il faut cependant noter que
   dans  beaucoup  de  cas, une bonne utilisation de la Ligne A ou du
   Gem  est  amplement  suffisante. De  plus, c'est  bien souvent une
   bonne  connaissance  de  ces  interfaces qui vous permettra d'am�-
   liorer  vos  routines. Une  raison  suppl�mentaire  r�side dans la
   facilit�  de mise en oeuvre et dans la facilit� d'am�lioration. Il
   est  tout  a  fait possible que la soci�t� pour laquelle vous avez
   r�alis�  un  soft, vous  demande  la version 2.00 plusieurs ann�es
   apr�s la version 1.00. Les inf�mes bidouilles pour gagner 3 cycles
   d'horloges  vous  semblerons  alors bien moins claires qu'un appel
   classique  �  la  ligne A, peut  �tre  un  peu  plus lent. Mais l�
   encore, il faut penser en se mettant � la place de l'utilisateur !
   Ainsi  SPECTRUM 512 est  un  excellent  soft  pens� avec un esprit
   programmeur  et  le  r�sultat  c'est  que  tout  le  monde utilise
   DEGAS...

   Les  routines  ligne A  sont donc des routines graphiques de base.
   Elles  sont  au  nombre  de 16, et sont num�rot�s de 0 � 15. Voici
   leur fonctions par num�ro:

   0   =    initialisation
   1   =    placer un pixel � une couleur donn�e
   2   =    demander la couleur d'un pixel
   3   =    trac� d'une ligne quelconque
   4   =    trac� d'un ligne horizontale
   5   =    trac� d'un rectangle rempli
   6   =    remplissage d'une ligne d'un polygone
   7   =    transfert d'un bloc de bit
   8   =    transfert de matrice de caract�re
   9   =    visualisation de la souris
   10  =    non-visualisation de la souris
   11  =    transformation de la forme de la souris
   12       =effacement de sprite
   13  =    affichage de sprite
   14  =    copie de zone (FDB)
   15  =    remplissage de zone

   Nous  avons  r�pondu  �  la  premi�re  question: "qu'est ce que �a
   fait?" Nous  pouvons passer � la suivante :"comment l'appelle-t-on
   ?" Un appel ligne A se fait � l'aide d'un word. Le poids faible de
   ce  word  contient  le num�ro de la fonction, et le poids fort est
   �quivalent  �  $A  (d'o�  le  nom  ligne A). Ainsi pour appeler la
   fonction 3, on utilisera le word $A003. Mais o� le placer? Et bien
   tout  simplement  dans notre programme ! Pour pouvoir le noter tel
   quel  nous le ferons pr�c�der de DC.W de fa�on � ce que DEVPACK ne
   cherche  pas  �  transformer  ceci  en  code  68000  puisqu'aucune
   mn�monique  ne  correspond � ce nombre! Pour appeler la fonction 1
   de la ligne A nous mettrons donc dans notre programme:

    DC.W $A001

   Note: si  cela  vous  int�resse, vous  pouvez  suivre  les  appels
   ligne A  de  la  m�me  mani�re que les appels Trap, sous MONST, en
   tout cas si vous avez une des derni�res versions de MONST.

   Question suivante: comment passer des param�tres. En effet si nous
   voulons  utiliser  par  exemple  la  fonction  2 pour conna�tre la
   couleur  d'un  pixel, il  faudra  bien  fournir les coordonn�es de
   celui-ci. Nous  avons  vu  avec  Gemdos, Bios  et  Xbios  que  les
   param�tres  �taient  pass�s  par  la  pile. Nous  avons  �galement
   utilis� ce principe dans nos propres routines. Empilage, saut � la
   routine  (par BSR ou TRAP) puis correction de  la pile. Concernant
   la  ligne A  et  le  GEM, la pile n'est pas utilis�e. En effet, la
   ligne  A  et  le  GEM  utilisent un syst�me de tableau. Nous avons
   �tudi� les tableaux et nous avons vu comment lire dans ceux-ci. Et
   bien c'est un peu ce principe qui va �tre utilis�. Les param�tres,
   parfois  tr�s  nombreux, vont  �tre  plac�s  dans  un ou plusieurs
   tableaux, �  des  endroits  pr�cis, avant  l'appel  de la fonction
   choisie. Celle-ci  ira  chercher  les  param�tres  n�cessaires  et
   retournera  ensuite  ses  r�sultats  �galement  dans des tableaux.
   L'avantage  du  syst�me  des  macros  devient �vident: si pour des
   appels  gemdos, bios  et  xbios  il suffit d'empiler (le nombre de
   param�tres  n'est  pas �norme et le principe et toujours le m�me),
   il  faut  en  revanche  une sacr� dose de m�moire pour se rappeler
   dans  quel  tableau  et  surtout  o�  dans ce tableau doivent �tre
   d�pos�s les param�tres de chaque fonction. Malheureusement dans la
   biblioth�que  de  Devpack, il n'y a pas de macros pour la ligne A.
   Nous  allons  donc d�tailler quelques fonctions '� la main'. Etant
   donn�  que  vous  avez sous la main le cours sur les macros, je ne
   peux que vous conseiller  de r�aliser les macros correspondantes �
   ces  fonctions. Nous  allons  tout d'abord tracer un rectangle sur
   l'�cran. Voir listing num�ro 5.

   Tout  d'abord inclusion de la routine de d�marrage des programmes,
   petit  message  de  pr�sentation  en  effa�ant l'�cran au passage.
   Ensuite  initialisation de la ligne A. En retour, nous avons en A0
   l'adresse  du tableau que nous allons remplir avec les param�tres.
   Ceux-ci  sont assez nombreux et doivent �tre pass�s � des endroits
   bien   pr�cis.  Certains  demandent  une  petite  explication:  Le
   clipping. C'est  un syst�me bien utile, que nous retrouverons dans
   le  GEM. Par  exemple nous voulons afficher sur l'�cran une image,
   mais  celle-ci  ne doit appara�tre que dans un petit rectangle. Il
   va  donc  falloir se compliquer s�rieusement la tache afin e de ne
   pas  afficher toute l'image. Au lieu de cela nous pouvons utiliser
   le clipping. Cela consistera � donner les coordonn�es du rectangle
   dans  lequel  nous  voulons  que l'image apparaisse, et � dire que
   c'est  le  rectangle  de  clipping. Ensuite  il  reste  � afficher
   l'image  sur  tout  l'�cran  et  elle  n'appara�tra  que  dans  le
   rectangle, le  reste  de l'�cran �tant 'clipp�'. La encore, il est
   bien  �vident  que  cela  ralenti l'affichage, nous avons en effet
   affich�  tout  une  image pour n'en voir qu'un bout, et de plus le
   syst�me  a �t� oblig� de tester sans arr�t pour savoir s'il devait
   nous  montrer  ce  pixel, puis  l'autre  etc... Cette  m�thode est
   pourtant hyper-utile et nous verrons cela de nombreuses fois.

   Le  type  d'affichage. C'est  un  descripteur permettant de savoir
   comment  va  se  faire  l'affichage. 0= mode  remplacement, 1=mode
   transparent, 2=mo  deXOR, 3=transparent  inverse. Essayer de faire
   2e  rectangle  qui  se recouvre et observez le r�sultat en faisant
   varier les modes.

   Nous allons maintenant utiliser une autre fonction, qui demande la
   couleur  d'un  pixel. Dans  le  cas du tra�age d'un rectangle nous
   avons  utilis�  la  tableau dont l'adresse �tait en A0 pour passer
   les  param�tres. Pour  la demande de couleur d'un pixel et pour le
   coloriage d'un pixel, nous allons utiliser d'autres tableaux.Alors
   l�, suivez  bien  parce  que  les tableaux que nous allons d�crire
   maintenant  sont  �galement  utilis�s pas le GEM? nous allons donc
   faire d'une pierre deux coups !!!!!

   Tout  comme le GEM donc, la ligne A utilise des tableaux, destin�s
   chacun  �  recevoir ou � rendre des choses diff�rentes. Le premier
   tableau, c'est  le tableau CONTRL (Control) Il re�oit le num�ro de
   la  fonction  et  quelques  autres  param�tres. Le second c'est le
   tableau  INT_IN. Cela  signifie  Integer In, c'est donc un tableau
   qui  va recevoir des entiers (un nombre entier c'est en Anglais un
   integer) Le  troisi�me  tableau  c'est PTSIN (Points In). C'est un
   tableau  destin� � recevoir les coordonn�es des points ou bien des
   dimensions. Disons  que  ce  tableau  va  recevoir par exemple les
   coordonn�es  X  et  Y  pour  le centre d'un cercle, mais aussi son
   rayon. Il  r�gne  une certaine confusion dans les explications sur
   ce  tableau. En  effet  il re�oit entre autre des coordonn�es, qui
   vont  souvent par couple (X et obligatoirement Y), ce qui fait que
   bien  souvent  on  dit  par  exemple "il faut mettre 1 donn�e dans
   PTSIN" alors  qu'en  fait il faut mettre un couple de donn�es!  Le
   quatri�me  tableau  c'est  INTOUT. C'est  la m�me chose que INT_IN
   sauf  que c'est en sortie, pour les r�sultats. Vous vous en doutez
   maintenant, le dernier tableau, c'est PTSOUT!!!!

   Jetons maintenant un coup d'oeil sur le listing num�ro 6.Un peu de
   r�flexion  et  cela  ne  doit  pas vous poser de probl�me. Essayez
   cependant  de refaire ce listing avec des boucles parce qu'avec le
   coloriage  d'un  seul pixel, c'est bien sur un peu limit�... Juste
   une  chose, essayer  de  bien  imaginer  ce  qui se passe avec les
   tableaux  Contrl, Int_in, Ptsin, Intout  et  Ptsout  parce dans le
   chapitre suivant il va y en avoir beaucoup.....

   Bon  maintenant  que  vous  savez tracer un rectangle, vous pouvez
   �galement tracer des lignes, demander la couleur d'un pixel etc...
   La  fonction  la  plus d�licate est � mon avis celle qui sert pour
   l'affichage  de  texte. Elle  permet  cependant  des  effets assez
   int�ressants (�criture avec diff�rents styles).

   Pour utiliser maintenant la ligne A, reportez vous aux descriptifs
   donn�s  dans  la  Bible et essayez! 2e remarque cependant: avec le
   GEM  et  la  ligne A  nous abordons en quelque sorte le concept du
   multi-utilisateur/multi-machines. En effet le GEM utilise beaucoup
   la  ligne A  et  partage  donc  avec  lui  les tableaux. Or, votre
   programme  peut  tr�s  bien  �tre  en  train   de  tracer de jolis
   rectangles  lorsqu'il  vient � l'utilisateur l'id�e de promener sa
   souris  dans  le  menu  d�roulant... Appel � GEM, modification des
   tableaux  communs  au  GEM et � la ligne A, et au retour adieu les
   rectangles... 

   L�  encore  prudence  et  r�flexion  pour  se mettre � la place de
   l'utilisateur...
   Seconde remarque, les adresses fournies par la ligne A. 

   Nous  pouvons  prendre  comme  exemple les fontes. O� se trouvent-
   elles? Avec  MONST, en  se  balladant en m�moire, il sera toujours
   possible de les trouver. Malheureusement elles ne sont pas au m�me
   endroit dans toutes les machines. Ce n'est pas grave, il suffit de
   passer   par  la  ligne A.  En  effet  la  fonction  $A000  permet
   d'initialiser  mais en grande partie cela ne fait que nous fournir
   des  adresses. Gr�ce  �  celles-ci nous pouvons en d�duire de tr�s
   nombreuses choses (emplacement des fontes entre autre). L� encore,
   il  est  pr�f�rable  de  passer  par  DC.W $A000 puis de faire des
   d�calage  pour  trouver ce qui nous int�resse. Le petit rigolo qui
   se  vante  d'avoir trouv� l'adresse cach�e qui donne les fontes se
   rendra bien vite compte que cela ne marche pas tout le temps alors
   qu'avec la ligne A, c'est moins frime mais c'est s�r!

   Pour l'utilisation de la ligne A, le descriptif des fonctions dans
   la  bible est suffisant. Commencez par les rectangles, les lignes,
   placez  des  points  o�  demander  leur  couleurs  etc... Voici un
   exemple qui a �t� dans les premiers que j'ai r�alis� avec la ligne
   A: Affichage  d'un  petit texte en haut � gauche (environ 5 lignes
   de 20 caract�res). A l'aide d'un boucle, on demande la couleur des
   pixels, et  on recolorie les pixels sur la droite de l'�cran et de
   fa�on � ce que le texte apparaissent verticalement.

   Pour  ce  qui est de d�terminer l'emplacement de certaines donn�es
   gr�ce  �  un  saut  dans les adresses d'initialisation ligne A, la
   bible  est  un  peu  silencieuse  l�-dessus  alors que le Livre du
   D�veloppeur chez Micro-App est plus fourni.

   Conseil  de  derni�re  minute: faites beaucoup d'exercices avec la
   ligne A  et surtout faites vous une biblioth�que de Macro pour ses
   fonctions.

Back to ASM_Tutorial