<?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=Pl2_CORRIG_3.DOC</id>
	<title>Pl2 CORRIG 3.DOC - 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=Pl2_CORRIG_3.DOC"/>
	<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=Pl2_CORRIG_3.DOC&amp;action=history"/>
	<updated>2026-05-13T20:11:37Z</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=Pl2_CORRIG_3.DOC&amp;diff=16110&amp;oldid=prev</id>
		<title>&gt;Wongck at 15:18, 12 October 2011</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=Pl2_CORRIG_3.DOC&amp;diff=16110&amp;oldid=prev"/>
		<updated>2011-10-12T15:18:54Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:18, 12 October 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l803&quot;&gt;Line 803:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 803:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Back to [[ASM_Tutorial]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Back to [[ASM_Tutorial]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Programming&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ASSEMBLEUR 68000 sur ATARI ST Part 2&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>&gt;Wongck</name></author>
	</entry>
	<entry>
		<id>https://www.temlib.org/AtariForumWiki/index.php?title=Pl2_CORRIG_3.DOC&amp;diff=16109&amp;oldid=prev</id>
		<title>&gt;Silver Surfer: Added category</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=Pl2_CORRIG_3.DOC&amp;diff=16109&amp;oldid=prev"/>
		<updated>2009-05-02T20:45:36Z</updated>

		<summary type="html">&lt;p&gt;Added category&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:45, 2 May 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l803&quot;&gt;Line 803:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 803:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Back to [[ASM_Tutorial]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Back to [[ASM_Tutorial]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Programming]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>&gt;Silver Surfer</name></author>
	</entry>
	<entry>
		<id>https://www.temlib.org/AtariForumWiki/index.php?title=Pl2_CORRIG_3.DOC&amp;diff=16108&amp;oldid=prev</id>
		<title>&gt;Zorro 2 at 15:06, 9 October 2006</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=Pl2_CORRIG_3.DOC&amp;diff=16108&amp;oldid=prev"/>
		<updated>2006-10-09T15:06:39Z</updated>

		<summary type="html">&lt;p&gt;&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;
                         -------------------------&lt;br /&gt;
                         CORRECTIONS des EXERCICES&lt;br /&gt;
          &lt;br /&gt;
                              sur les LineAs&lt;br /&gt;
&lt;br /&gt;
                         -------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Exercice nrÂ°1:&lt;br /&gt;
   --------------&lt;br /&gt;
   VoilÃ  le listing du corrigâ€š.&lt;br /&gt;
   Je pense que cet exercice ne vous a pas posâ€š beaucoup de problÃ¨mes ,&lt;br /&gt;
   regardez attentivement ce listing, il ne comporte aucune difficultâ€š.&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
               TEXT&lt;br /&gt;
&lt;br /&gt;
               INCLUDE       &amp;quot;LINEQU.L&amp;quot;      ;les EQUs&lt;br /&gt;
               INCLUDE       &amp;quot;INIT_TOS.L&amp;quot;    ;Setblock&lt;br /&gt;
               INCLUDE       &amp;quot;MACROS.L&amp;quot;      ;Les macros&lt;br /&gt;
&lt;br /&gt;
               SETBLOCK                      ;Initialisation&lt;br /&gt;
&lt;br /&gt;
;On recherche l'adresse du Tableau interne pour les LineAs&lt;br /&gt;
&lt;br /&gt;
               DC.W          $A000           ;retour dans a0 de l'adresse&lt;br /&gt;
                                             ;du tableau interne&lt;br /&gt;
&lt;br /&gt;
;On dâ€špose les adresses des tableaux du VDI dans le tableau interne&lt;br /&gt;
&lt;br /&gt;
               move.l        #CONTROL,ticontrol(a0)&lt;br /&gt;
               move.l        #INTIN,tiintin(a0)&lt;br /&gt;
               move.l        #PTSIN,tiptsin(a0)&lt;br /&gt;
               move.l        #INTOUT,tiintout(a0)&lt;br /&gt;
               move.l        #PTSOUT,tiptsout(a0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
               PRINTLINE     SOURIS     ;texte&lt;br /&gt;
               WAIT                     ;attente&lt;br /&gt;
&lt;br /&gt;
               lea           INTIN,a6   ;adresse de INTIN dans a6&lt;br /&gt;
&lt;br /&gt;
               move          #0,6(a6)   ;0 dans intin+6 (couleur du&lt;br /&gt;
                                        ;masque)&lt;br /&gt;
               move          #1,8(a6)   ;1 dans intin+8 (couleur du&lt;br /&gt;
                                        ;premier plan)&lt;br /&gt;
&lt;br /&gt;
               lea           DONNEES,a5 ;adresse de 'DONNEES' dans a5&lt;br /&gt;
&lt;br /&gt;
               move          #31,d0     ;31 dans d0     &lt;br /&gt;
               adda.l        #10,a6     ;incrâ€šmente a6 de 10 unitâ€šs:&lt;br /&gt;
                                        ;a6 pointe donc sur intin+10&lt;br /&gt;
&lt;br /&gt;
BOUCLE         move          (a5)+,(a6)+ ;on dâ€špose les donnâ€šes dans&lt;br /&gt;
                                         ;le tableau INTIN pointâ€š par&lt;br /&gt;
                                         ;a6&lt;br /&gt;
               dbf           d0,BOUCLE   ;on boucle 32 fois pour les&lt;br /&gt;
                                         ;32 donnâ€šes (16 mots pour le&lt;br /&gt;
                                         ;masque et 16 mots pour le &lt;br /&gt;
                                         ;premier plan)&lt;br /&gt;
&lt;br /&gt;
               DC.W          $A00B       ;TRANSFORM MOUSE &lt;br /&gt;
&lt;br /&gt;
               move          #0,intin    ;compteur=0&lt;br /&gt;
               DC.W          $A009       ;SHOW MOUSE         &lt;br /&gt;
&lt;br /&gt;
               PRINTLINE     MESSAGE    ;texte&lt;br /&gt;
               WAIT                     ;attente &lt;br /&gt;
               TERM                     ;fin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
               DATA&lt;br /&gt;
&lt;br /&gt;
SOURIS         DC.B          27,'E','Je change la forme du curseur de la'&lt;br /&gt;
               DC.B          ' souris ...',0&lt;br /&gt;
&lt;br /&gt;
MESSAGE        DC.B          27,'E','Bougez la SOURIS SVP ...',7,0&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
DONNEES        DC.W          %0000001110000000    ;les 16 donnâ€šes (MOTS)&lt;br /&gt;
               DC.W          %0000011111000000    ;du MASQUE&lt;br /&gt;
               DC.W          %0000111111100000&lt;br /&gt;
               DC.W          %0000111111100000&lt;br /&gt;
               DC.W          %0000111111100000&lt;br /&gt;
               DC.W          %0000111111100000&lt;br /&gt;
               DC.W          %0000111111100000&lt;br /&gt;
               DC.W          %0000111111100000&lt;br /&gt;
               DC.W          %0000111111100000&lt;br /&gt;
               DC.W          %0000111111100000&lt;br /&gt;
               DC.W          %0000011111000000&lt;br /&gt;
               DC.W          %0000001110000000&lt;br /&gt;
               DC.W          %0000011111000000&lt;br /&gt;
               DC.W          %0000111111100000&lt;br /&gt;
               DC.W          %0000011111000000&lt;br /&gt;
               DC.W          %0000001110000000&lt;br /&gt;
&lt;br /&gt;
               DC.W          %0000000000000000    ;les 16 donnâ€šes (MOTS)&lt;br /&gt;
               DC.W          %0000001110000000    ;du PREMIER PLAN&lt;br /&gt;
               DC.W          %0000011111000000&lt;br /&gt;
               DC.W          %0000011111000000&lt;br /&gt;
               DC.W          %0000011111000000&lt;br /&gt;
               DC.W          %0000011111000000&lt;br /&gt;
               DC.W          %0000011111000000&lt;br /&gt;
               DC.W          %0000011111000000&lt;br /&gt;
               DC.W          %0000011111000000&lt;br /&gt;
               DC.W          %0000011111000000&lt;br /&gt;
               DC.W          %0000001110000000&lt;br /&gt;
               DC.W          %0000000000000000&lt;br /&gt;
               DC.W          %0000001110000000&lt;br /&gt;
               DC.W          %0000011111000000&lt;br /&gt;
               DC.W          %0000001110000000&lt;br /&gt;
               DC.W          %0000000000000000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
               BSS&lt;br /&gt;
&lt;br /&gt;
               INCLUDE       &amp;quot;TABLEAU.L&amp;quot;          ;le tableau du VDI               &lt;br /&gt;
&lt;br /&gt;
               END&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Exercice nrÂ°2:&lt;br /&gt;
   --------------&lt;br /&gt;
    LÃ  encore, aucune difficultâ€š majeure...&lt;br /&gt;
    Il fallait juste faire attention Ã  bien utiliser des coordonnâ€šes&lt;br /&gt;
    graphiques qui correspondent Ã  la râ€šsolution utilisâ€še.&lt;br /&gt;
&lt;br /&gt;
    (OX)=640 de 0 Ã  339&lt;br /&gt;
    (OY)=200 de 0 Ã  199  (MOYENNE râ€šsolution)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
               TEXT&lt;br /&gt;
&lt;br /&gt;
               INCLUDE       &amp;quot;LINEQU.L&amp;quot;      ;les EQUs&lt;br /&gt;
               INCLUDE       &amp;quot;INIT_TOS.L&amp;quot;    ;Setblock&lt;br /&gt;
               INCLUDE       &amp;quot;MACROS.L&amp;quot;      ;Les macros&lt;br /&gt;
&lt;br /&gt;
               SETBLOCK                      ;initialisation&lt;br /&gt;
&lt;br /&gt;
               DC.W          $A000   ;on demande l'adresse du T.I. et&lt;br /&gt;
               movea.l       a0,a5   ;on la pose dans a5 car a0 risque         &lt;br /&gt;
                                     ;d'Ã¨tre modifiâ€š par nos MACROS...&lt;br /&gt;
&lt;br /&gt;
; On dâ€špose les adresses des tableaux du VDI &lt;br /&gt;
&lt;br /&gt;
               move.l        #CONTROL,ticontrol(a0)&lt;br /&gt;
               move.l        #INTIN,tiintin(a0)&lt;br /&gt;
               move.l        #PTSIN,tiptsin(a0)&lt;br /&gt;
               move.l        #INTOUT,tiintout(a0)&lt;br /&gt;
               move.l        #PTSOUT,tiptsout(a0)&lt;br /&gt;
&lt;br /&gt;
               PRINTLINE     CADRE      ;texte&lt;br /&gt;
               WAIT                     ;attente&lt;br /&gt;
               DC.W          $A00A      ;HIDE MOUSE&lt;br /&gt;
               CCONOUT       #27        ;ESC&lt;br /&gt;
               CCONOUT       #'E'       ;+ 'E' = efface l'â€šcran&lt;br /&gt;
&lt;br /&gt;
               move        #1,_fg_bp_1(a5) &lt;br /&gt;
               move        #1,_fg_bp_2(a5)  ;couleur=%11=3&lt;br /&gt;
&lt;br /&gt;
               move        #0,_wrt_mode(a5) ;Write mode AND&lt;br /&gt;
&lt;br /&gt;
               move        #1,_patmsk(a5)   ;1+1=2 donnâ€šes pour le PAT&lt;br /&gt;
&lt;br /&gt;
               move.l      #LIGNE,_patptr(a5)  ;en 'LIGNE' se trouve&lt;br /&gt;
                                               ;le nouveau PAT&lt;br /&gt;
&lt;br /&gt;
               move        #%1111111111111111,_ln_mask(a5) ;ligne PLEINE&lt;br /&gt;
&lt;br /&gt;
               move          #0,d5      ;0 dans d5&lt;br /&gt;
               move          #22,d6     ;22 dans d6     &lt;br /&gt;
&lt;br /&gt;
BOUCLE         move          #0,_x1(a5)      ;_x1=0&lt;br /&gt;
               move          d5,_y1(a5)      ;_y1=d5&lt;br /&gt;
               move          #630,_x2(a5)    ;_x2=630&lt;br /&gt;
               move          d5,_y1(a5)      ;_y2=d5&lt;br /&gt;
               add           #9,d5           ;on ajoute 9 Ã  d5&lt;br /&gt;
               DC.W          $A004           ;et on trace la H-LINE&lt;br /&gt;
               dbf           d6,BOUCLE       ;on recommence 23 fois&lt;br /&gt;
&lt;br /&gt;
               move          #0,d5      ;0 dans d5&lt;br /&gt;
               move          #42,d6     ;42 dans d6         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
LOOP           move          d5,_x1(a5)      ;_x1=d5&lt;br /&gt;
               move          #0,_y1(a5)      ;_y1=0&lt;br /&gt;
               move          d5,_x2(a5)      ;_x2=d5&lt;br /&gt;
               move          #197,_y2(a5)    ;_y2=197     &lt;br /&gt;
               add           #15,d5          ;on ajoute 15 Ã  d5     &lt;br /&gt;
               DC.W          $A003           ;et on trace la LINE&lt;br /&gt;
               dbf           d6,LOOP         ;on recommence 43 fois&lt;br /&gt;
&lt;br /&gt;
               WAIT                     ;attente&lt;br /&gt;
               TERM                     ;fin&lt;br /&gt;
&lt;br /&gt;
               DATA&lt;br /&gt;
&lt;br /&gt;
LIGNE          DC.W          %1111111111111111    ;le PAT (Nombre PAIRE&lt;br /&gt;
               DC.W          %1111111111111111    ;de MOTS)&lt;br /&gt;
&lt;br /&gt;
CADRE          DC.B          27,'E','Je vais tracer un quadrillage ...'&lt;br /&gt;
               DC.B          13,10,'Fonctions LINE et H-LINE :',0&lt;br /&gt;
&lt;br /&gt;
               BSS&lt;br /&gt;
&lt;br /&gt;
               INCLUDE       &amp;quot;TABLEAU.L&amp;quot;          ;le Tableau du VDI&lt;br /&gt;
&lt;br /&gt;
               END&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Exercice nrÂ°3:&lt;br /&gt;
   --------------&lt;br /&gt;
   VoilÃ  le listing du programme qui trace un rectangle avec un PAT &lt;br /&gt;
   redâ€šfini aprÃ¨s avoir chargâ€š le programme de quadrillage prâ€šcâ€šdent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
               TEXT&lt;br /&gt;
&lt;br /&gt;
               INCLUDE       &amp;quot;LINEQU.L&amp;quot;      ;les EQUs&lt;br /&gt;
               INCLUDE       &amp;quot;INIT_TOS.L&amp;quot;    ;Setblock&lt;br /&gt;
               INCLUDE       &amp;quot;MACROS.L&amp;quot;      ;Les MACROS&lt;br /&gt;
&lt;br /&gt;
               SETBLOCK                      ;initialisation&lt;br /&gt;
&lt;br /&gt;
               PRINTLINE     CADRE           ;texte&lt;br /&gt;
               WAIT                          ;attente&lt;br /&gt;
&lt;br /&gt;
               PEXEC         NUL,ZERO,PRG,#0  ;on charge le programme dont&lt;br /&gt;
                                              ;le nom est en 'PRG' en mode&lt;br /&gt;
                                              ;0 et sans paramÃ¨tres.&lt;br /&gt;
&lt;br /&gt;
               DC.W          $A000        ;On recherche l'adresse du T.I.     &lt;br /&gt;
               movea.l       a0,a5        ;On sauve cette adresse car elle&lt;br /&gt;
                                          ;risque d'Ã¨tre effacâ€še par une&lt;br /&gt;
                                          ;de nos MACRO si elle utilise ce&lt;br /&gt;
                                          ;registre...&lt;br /&gt;
&lt;br /&gt;
; On pose les adresses des tableaux du VDI dans le T.I.&lt;br /&gt;
&lt;br /&gt;
               move.l        #CONTROL,ticontrol(a0)&lt;br /&gt;
               move.l        #INTIN,tiintin(a0)&lt;br /&gt;
               move.l        #PTSIN,tiptsin(a0)&lt;br /&gt;
               move.l        #INTOUT,tiintout(a0)&lt;br /&gt;
               move.l        #PTSOUT,tiptsout(a0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
               move          #1,_fg_bp_1(a5) &lt;br /&gt;
               move          #0,_fg_bp_2(a5)   ;Couleur=%01=1&lt;br /&gt;
&lt;br /&gt;
               move          #0,_wrt_mode(a5)  ;Write mode AND&lt;br /&gt;
&lt;br /&gt;
               move          #7,_patmsk(a5)    ;7+1=8 donnâ€šes pour le PAT&lt;br /&gt;
   &lt;br /&gt;
               move.l        #FILL,_patptr(a5) ;Le nouveau PAT est en &lt;br /&gt;
                                               ;'FILL' &lt;br /&gt;
&lt;br /&gt;
               ;les coordonnâ€šes du rectangle&lt;br /&gt;
&lt;br /&gt;
               move          #129,_x1(a5)      ;_x1=129    &lt;br /&gt;
               move          #24,_y1(a5)       ;_y1=24   &lt;br /&gt;
               move          #496,_x2(a5)      ;_x2=496&lt;br /&gt;
               move          #183,_y2(a5)      ;_y2=183&lt;br /&gt;
&lt;br /&gt;
               DC.W          $A005             ;FILLED RECTANGLE&lt;br /&gt;
               WAIT                            ;attente   &lt;br /&gt;
               TERM                            ;fin&lt;br /&gt;
&lt;br /&gt;
               DATA&lt;br /&gt;
&lt;br /&gt;
FILL           DC.W          %0111111111111110 ;le PAT (Nombre PAIRE de   &lt;br /&gt;
               DC.W          %0100000000000010 ;MOTS)   &lt;br /&gt;
               DC.W          %0101000000001010&lt;br /&gt;
               DC.W          %0101111111111010&lt;br /&gt;
               DC.W          %0101000000001010&lt;br /&gt;
               DC.W          %0100000000000010&lt;br /&gt;
               DC.W          %0111111111111110&lt;br /&gt;
               DC.W          %0000000000000000&lt;br /&gt;
&lt;br /&gt;
CADRE          DC.B          27,'E','Je vais tracer un carrâ€š avec $A005 '&lt;br /&gt;
               DC.B          'aprÃ¨s avoir chargâ€š CADRE.PRG ',0&lt;br /&gt;
&lt;br /&gt;
NUL            DC.B          0     ;Pas d'environnement et de&lt;br /&gt;
ZERO           DC.B          0     ;ligne de commande&lt;br /&gt;
&lt;br /&gt;
PRG            DC.B          'A:\CADRE.PRG',0    ;le NOM du prg Ã  charger&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
               BSS&lt;br /&gt;
&lt;br /&gt;
               INCLUDE       &amp;quot;TABLEAU.L&amp;quot;     ;le Tableau du VDI&lt;br /&gt;
&lt;br /&gt;
               END&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Exercice nrÂ° 4:&lt;br /&gt;
   ---------------&lt;br /&gt;
   VoilÃ  le listing du programme qui affiche le SPRITE.&lt;br /&gt;
&lt;br /&gt;
   Il fallait faire attention Ã  bien utiliser UNDRAW SPRITE Ã  chaque fois&lt;br /&gt;
   pour pouvoir râ€šafficher le SPRITE Ã  d'autres coordonnâ€šes.&lt;br /&gt;
   Il fallait aussi fournir TOUS les paramÃ¨tres dont les routines DRAW&lt;br /&gt;
   SPRITE et UNDRAW SPRITE ont besoin pour obtenir un râ€šsultat correct.&lt;br /&gt;
   J'ai choisit ,pour la forme de mon SPRITE, un sigle ATARI et mes &lt;br /&gt;
   intitiales :L-P .(C'est pas trÃ¨s original, je le reconnais...)&lt;br /&gt;
      &lt;br /&gt;
   J'utilise aussi la macro instruction VSYNC pour synchroniser nos&lt;br /&gt;
   â€šditions graphiques:le programme en est fortement ralenti mais le&lt;br /&gt;
   clignotement des affichages du SPRITE disparait...&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
               TEXT&lt;br /&gt;
&lt;br /&gt;
               INCLUDE       &amp;quot;LINEQU.L&amp;quot;      ;Les EQUs&lt;br /&gt;
               INCLUDE       &amp;quot;INIT_TOS.L&amp;quot;    ;Setblock&lt;br /&gt;
               INCLUDE       &amp;quot;MACROS.L&amp;quot;      ;les MACROS&lt;br /&gt;
&lt;br /&gt;
               SETBLOCK                      ;initialisation&lt;br /&gt;
&lt;br /&gt;
               DC.W          $A000           ;adresse du T.I. dans a0 et&lt;br /&gt;
               movea.l       a0,a5           ;dans a5 pour â€šviter de la&lt;br /&gt;
                                             ;perdre si une MACRO utilise&lt;br /&gt;
                                             ;le registre a0...     &lt;br /&gt;
&lt;br /&gt;
; On pose les adresses des Tableaux du VDI dans le T.I.&lt;br /&gt;
&lt;br /&gt;
               move.l        #CONTROL,ticontrol(a0)&lt;br /&gt;
               move.l        #INTIN,tiintin(a0)&lt;br /&gt;
               move.l        #PTSIN,tiptsin(a0)&lt;br /&gt;
               move.l        #INTOUT,tiintout(a0)&lt;br /&gt;
               move.l        #PTSOUT,tiptsout(a0)&lt;br /&gt;
&lt;br /&gt;
               PRINTLINE     PIX        ;texte&lt;br /&gt;
               WAIT                     ;attente&lt;br /&gt;
               DC.W          $A00A      ;HIDE MOUSE&lt;br /&gt;
               CCONOUT       #27        ;ESC&lt;br /&gt;
               CCONOUT       #'E'       ;+'E' = effacer l'â€šcran&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
               move          #0,_wrt_mode(a5)     ;Write mode AND&lt;br /&gt;
&lt;br /&gt;
               move.l        #BLOC,a0   ;Adresse du bloc de dâ€šfinition&lt;br /&gt;
                                        ;du SPRITE dans a0          &lt;br /&gt;
               move.l        #SAUVE,a2  ;Adresse du Tampon de sauvegarde&lt;br /&gt;
                                        ;dans a2 (128 octets pour la moy-&lt;br /&gt;
                                        ;enne râ€šsolution)&lt;br /&gt;
&lt;br /&gt;
; Le SPRITE va d'abord de la gauche vers la droite (coordonnâ€še X dans d0&lt;br /&gt;
  et coordonnâ€še Y dans d1)&lt;br /&gt;
&lt;br /&gt;
               move          #10,X      ;1 MOT=10 en 'X'&lt;br /&gt;
&lt;br /&gt;
BBB            add           #1,X       ;On ajoute 1 en 'X'&lt;br /&gt;
               move          X,d0       ;On pose le MOT de 'X' dans d0&lt;br /&gt;
               move          #100,d1    ;On pose 100 dans d1&lt;br /&gt;
               move.l        #BLOC,a0   ;L'adresse du bloc dans a0&lt;br /&gt;
               cmpi          #620,d0    ;A-t-on d0=620 ?&lt;br /&gt;
               beq           DEUX       ;si OUI, va en 'DEUX'&lt;br /&gt;
               move.l        #SAUVE,a2  ;Sinon pose l'adresse du Tampon&lt;br /&gt;
                                        ;de sauvegarde du sprite dans a2&lt;br /&gt;
               DC.W          $A00C      ;et UNDRAW SPRITE&lt;br /&gt;
               move.l        #BLOC,a0   ;L'adresse du bloc dans a0&lt;br /&gt;
               move.l        #SAUVE,a2  ;L'adresse du tampon dans a2&lt;br /&gt;
               DC.W          $A00D      ;et DRAW SPRITE&lt;br /&gt;
               VSYNC                    ;On synchronise&lt;br /&gt;
               jmp           BBB        ;et on recommence en 'BBB'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Puis le SPRITE revient de la droite vers la gauche.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DEUX           sub           #1,X       ;on retranche 1 en 'X' &lt;br /&gt;
               move          X,d0       ;on pose le mot de 'X' dans d0&lt;br /&gt;
               move          #100,d1    ;on pose 100 dans d1&lt;br /&gt;
               move.l        #BLOC,a0   ;L'adresse du bloc dans a0&lt;br /&gt;
               cmpi          #10,d0     ;A-t-on d0=10 ?&lt;br /&gt;
               beq           FIN        ;Si OUI, alors va en 'FIN'&lt;br /&gt;
               move.l        #SAUVE,a2  ;Sinon adresse du tampon dans a2&lt;br /&gt;
               DC.W          $A00C      ;et UNDRAW SPRITE&lt;br /&gt;
               move.l        #BLOC,a0   ;L'adresse du bloc dans a0&lt;br /&gt;
               move.l        #SAUVE,a2  ;L'adresse du tampon dans a2&lt;br /&gt;
               DC.W          $A00D      ;et DRAW SPRITE&lt;br /&gt;
               VSYNC                    ;On synchronise&lt;br /&gt;
               jmp           DEUX       ;et on recommence en 'DEUX'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FIN            WAIT                     ;attente&lt;br /&gt;
               TERM                     ;fin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
               DATA&lt;br /&gt;
&lt;br /&gt;
;Le bloc de dâ€šfinition du SPRITE:&lt;br /&gt;
&lt;br /&gt;
BLOC           DC.W          0     ;X du point chaud&lt;br /&gt;
               DC.W          0     ;Y du point chaud&lt;br /&gt;
               DC.W          0     ;Format VDI&lt;br /&gt;
               DC.W          0     ;Couleur du MASQUE&lt;br /&gt;
               DC.W          1     ;Couleur du premier plan&lt;br /&gt;
&lt;br /&gt;
               DC.W          0                    ;pas de masque&lt;br /&gt;
               DC.W          %0000000000000000    ;1Â° ligne du 1Â° plan&lt;br /&gt;
               DC.W          0                    ;pas de masque&lt;br /&gt;
               DC.W          %0000110110110000    ;2Â° ligne du 1Â° plan&lt;br /&gt;
               DC.W          0                    ;pas de masque&lt;br /&gt;
               DC.W          %0000110110110000&lt;br /&gt;
               DC.W          0&lt;br /&gt;
               DC.W          %0000110110110000&lt;br /&gt;
               DC.W          0&lt;br /&gt;
               DC.W          %0001100110011000&lt;br /&gt;
               DC.W          0&lt;br /&gt;
               DC.W          %0011000110001100&lt;br /&gt;
               DC.W          0&lt;br /&gt;
               DC.W          %0011000110001100&lt;br /&gt;
               DC.W          0&lt;br /&gt;
               DC.W          %0110000110000110&lt;br /&gt;
               DC.W          0&lt;br /&gt;
               DC.W          %0110000110000110&lt;br /&gt;
               DC.W          0&lt;br /&gt;
               DC.W          %0000000000000000&lt;br /&gt;
               DC.W          0&lt;br /&gt;
               DC.W          %0011000001111100&lt;br /&gt;
               DC.W          0&lt;br /&gt;
               DC.W          %0011000001101100&lt;br /&gt;
               DC.W          0&lt;br /&gt;
               DC.W          %0011000001111000&lt;br /&gt;
               DC.W          0&lt;br /&gt;
               DC.W          %0011000001100000&lt;br /&gt;
               DC.W          0&lt;br /&gt;
               DC.W          %0011111001100000&lt;br /&gt;
               DC.W          0                    ;pas de MASQUE&lt;br /&gt;
               DC.W          %0000000000000000    ;16 Â° ligne du 1Â° plan&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PIX            DC.B          27,'E','Je vais faire bouger un SPRITE avec '&lt;br /&gt;
               DC.B          '$A00D',0&lt;br /&gt;
&lt;br /&gt;
               BSS&lt;br /&gt;
&lt;br /&gt;
X              DS.W          1     ;on râ€šserve un MOT en 'X'&lt;br /&gt;
&lt;br /&gt;
SAUVE          DS.B          128   ;le TAMPON pour le SPRITE ( MOYENNE&lt;br /&gt;
                                   ;râ€šsolution)&lt;br /&gt;
&lt;br /&gt;
               INCLUDE       &amp;quot;TABLEAU.L&amp;quot;     ;le tableau du VDI&lt;br /&gt;
&lt;br /&gt;
               END&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) Exercice nrÂ°5:&lt;br /&gt;
   --------------&lt;br /&gt;
  VoilÃ  le listing du programme qui affiche les points de diffâ€šrente&lt;br /&gt;
  couleur sur l'â€šcran.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
               TEXT&lt;br /&gt;
