<?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_4.DOC</id>
	<title>Pl2 CORRIG 4.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_4.DOC"/>
	<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=Pl2_CORRIG_4.DOC&amp;action=history"/>
	<updated>2026-07-26T23:50:07Z</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_4.DOC&amp;diff=16113&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_4.DOC&amp;diff=16113&amp;oldid=prev"/>
		<updated>2011-10-12T15:18:37Z</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-l354&quot;&gt;Line 354:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 354:&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_4.DOC&amp;diff=16112&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_4.DOC&amp;diff=16112&amp;oldid=prev"/>
		<updated>2009-05-02T20:46:43Z</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:46, 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-l354&quot;&gt;Line 354:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 354:&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_4.DOC&amp;diff=16111&amp;oldid=prev</id>
		<title>&gt;Zorro 2 at 15:07, 9 October 2006</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=Pl2_CORRIG_4.DOC&amp;diff=16111&amp;oldid=prev"/>
		<updated>2006-10-09T15:07:28Z</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;
                              CORRECTIONS des &lt;br /&gt;
&lt;br /&gt;
                              EXERCICES  NRÂ°4&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;
  a) Si TACR vaut %100 et que le registre de donnâ€še vaut 42, quelle sera&lt;br /&gt;
     la frâ€šquence d'appel d'un programme sur ce TIMER ?&lt;br /&gt;
    &lt;br /&gt;
     Avec TACR = %100, on a un prâ€šdiviseur de 50, le registre de donnâ€še&lt;br /&gt;
     vaut 42, on a donc: &lt;br /&gt;
&lt;br /&gt;
     frâ€šquence=245760/50/42= environ 117 appels par seconde (Delay Mode)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     Le programme sera-t-il installâ€š sur le TIMER A ou sur le TIMER B ?&lt;br /&gt;
&lt;br /&gt;
     TACR gÃ¨re le mode de fonctionnement du TIMER A. (l'avez vous dâ€šjÃ &lt;br /&gt;
     oubliâ€š ?) &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  b) Comment faire pour stopper un programme sous interruption installâ€š&lt;br /&gt;
     sous le TIMER A ? : &lt;br /&gt;
&lt;br /&gt;
     Il suffit de mettre Ã  0 les 4 premiers bits du registre TACR&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
  c) On veut installer un programme sous interruption qui doit s'exâ€šcuter&lt;br /&gt;
     Ã  peu prÃ¨s 245 fois par seconde, donnez une valeur possible des regi-&lt;br /&gt;
     stres de controle et de donnâ€še pour obtenir cet effet.&lt;br /&gt;
&lt;br /&gt;
     Si le registre de controle vaut %10, on a un prâ€šdiviseur de 10 et&lt;br /&gt;
     si le registre de donnâ€še vaut aussi 10, on a:&lt;br /&gt;
&lt;br /&gt;
     frâ€šquence=245760/10/10=245,76 appels par seconde (Delay Mode)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  d) Peut-on installer plusieurs programmes sous interruption dans un&lt;br /&gt;
     mÃ¨me TIMER ?&lt;br /&gt;
     &lt;br /&gt;
     Bien sur que NON !&lt;br /&gt;
     Il suffit de regarder comment on fait pour installer une routine&lt;br /&gt;
     sur un TIMER, la premiÃ¨re chose qu'on fait,c'est mettre tous les &lt;br /&gt;
     registres du TIMER conscernâ€š Ã  0 pour dâ€šbrancher la routine qui&lt;br /&gt;
     s'y trouvait dâ€šjÃ  ....&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
  e) Un programme sous interruption doit obligatoirement s'exâ€šcuter en&lt;br /&gt;
     MODE SUPERVISEUR.&lt;br /&gt;
     Trouvez une raison Ã  cela ... &lt;br /&gt;
 &lt;br /&gt;
     Une raison toute simple et qu'Ã  la fin du programme (Avant le RTE),&lt;br /&gt;
     on efface le bit conscernâ€š du registre ISR.&lt;br /&gt;
     Or toute modification des registres du MFP DOIT se faire en MODE&lt;br /&gt;
     SUPERVISEUR...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Exercice nrÂ°2:&lt;br /&gt;
   -------------- &lt;br /&gt;
   VoilÃ  les macros des TIMERS A et B:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TIMERA    MACRO     $\1,$\2,$\3    ;MACRO Ã  3 paramÃ¨tres         &lt;br /&gt;
