<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.temlib.org/AtariForumWiki/index.php?action=history&amp;feed=atom&amp;title=COURS207.TXT</id>
	<title>COURS207.TXT - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.temlib.org/AtariForumWiki/index.php?action=history&amp;feed=atom&amp;title=COURS207.TXT"/>
	<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=COURS207.TXT&amp;action=history"/>
	<updated>2026-07-26T09:59:32Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.2</generator>
	<entry>
		<id>https://www.temlib.org/AtariForumWiki/index.php?title=COURS207.TXT&amp;diff=11521&amp;oldid=prev</id>
		<title>&gt;Zorro 2: Created page with &quot;&lt;pre&gt;    ******************************************************************    *                                                                *    *               COURS D'ASSEM...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=COURS207.TXT&amp;diff=11521&amp;oldid=prev"/>
		<updated>2016-12-22T14:54:22Z</updated>

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