&lt;br /&gt;
               INCLUDE       &amp;quot;LINEQU.L&amp;quot;      ;les EQUs&lt;br /&gt;
               INCLUDE       &amp;quot;INIT_TOS.L&amp;quot;    ;Setblock&lt;br /&gt;
               INCLUDE       &amp;quot;MACROS.L&amp;quot;      ;les MACROS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Je teste d'obord si on est dans la bonne râ€šsolution:&lt;br /&gt;
&lt;br /&gt;
               GETREZ                        ;on demande la Râ€šsolution&lt;br /&gt;
               tst           d0              ;A-t-on râ€šsolution=0 (BASSE)&lt;br /&gt;
               beq           OK              ;Si Oui va en 'OK'&lt;br /&gt;
               PRINTLINE     MOYENNE         ;sinon message &lt;br /&gt;
               WAIT                          ;attente&lt;br /&gt;
               TERM                          ;et fin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OK             SETBLOCK                      ;initialise&lt;br /&gt;
&lt;br /&gt;
               DC.W          $A000           ;adresse du T.I. dans a0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; On pose les adresses des tableaux du VDI dans le T.I.&lt;br /&gt;
&lt;br /&gt;
               move.l        #CONTROL,ticontrol(a0)&lt;br /&gt;
               move.l        #INTIN,tiintin(a0)&lt;br /&gt;
               move.l        #PTSIN,tiptsin(a0)&lt;br /&gt;
               move.l        #INTOUT,tiintout(a0)&lt;br /&gt;
               move.l        #PTSOUT,tiptsout(a0)&lt;br /&gt;