&lt;br /&gt;
; Mise Ã  0 des diffâ€šrents vecteurs bit pour le TIMER A&lt;br /&gt;
&lt;br /&gt;
          and.b     #%11011111,$FFFA13  ;IMRA&lt;br /&gt;
          and.b     #%11011111,$FFFA0F  ;ISRA&lt;br /&gt;
          and.b     #%11011111,$FFFA0B  ;IPRA&lt;br /&gt;
          and.b     #%11011111,$FFFA07  ;IERA&lt;br /&gt;
&lt;br /&gt;
; XBTIMER et installation de notre routine&lt;br /&gt;
&lt;br /&gt;
          pea       \1                  ;\1=LABEL du dâ€šbut de la routine&lt;br /&gt;
                                        ;   Ã  mettre sous interruption&lt;br /&gt;
          move.w    #\2,-(sp)           ;\2=registre de controle&lt;br /&gt;
          move.w    #\3,-(sp)           ;\3=registre de donnâ€še&lt;br /&gt;
          move.w    #0,-(sp)            ;0 =TIMER A&lt;br /&gt;
          move.w    #$1F,-(sp)          ;XBTIMER           &lt;br /&gt;
          trap      #14                 ;XBIOS&lt;br /&gt;
          adda.l    #12,sp              ;on repositionne SP&lt;br /&gt;
&lt;br /&gt;
; Mise Ã  1 des diffâ€šrents vecteurs bits pour le TIMER A&lt;br /&gt;
&lt;br /&gt;
          or.b      #%100000,$FFFA07    ;IERA&lt;br /&gt;
          or.b      #%100000,$FFFA13    ;IMRA&lt;br /&gt;
          &lt;br /&gt;
          ENDM                          ;Fin de la macro&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
TIMER B   MACRO     $\1,$\2,$\3         ;MACRO Ã  3 paramÃ¨tres&lt;br /&gt;
&lt;br /&gt;
; Mise Ã  0 des diffâ€šrents vecteurs bits pour le TIMER B&lt;br /&gt;
&lt;br /&gt;
          and.b     #%11111110,$FFFA13  ;IMRB&lt;br /&gt;
          and.b     #%11111110,$FFFA0F  ;ISRB&lt;br /&gt;
          and.b     #%11111110,$FFFA0B  ;IPRB&lt;br /&gt;
          and.b     #%11111110,$FFFA07  ;IERA&lt;br /&gt;
&lt;br /&gt;
; XBTIMER et installation de la routine sur le TIMER B&lt;br /&gt;
&lt;br /&gt;
          pea       \1                  ;\1=LABEL du dâ€šbut de la routine&lt;br /&gt;
                                        ;   Ã  mettre sous interruption&lt;br /&gt;
          move.w    #\2,-(sp)           ;\2=registre de controle&lt;br /&gt;
          move.w    #\3,-(sp)           ;\3=registre de donnâ€še&lt;br /&gt;
          move.w    #1,-(sp)            ;1 = TIMER B&lt;br /&gt;
          move.w    #$1F,-(sp)          ;XBTIMER      &lt;br /&gt;
          trap      #14                 ;XBIOS&lt;br /&gt;
          adda.l    #12,sp              ;on repositionne SP&lt;br /&gt;
&lt;br /&gt;
; Mise Ã  1 des diffâ€šrents vecteurs bit&lt;br /&gt;
&lt;br /&gt;
          or.b      #%1,$FFFA07         ;IERB&lt;br /&gt;
          or.b      #%1,$FFFA13         ;IMRB&lt;br /&gt;
          &lt;br /&gt;
          ENDM                          ;FIN de la MACRO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Exercice nrÂ°3:&lt;br /&gt;
   --------------&lt;br /&gt;
   Deux solutions existent pour stopper les TIMERS A et B.&lt;br /&gt;