&lt;br /&gt;
               DC.W          $A00A           ;HIDE MOUSE&lt;br /&gt;
&lt;br /&gt;
               PRINTLINE     MESSAGE         ;texte&lt;br /&gt;
               WAIT                          ;attente&lt;br /&gt;
               CCONOUT       #27             ;ESC&lt;br /&gt;
               CCONOUT       #'E'            ;+'E' = effacer l'â€šcran&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Je dâ€šfinit une MACRO INSTRUCTION nommâ€še POINT qui admet 3 paramÃ¨tres&lt;br /&gt;
; et qui permet d'â€šditer un point Ã  l'â€šcran grÃ ce Ã  la routine $A001&lt;br /&gt;
&lt;br /&gt;
POINT          MACRO         $\1,$\2,$\3     ;macro Ã  3 paramÃ¨tres&lt;br /&gt;
&lt;br /&gt;
               move          \1,ptsin        ;\1=coordonnâ€še X&lt;br /&gt;
               move          \2,ptsin+2      ;\2=coordonnâ€še Y&lt;br /&gt;
               move          \3,intin        ;\3=couleur&lt;br /&gt;
               DC.W          $A001           ;PUT PIXEL&lt;br /&gt;
&lt;br /&gt;
               ENDM                          ;fin de la macro&lt;br /&gt;
&lt;br /&gt;
; Ici je vais afficher tous les points de l'â€šcran et je leurs donne une&lt;br /&gt;
; couleur grÆ’ce au nombre alâ€šatoire que me donne RANDOM dans d0.&lt;br /&gt;
; Pour ne pas obtenir un nombre trop grand avec RANDOM, je masque le&lt;br /&gt;
; nombre de d0 avec le nombre maximum de chiffres dont j'ai besoin.&lt;br /&gt;
; On obtient ainsi un nombre compris entre 0 et la valeur du masque &lt;br /&gt;
; (Voir le chapitre sur le BIOS et l'XBIOS Ã  la fonction RANDOM ...)&lt;br /&gt;
; Si d0=0 (couleur 0), je recommence le test avec RANDOM car la couleur&lt;br /&gt;
; du bord ne doit pas changer. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
               move          #319,d5         ;319 dans d5&lt;br /&gt;
               move          #1,d0           ;1 dans d0&lt;br /&gt;
               PALETTE       NOUVEAU         ;on change la PALETTE une&lt;br /&gt;
                                             ;premiÃ¨re fois&lt;br /&gt;
&lt;br /&gt;
LOOP           move          #199,d6         ;199 dans d6&lt;br /&gt;
BOUCLE         POINT         d5,d6,d0        ;POINT aux coordonnâ€šes &lt;br /&gt;
                                             ;(d5,d6) et avec la couleur&lt;br /&gt;
                                             ;contenue dans d0&lt;br /&gt;
ENCORE         RANDOM                        ;Nombre alâ€šatoire en retour &lt;br /&gt;
                                             ;dans d0&lt;br /&gt;
               and.l         #15,d0          ;on masque les 4 bits de plus&lt;br /&gt;
                                             ;faible poids de d0 :15=%1111&lt;br /&gt;
               tst           d0              ;A-t-on d0=0 ?&lt;br /&gt;
               beq           ENCORE          ;Si oui, on recommence&lt;br /&gt;
               dbf           d6,BOUCLE       ;on boucle d6 fois en BOUCLE&lt;br /&gt;
               dbf           d5,LOOP         ;on boucle d5 fois en LOOP&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Maintenant on fait varier la valeur de la palette des couleurs:&lt;br /&gt;
; On a crâ€še un vecteur qui contient les adresses des palettes. &lt;br /&gt;
; (En 'VECTEUR')&lt;br /&gt;
; On prend une de ces adresses et on change la palette (Je n'utilise pas &lt;br /&gt;
; la MACRO PALETTE que nous avons crâ€še car elle attend un LABEL comme pa-&lt;br /&gt;
; ramÃ¨tre.) puis on recommence avec l'adresse de la palette suivante...&lt;br /&gt;
; J'utilise aussi INKEY pour tester si on enfonce une touche et si tel&lt;br /&gt;
; est le cas, le programme se termine.&lt;br /&gt;
&lt;br /&gt;
ICI            move          #14,d6          ;14 dans d6&lt;br /&gt;
               lea           VECTEUR,a6      ;adresse de 'VECTEUR' dans a6&lt;br /&gt;
&lt;br /&gt;
CHANGE         move.l        (a6)+,-(sp)    ;on pose le L-M pointâ€š par a6&lt;br /&gt;
                                            ;(une adresse pour la palette)&lt;br /&gt;
                                            ;dans -(SP)&lt;br /&gt;
               move          #6,-(sp)       ;Code 6 (PALETTE) &lt;br /&gt;
               trap          #14            ;du BIOS &lt;br /&gt;
               addq.l        #6,sp          ;et on repositionne SP &lt;br /&gt;
               INKEY                        ;je teste une touche au vol &lt;br /&gt;
               tst           d0             ;d0=0 ?  (Si=0,pas de touche) &lt;br /&gt;
               bne           RETOUR         ;Si NON (1 touche a â€štâ€š en-&lt;br /&gt;
                                            ;foncâ€še) on va en 'RETOUR'&lt;br /&gt;
               dbf           d6,CHANGE      ;Sinon boucle en 'CHANGE' &lt;br /&gt;
               jmp           ICI            ;puis va en 'ICI' &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
RETOUR         CCONOUT       #27            ;ESC &lt;br /&gt;
               CCONOUT       #'E'           ;+'E' = effacer l'â€šcran &lt;br /&gt;
&lt;br /&gt;
               PALETTE       ANCIEN         ;On remet l'ancienne PALETTE &lt;br /&gt;
&lt;br /&gt;
               TERM                         ;et on quitte le prg &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
               DATA&lt;br /&gt;
&lt;br /&gt;
; Les donnâ€šes dâ€šfinissant les palettes qu'on affiche sucessivement pour&lt;br /&gt;
; obtenir une rotation des couleurs.&lt;br /&gt;
; A chaque palette, on fait une rotation d'une couleur vers la droite...&lt;br /&gt;
; La couleur 0 ne change jamais pour â€šviter d'obtenir un clignotement du&lt;br /&gt;
; bord de l'â€šcran (Couleur 0)&lt;br /&gt;
&lt;br /&gt;
NOUVEAU        DC.W          $000,$027,$037,$027,$017,$016,$006,$015&lt;br /&gt;
               DC.W          $014,$036,$025,$005,$004,$014,$007,$003&lt;br /&gt;
&lt;br /&gt;
UN             DC.W          $000,$007,$027,$037,$027,$017,$016,$006&lt;br /&gt;
               DC.W          $014,$015,$036,$025,$005,$004,$014,$007&lt;br /&gt;
&lt;br /&gt;
DEUX           DC.W          $000,$003,$007,$027,$037,$027,$017,$016&lt;br /&gt;
               DC.W          $006,$015,$014,$036,$025,$005,$004,$014&lt;br /&gt;
&lt;br /&gt;
TROIS          DC.W          $000,$007,$003,$007,$027,$037,$027,$017&lt;br /&gt;
               DC.W          $016,$006,$015,$014,$036,$025,$005,$004&lt;br /&gt;
&lt;br /&gt;
QUATRE         DC.W          $000,$014,$007,$003,$007,$027,$037,$027&lt;br /&gt;
               DC.W          $017,$016,$006,$015,$014,$036,$025,$005&lt;br /&gt;
&lt;br /&gt;
CINQ           DC.W          $000,$004,$014,$007,$003,$007,$027,$037&lt;br /&gt;
               DC.W          $027,$017,$016,$006,$015,$014,$036,$025&lt;br /&gt;
&lt;br /&gt;
SIX            DC.W          $000,$005,$004,$014,$007,$003,$007,$027&lt;br /&gt;
               DC.W          $037,$027,$017,$016,$006,$015,$014,$036&lt;br /&gt;
&lt;br /&gt;
SEPT           DC.W          $000,$025,$005,$004,$014,$007,$003,$014&lt;br /&gt;
               DC.W          $007,$027,$037,$027,$017,$016,$006,$015&lt;br /&gt;
&lt;br /&gt;
HUIT           DC.W          $000,$036,$025,$005,$004,$014,$007,$003&lt;br /&gt;
               DC.W          $014,$007,$027,$037,$027,$017,$016,$006&lt;br /&gt;
&lt;br /&gt;
NEUF           DC.W          $000,$015,$036,$025,$005,$004,$014,$007&lt;br /&gt;
               DC.W          $003,$014,$007,$027,$037,$027,$017,$016&lt;br /&gt;
&lt;br /&gt;
DIX            DC.W          $000,$006,$015,$036,$025,$005,$004,$014&lt;br /&gt;
               DC.W          $07,$003,$014,$007,$027,$037,$027,$017&lt;br /&gt;
&lt;br /&gt;
ONZE           DC.W          $000,$016,$006,$015,$036,$025,$005,$004&lt;br /&gt;
               DC.W          $014,$007,$003,$014,$007,$027,$037,$027&lt;br /&gt;
&lt;br /&gt;
DOUZE          DC.W          $000,$017,$016,$006,$015,$036,$025,$005&lt;br /&gt;
               DC.W          $004,$014,$007,$003,$014,$007,$027,$037&lt;br /&gt;
&lt;br /&gt;
TREIZE         DC.W          $000,$027,$017,$016,$006,$015,$036,$025&lt;br /&gt;
               DC.W          $005,$004,$014,$007,$003,$014,$007,$027&lt;br /&gt;
&lt;br /&gt;
QUATORZE       DC.W          $000,$037,$027,$017,$016,$006,$015,$036&lt;br /&gt;
               DC.W          $025,$005,$004,$014,$007,$003,$014,$007&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Le vecteur qui pointe sur les adresses des diffâ€šrentes palettes&lt;br /&gt;
&lt;br /&gt;
VECTEUR        DC.L          NOUVEAU,UN,DEUX,TROIS,QUATRE,CINQ,SIX,SEPT&lt;br /&gt;
               DC.L          HUIT,NEUF,DIX,ONZE,DOUZE,TREIZE,QUATORZE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; L'ancienne palette&lt;br /&gt;
&lt;br /&gt;
ANCIEN         DC.W          $777,$500,$070,$000,$000,$000,$000,$000&lt;br /&gt;
               DC.W          $000,$000,$000,$000,$000,$000,$000,$000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MESSAGE        DC.B          27,'E',174,' Image brouillâ€še ',175,':avec la'&lt;br /&gt;
&lt;br /&gt;
               DC.B          ' fonction',13,10,'$A001 et RANDOM pour les'&lt;br /&gt;
               DC.B          'couleurs ...',13,10,13,10,'(Une touche pour'&lt;br /&gt;
               DC.B          'Quitter)',0&lt;br /&gt;
&lt;br /&gt;
MOYENNE        DC.B        27,'E','ATTENTION, Ce programme ne marche '&lt;br /&gt;
               DC.B        'qu',39,'en BASSE RESOLUTION !',13,10,'Il faut '&lt;br /&gt;
               DC.B        'changer la râ€šsolution grace au BUREAU GEM...',7,0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
               BSS&lt;br /&gt;
&lt;br /&gt;
               INCLUDE       &amp;quot;TABLEAU.L&amp;quot;     ;le tableau du VDI&lt;br /&gt;
&lt;br /&gt;
               END&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) Exercice nrÂ°6:&lt;br /&gt;
   --------------&lt;br /&gt;
   VoilÃ  le corrigâ€š du programme qui affiche les losanges sans puis avec&lt;br /&gt;
   le CLIPPING...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
               TEXT&lt;br /&gt;