&lt;br /&gt;
   La premiÃ¨re consiste Ã  mettre les 4 premiers bits des registres TACR&lt;br /&gt;
   (Pour le TIMER A) ou TBCR (Pour le TIMER B) Ã  0.&lt;br /&gt;
&lt;br /&gt;
   Il suffirait donc d'â€šcrire:&lt;br /&gt;
&lt;br /&gt;
     BCLR  #0,$FFFA19    ;bit 0 du registre TACR&lt;br /&gt;
     BLCR  #1,$FFFA19    ;bit 1&lt;br /&gt;
     BCLR  #2,$FFFA19    ;bit 2&lt;br /&gt;
     BCLR  #3,$FFFA19    ;bit 3&lt;br /&gt;
&lt;br /&gt;
   Pour le TIMER A (En MODE SUPERVISEUR !)   &lt;br /&gt;
&lt;br /&gt;
   Ou &lt;br /&gt;
&lt;br /&gt;
     BCLR  #0,$FFFA1B    ;bit 0 du registre TBCR&lt;br /&gt;
     BLCR  #1,$FFFA1B    ;bit 1&lt;br /&gt;
     BCLR  #2,$FFFA1B    ;bit 2&lt;br /&gt;
     BCLR  #3,$FFFA1B    ;bit 3&lt;br /&gt;
&lt;br /&gt;
   Pour le TIMER B (En MODE SUPERVISEUR !)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   Il existe aussi une fonction de l'XBIOS qui permet de bloquer une&lt;br /&gt;
   interruption du MFP 68901: C'est le fonction JDISINT de code 26.&lt;br /&gt;
&lt;br /&gt;
   Il suffit de passer l'IPL du MFP qui doit Ã¨tre arrÃ¨tâ€š. &lt;br /&gt;
   C'est avec cette fonction qu'on crâ€šera nos MACROS:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
   Pour le TIMER A (De niveau 13/6 au sein du MFP), on â€šcrira:&lt;br /&gt;
    &lt;br /&gt;
STOPTIMEA   MACRO&lt;br /&gt;
            move.w    #13,-(sp)    ;TIMER A ( IPL 13/6)&lt;br /&gt;
            move.w    #26,-(sp)    ;JDISINT&lt;br /&gt;
            trap      #14          ;XBIOS&lt;br /&gt;
            addq.l    #4,sp        ;on repositionne SP&lt;br /&gt;
            ENDM                   &lt;br /&gt;
 &lt;br /&gt;
   Pour le TIMER B (De niveau 8/6 au sein du MFP), on â€šcrira:&lt;br /&gt;
 &lt;br /&gt;
STOPTIMEB   MACRO&lt;br /&gt;
            move.w    #8,-(sp)     ;TIMER B ( IPL 8/6 )     &lt;br /&gt;
            move.w    #26,-(sp)    ;JDISINT&lt;br /&gt;
            trap      #14          ;XBIOS&lt;br /&gt;
            addq.l    #4,sp        ;on repositionne SP&lt;br /&gt;
            ENDM&lt;br /&gt;
          &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 fait varier la palette des couleurs&lt;br /&gt;
   sous interruption.&lt;br /&gt;
   Il n'y avait aucune difficultâ€š. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
               TEXT&lt;br /&gt;
&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;
               INCLUDE       &amp;quot;TIMERS.L&amp;quot;      ;Le fichier des MACROS&lt;br /&gt;
                                             ;pour les TIMERS&lt;br /&gt;
&lt;br /&gt;
               SETBLOCK            ;initialisation&lt;br /&gt;
&lt;br /&gt;
               SUPER               ;MODE SUPERVISEUR&lt;br /&gt;
&lt;br /&gt;
               PRINTLINE     CA    ;texte&lt;br /&gt;
               WAIT                ;attente&lt;br /&gt;
&lt;br /&gt;
               TIMERA        ROUTINE,200,%111     ;On installe la routine&lt;br /&gt;
                                                  ;sur le TIMER A avec le&lt;br /&gt;
                                                  ;registre de donnâ€še=200&lt;br /&gt;
                                                  ;et registre de controle&lt;br /&gt;
                                                  ;=%111&lt;br /&gt;