&lt;br /&gt;
               INCLUDE       &amp;quot;LINEQU.L&amp;quot;      ;Les EQUs&lt;br /&gt;
               INCLUDE       &amp;quot;INIT_TOS.L&amp;quot;    ;Setblock&lt;br /&gt;
               INCLUDE       &amp;quot;MACROS.L&amp;quot;      ;Les MACROS&lt;br /&gt;
&lt;br /&gt;
               SETBLOCK                      ;initialisation&lt;br /&gt;
&lt;br /&gt;
               DC.W          $A000           ;adresse du T.I. dans a0&lt;br /&gt;
               movea.l       a0,a5           ;je la sauve au cas oâ€” ...&lt;br /&gt;
&lt;br /&gt;
; On pose les adresses des tableaux du VDI dans le T.I.&lt;br /&gt;
&lt;br /&gt;
               move.l        #CONTROL,ticontrol(a0)&lt;br /&gt;
               move.l        #INTIN,tiintin(a0)&lt;br /&gt;
               move.l        #PTSIN,tiptsin(a0)&lt;br /&gt;
               move.l        #INTOUT,tiintout(a0)&lt;br /&gt;
               move.l        #PTSOUT,tiptsout(a0)&lt;br /&gt;
&lt;br /&gt;
               PRINTLINE     UN              ;texte&lt;br /&gt;
               WAIT                          ;attente&lt;br /&gt;
               DC.W          $A00A           ;HIDE MOUSE&lt;br /&gt;
               CCONOUT       #27             ;ESC&lt;br /&gt;
               CCONOUT       #'E'            ;+'E' = effacer l'â€šcran&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
               move          #0,_fg_bp_1(a5)&lt;br /&gt;
               move          #1,_fg_bp_2(a5)      ;couleur %10=2&lt;br /&gt;