&lt;br /&gt;
               USER                ;MODE UTILISATEUR pour&lt;br /&gt;
          &lt;br /&gt;
               KEEP          2000  ;revenir au DESKTOP avec le programme &lt;br /&gt;
&lt;br /&gt;
; La routine sous interruption qui change les couleurs:&lt;br /&gt;
&lt;br /&gt;
ROUTINE        cmpi          #30,TESTE  ;A-t-on 30 en 'TESTE' ?&lt;br /&gt;
               bgt           DEUX       ;Si c'est plus grand, va en 'DEUX'&lt;br /&gt;
               move.l        #PAL1,$45A ;Adresse de la nouvelle palette en&lt;br /&gt;
                                        ;'colorptr'&lt;br /&gt;
               add           #1,TESTE   ;Sinon ajoute 1 en 'TESTE' &lt;br /&gt;
               bclr          #5,$FFFA0F ;Clear ISRA (bit 5=TIMER A)&lt;br /&gt;
               RTE                      ;RETURN FROM EXCEPTION&lt;br /&gt;
&lt;br /&gt;
DEUX           move.l        #PAL2,$45A ;Adresse de la nouvelle palette en&lt;br /&gt;
                                        ;'colorptr'&lt;br /&gt;
               add           #1,TESTE   ;Ajoute 1 en 'TESTE'&lt;br /&gt;
               cmpi          #60,TESTE  ;A-t-on 60 en 'TESTE' ?&lt;br /&gt;
               bne           NON        ;Si NON, va en 'NON'&lt;br /&gt;
               move          #0,TESTE   ;Met 0 en 'TESTE'&lt;br /&gt;
NON            bclr          #5,$FFFA0F ;Clear ISRA (bit 5=TIMER A)&lt;br /&gt;
               RTE                      ;RETURN FROM EXCEPTION&lt;br /&gt;
&lt;br /&gt;
               DATA&lt;br /&gt;
&lt;br /&gt;
; La palette nrÂ° 1&lt;br /&gt;
&lt;br /&gt;
PAL1           DC.W          $777,$700,$070,$000,$000,$777,$777,$777&lt;br /&gt;
               DC.W          $777,$777,$777,$777,$777,$777,$777,$777&lt;br /&gt;
&lt;br /&gt;
; La palette nrÂ° 2&lt;br /&gt;
&lt;br /&gt;
PAL2           DC.W          $777,$700,$007,$000,$000,$777,$777,$777&lt;br /&gt;
               DC.W          $777,$777,$777,$777,$777,$777,$777,$777&lt;br /&gt;
&lt;br /&gt;
CA             DC.B          27,'E','Routine sous interruption (TIMER A )'&lt;br /&gt;
               DC.B          ' qui change la',13,10,'couleur nrÂ°3 de la'&lt;br /&gt;
               DC.B          ' palette (Variable systÃ¨me $45A):',0&lt;br /&gt;
&lt;br /&gt;
               BSS&lt;br /&gt;
&lt;br /&gt;
               DS.B          500&lt;br /&gt;
PILE           DS.B          1     ;Pour SETBLOCK&lt;br /&gt;
SAUV_SP        DS.L          1     ;Pour SUPER et USER     &lt;br /&gt;
TESTE          DS.W          1     ;Pour la routine sous interruption&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;
   LÃ  aussi, aucune difficultâ€š majeure...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
               TEXT&lt;br /&gt;
&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;
               INCLUDE       &amp;quot;TIMERS.L&amp;quot;      ;Les MACROS des TIMERS&lt;br /&gt;
               INCLUDE       &amp;quot;MACROS_2.L&amp;quot;    ;La MACRO HEXA&lt;br /&gt;
&lt;br /&gt;
               SETBLOCK                 ;initialisation                   &lt;br /&gt;
&lt;br /&gt;
               SUPER                    ;MODE SUPERVISEUR&lt;br /&gt;
&lt;br /&gt;
               PRINTLINE     LA         ;texte&lt;br /&gt;
               CCONOUT       #13        ;13 +&lt;br /&gt;
               CCONOUT       #10        ;10 = retour Ã  la ligne en&lt;br /&gt;
                                        ;colonne 1&lt;br /&gt;
               WAIT                     ;attente&lt;br /&gt;
&lt;br /&gt;
               TIMERA        PRG,50,%111     ;On installe notre routine&lt;br /&gt;
                                             ;sur le TIMER A avec le re-&lt;br /&gt;
                                             ;gistre de donnâ€še = 50 et le&lt;br /&gt;
                                             ;registre de controle=%111&lt;br /&gt;
&lt;br /&gt;
; La boucle qui affiche les valeurs de la variable&lt;br /&gt;
&lt;br /&gt;
BOUCLE         HEXA          VAL     ;Affiche le L-M de 'VAL' en HEXA&lt;br /&gt;
               CCONOUT       #13     ;13 +&lt;br /&gt;
               CCONOUT       #10     ;10 = retour Ã  la ligne en colonne 1&lt;br /&gt;
               WAIT                  ;attente&lt;br /&gt;
               cmpi.b        #'Q',d0 ;Touche = Q ?   &lt;br /&gt;
               beq           RETOUR  ;Si OUI, va en 'RETOUR'   &lt;br /&gt;
               cmpi.b        #'q',d0 ;Touche = q ?   &lt;br /&gt;
               beq           RETOUR  ;Si OUI, va en 'RETOUR'   &lt;br /&gt;
               jmp           BOUCLE  et on recommence en 'BOUCLE'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; La routine sous interruption qui se contente d'incrâ€šmenter le L-M &lt;br /&gt;
; en 'VAL'&lt;br /&gt;
&lt;br /&gt;
PRG            add.l         #1,VAL          ;Ajoute 1 au L-M en 'VAL'&lt;br /&gt;
               bclr          #5,$FFFA0F      ;CLear ISRA (bit 5=TIMER A)&lt;br /&gt;
               RTE                           ;RETURN FROM EXCEPTION&lt;br /&gt;
&lt;br /&gt;
RETOUR         USER           ;MODE UTILISATEUR&lt;br /&gt;
               STOPTIMEA      ;on stoppe le TIMER A&lt;br /&gt;
               TERM           ;et FIN !&lt;br /&gt;
&lt;br /&gt;
               DATA&lt;br /&gt;
&lt;br /&gt;
LA             DC.B          27,'E','Routine sous interruption (TIMER A )'&lt;br /&gt;
               DC.B          ' qui incrâ€šmente le',13,10,'contenu de la va'&lt;br /&gt;
               DC.B          'riable affichâ€še ([Q] pour QUITTER) ...',0&lt;br /&gt;
&lt;br /&gt;
               BSS&lt;br /&gt;
&lt;br /&gt;
               DS.B          500&lt;br /&gt;
PILE           DS.B          1     ;Pour SETBLOCK&lt;br /&gt;
SAUV_SP        DS.L          1     ;Pour SUPER et USER&lt;br /&gt;
VAL            DS.L          1     ;La variable Ã  afficher&lt;br /&gt;
&lt;br /&gt;
               END&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                           --------------------&lt;br /&gt;
     &lt;br /&gt;
  VoilÃ , les listings et les programmes exâ€šcutables de ces exercices &lt;br /&gt;
  se trouvent dans les fichiers:&lt;br /&gt;
&lt;br /&gt;
  1)  TIMERS .L    pour les MACROS    TIMERA,TIMERB,STOPTIMEA,STOPTIMEB&lt;br /&gt;
&lt;br /&gt;
  2)  PALETTE.L    pour le programme de changement de la palette sous&lt;br /&gt;
                   interruption.&lt;br /&gt;
  et  PALETTE.PRG&lt;br /&gt;
    &lt;br /&gt;
  3)  AFFICHE.L    pour le programme d'affichage du L-M incrâ€šmentâ€š sous&lt;br /&gt;
                   interruption.&lt;br /&gt;
&lt;br /&gt;
  et  AFFICHE.PRG&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &lt;br /&gt;
  PIECHOCKI Laurent&lt;br /&gt;
  8, Impasse Bellevue            Suite dans le fichier:ANNEXE.DOC&lt;br /&gt;
  57980  TENTELING                                     ----------   &lt;br /&gt;
&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>