&lt;br /&gt;
               move          #0,_wrt_mode(a5)     ;Write mode AND&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
               move          #1,_patmsk(a5)       ;2 donnâ€šes pour le PAT&lt;br /&gt;
               move.l        #PAT,_patptr(a5)     ;en 'PAT'&lt;br /&gt;
     &lt;br /&gt;
               move          #4,sptsin            ;4 sommets (losange)&lt;br /&gt;
&lt;br /&gt;
               move          #0,_clip(a5)         ;PAS de CLIPPING&lt;br /&gt;
               jsr           TRACER               ;et on trace le losange&lt;br /&gt;
&lt;br /&gt;
               &lt;br /&gt;
               WAIT                               ;attente&lt;br /&gt;
               PRINTLINE     DEUX                 ;texte&lt;br /&gt;
               WAIT                               ;attente&lt;br /&gt;
               CCONOUT       #27                  ;ESC&lt;br /&gt;
               CCONOUT       #'E'                 ;+'E' = effacer l'â€šcran&lt;br /&gt;
&lt;br /&gt;
               move          #1,_clip(a5)         ;AVEC CLIPPING&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Les coordonnâ€šes du CADRE DU CLIPPING sont: (0,0)-(320,190)&lt;br /&gt;
&lt;br /&gt;
               move          #0,_xmn_clip(a5)     &lt;br /&gt;
               move          #0,_ymn_clip(a5)&lt;br /&gt;
               move          #320,_xmx_clip(a5)&lt;br /&gt;
               move          #190,_ymx_clip(a5)&lt;br /&gt;
&lt;br /&gt;
               jsr           TRACER               ;et on trace le losange&lt;br /&gt;
&lt;br /&gt;
               WAIT                               ;attente&lt;br /&gt;
               TERM                               ;fin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Ici on trace le losange avec FILLED POLYGONE:&lt;br /&gt;
&lt;br /&gt;
; Coordonnâ€šes du POLYGONE dans PTSIN: (320,10)-(570,100)-(320,190)-&lt;br /&gt;
; (70,100) et on boucle avec (320,10)&lt;br /&gt;
&lt;br /&gt;
TRACER         move          #320,ptsin&lt;br /&gt;
               move          #10,ptsin+2&lt;br /&gt;
               move          #570,ptsin+4&lt;br /&gt;
               move          #100,ptsin+6&lt;br /&gt;
               move          #320,ptsin+8&lt;br /&gt;
               move          #190,ptsin+10&lt;br /&gt;
               move          #70,ptsin+12&lt;br /&gt;
               move          #100,ptsin+14&lt;br /&gt;
               move          #320,ptsin+16&lt;br /&gt;
               move          #10,ptsin+18&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Ici on apelle FILLED POLYGONE pour chaque ligne HORIZONTALE du losange:&lt;br /&gt;
  de Y=10 Ã  Y=190 (car notre losange n'est dâ€šfinit qu'entre ces lignes)&lt;br /&gt;
&lt;br /&gt;
               move          #9,d6      ;9 dans d6&lt;br /&gt;
&lt;br /&gt;
BOUCLE         add           #1,d6      ;on ajoute 1 Ã  d6     &lt;br /&gt;
               move          d6,_y1(a5) ;on pose d6 dans _y1&lt;br /&gt;
               DC.W          $A006      ;FILLED POLYGONE&lt;br /&gt;
               cmpi          #190,d6    ;A-t-on d6=190 ?&lt;br /&gt;
               bne           BOUCLE     ;Si NON alors recommence en BOUCLE&lt;br /&gt;
&lt;br /&gt;
               rts                      ;RETOUR du SOUS-PROGRAMME&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
               DATA&lt;br /&gt;
&lt;br /&gt;
PAT            DC.W          %1111111111111110    ;le PAT (Nombre PAIRE&lt;br /&gt;
               DC.W          %0000000000000000    ;de MOTS)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
UN             DC.B          27,'E','Je trace un POLYGONE avec $A006 :',0&lt;br /&gt;
DEUX           DC.B          27,'E','Je trace le mÃ¨me POLYGONE en utilisant '&lt;br /&gt;
               DC.B          'le CLIPPING',0&lt;br /&gt;
&lt;br /&gt;
               BSS&lt;br /&gt;
&lt;br /&gt;
               INCLUDE       &amp;quot;TABLEAU.L&amp;quot;     ;Le tableau du VDI&lt;br /&gt;
&lt;br /&gt;
               END&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                         &lt;br /&gt;
                              ------------------&lt;br /&gt;
&lt;br /&gt;
 VoilÃ  pour la correction des exercices sur les LineAs...&lt;br /&gt;
  &lt;br /&gt;
 Les listings de ces 6 programmes ainsi que les programmes exâ€šcutables&lt;br /&gt;
 se trouvent bien entendu sur cette disquette dans les fichiers:&lt;br /&gt;
&lt;br /&gt;
      1)   TRANSMOU.L   &amp;amp;  TRANSMOU.PRG&lt;br /&gt;
      2)   CADRE   .L   &amp;amp;  CADRE   .PRG&lt;br /&gt;
      3)   RECTANGL.L   &amp;amp;  RECTANGL.PRG&lt;br /&gt;
      4)   SPRITE  .L   &amp;amp;  SPRITE  .PRG&lt;br /&gt;
      5)   POINT   .L   &amp;amp;  POINT   .PRG&lt;br /&gt;
      6)   POLYGONE.L   &amp;amp;  POLYGONE.PRG&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
  PIECHOCKI  Laurent&lt;br /&gt;
  8,Impasse Bellevue               Suite dans le fichier: INTERRUP.DOC&lt;br /&gt;
  57980  TENTELING                                        ------------  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Back to [[ASM_Tutorial]]&lt;/div&gt;</summary>
		<author><name>&gt;Zorro 2</name></author>
	</entry>
</feed>