COURS202.TXT/fr: Difference between revisions

From Atari Wiki
Jump to navigation Jump to search
(Created page with "<pre> ****************************************************************** * * * COURS D'ASSEM...")
 
No edit summary
Line 4: Line 4:
 
* COURS D'ASSEMBLEUR 68000 SUR ATARI ST *
 
* COURS D'ASSEMBLEUR 68000 SUR ATARI ST *
 
* *
 
* *
−
* par Le F
+
* par Le F�roce Lapin (from 44E) *
 
* *
 
* *
−
* Seconde s
+
* Seconde s�rie *
 
* *
 
* *
−
* Cours num
+
* Cours num�ro 2 *
 
******************************************************************
 
******************************************************************
   
 
Nous voici donc repartis pour de nouvelles aventures! Ce second
 
Nous voici donc repartis pour de nouvelles aventures! Ce second
−
cours aura pour sujet les TRAP et plus pr
+
cours aura pour sujet les TRAP et plus pr�cis�ment comment les
−
programmer soit m
+
programmer soit m�me.Nous avions vu, dans la premi�re s�rie, que
  +
les traps �taient un excellent moyen d'acc�der au syst�me d'ex-
−
les traps ‚taient un excellent moyen d'acc‚der au systŠme d'ex-
 
−
ploitation, et plus g
+
ploitation, et plus g�n�ralement d'acc�der � des espaces prot�g�s
−
(uniquement accessible en mode Superviseur). Nous avions
+
(uniquement accessible en mode Superviseur). Nous avions �gale-
  +
ment �tudi� le passage des param�tres par la pile, ce qui nous
−
ment ‚tudi‚ le passage des paramŠtres par la pile, ce qui nous
 
−
avait servi pour r
+
avait servi pour r�aliser des subroutines avec param�tres.
   
−
Le premier exemple va consister
+
Le premier exemple va consister � changer la couleur du fond de
  +
l'�cran, avec une routine fabrication maison, qui sera appel�e
−
l'‚cran, avec une routine fabrication maison, qui sera appel‚e
 
 
par un trap.
 
par un trap.
   
 
D'abord la routine:
 
D'abord la routine:
  +
Etant donn� qu'un trap est toujours ex�cut� en Superviseur, nous
−
Etant donn‚ qu'un trap est toujours ex‚cut‚ en Superviseur, nous
 
  +
n'h�sitons pas � utiliser les adresses syst�me. La palette de
−
n'h‚sitons pas … utiliser les adresses systŠme. La palette de
 
−
couleurs du ST est situ
+
couleurs du ST est situ�e � l'adresse $FF8240. Chaque couleur
  +
�tant cod�e sur un mot, la couleur 0 est en $FF8240, la couleur 1
−
‚tant cod‚e sur un mot, la couleur 0 est en $FF8240, la couleur 1
 
 
en $FF8242 etc...
 
en $FF8242 etc...
   
Line 40: Line 40:
 
RTE
 
RTE
   
  +
Une �tiquette permet de les rep�rer (ROUGE et VERT). Les couleurs
−
Une ‚tiquette permet de les rep‚rer (ROUGE et VERT). Les couleurs
 
  +
�tant cod�es en RVB (rouge/vert/bleu. On trouve aussi RGB qui est
−
‚tant cod‚es en RVB (rouge/vert/bleu. On trouve aussi RGB qui est
 
 
la traduction anglaise: red/green/blue) et les niveaux varient de
 
la traduction anglaise: red/green/blue) et les niveaux varient de
  +
0 � 7. Nous remarquons que les routines ne se terminent pas par
−
0 … 7. Nous remarquons que les routines ne se terminent pas par
 
 
RTS mais par RTE. Cela signifie Return from exception. Il s'agit
 
RTS mais par RTE. Cela signifie Return from exception. Il s'agit
 
bien en effet d'un retour d'exception et non pas du retour d'une
 
bien en effet d'un retour d'exception et non pas du retour d'une
Line 49: Line 49:
   
 
Petit rappel: RTE se lit "return from exception". Je vous rappelle
 
Petit rappel: RTE se lit "return from exception". Je vous rappelle
−
qu'il faut TOUT lire en Anglais et pas se contenter de lire l'abr
+
qu'il faut TOUT lire en Anglais et pas se contenter de lire l'abr�
−
viation dont la signification est souvent assez
+
viation dont la signification est souvent assez �vasive.
   
 
Voici le programme 'en entier'.
 
Voici le programme 'en entier'.
   
−
MOVE.L #MESSAGE,-(SP) toujours sympa de se pr
+
MOVE.L #MESSAGE,-(SP) toujours sympa de se pr�senter
 
MOVE.W #9,-(SP)
 
MOVE.W #9,-(SP)
 
TRAP #1 appel GEMDOS
 
TRAP #1 appel GEMDOS
Line 61: Line 61:
 
* Fixer les vecteur d'exception
 
* Fixer les vecteur d'exception
 
MOVE.L #ROUGE,-(SP) adresse 'routine'
 
MOVE.L #ROUGE,-(SP) adresse 'routine'
−
MOVE.W #35,-(SP) num
+
MOVE.W #35,-(SP) num�ro de vecteur du trap #3
 
MOVE.W #5,-(SP) fonction Setexec()
 
MOVE.W #5,-(SP) fonction Setexec()
 
TRAP #13 du bios
 
TRAP #13 du bios
Line 67: Line 67:
   
 
MOVE.L #VERT,-(SP) adresse 'routine'
 
MOVE.L #VERT,-(SP) adresse 'routine'
−
MOVE.W #36,-(SP) num
+
MOVE.W #36,-(SP) num�ro de vecteur du trap #4
 
MOVE.W #5,-(SP) fonction Setexec()
 
MOVE.W #5,-(SP) fonction Setexec()
 
TRAP #13 du bios
 
TRAP #13 du bios
Line 101: Line 101:
   
 
Facile n'est ce pas ? Et bien maintenant que vous savez mettre
 
Facile n'est ce pas ? Et bien maintenant que vous savez mettre
−
vos propres routines en TRAP et que vous savez
+
vos propres routines en TRAP et que vous savez �galement passer
  +
des param�tres � une sub routine, il ne vous reste plus qu'�
−
des paramŠtres … une sub routine, il ne vous reste plus qu'…
 
  +
faire la m�me chose. J'estime que vous �tes assez grand pour le
−
faire la mˆme chose. J'estime que vous ˆtes assez grand pour le
 
 
faire tout seul et c'est pour cette raison que nous n'allons pas
 
faire tout seul et c'est pour cette raison que nous n'allons pas
−
le faire ici. A vous de travailler! Une seule pr
+
le faire ici. A vous de travailler! Une seule pr�caution �
 
prendre: Une subroutine n'a besoin que de l'adresse de retour et
 
prendre: Une subroutine n'a besoin que de l'adresse de retour et
 
donc n'empile que cela. Un TRAP par contre, du fait qu'il passe
 
donc n'empile que cela. Un TRAP par contre, du fait qu'il passe
−
en Superviseur, sauve
+
en Superviseur, sauve �galement le Status Register. Il ne faut
 
donc pas oublier de le prendre en compte pour calculer le saut
 
donc pas oublier de le prendre en compte pour calculer le saut
−
qui vous permettra de r
+
qui vous permettra de r�cup�rer vos param�tres pass�s sur la
−
pile. L'adresse de retour est bien s
+
pile. L'adresse de retour est bien s�r cod�e sur 4 bytes et le
 
Status Register sur 2. Il y a donc empilage de 6 bytes par le
 
Status Register sur 2. Il y a donc empilage de 6 bytes par le
−
TRAP qui les d
+
TRAP qui les d�pile automatiquement au retour afin de retrouver
  +
d'o� il vient et afin �galement de remettre comme avant le Status-
−
d'o— il vient et afin ‚galement de remettre comme avant le Status-
 
 
Register. Il ne faudra pas non plus oublier de corriger la pile
 
Register. Il ne faudra pas non plus oublier de corriger la pile
 
au retour.
 
au retour.
   
 
Comme d'habitude, prenez votre temps et faites de nombreux petits
 
Comme d'habitude, prenez votre temps et faites de nombreux petits
−
essais afin de parfaitement comprendre la syst
+
essais afin de parfaitement comprendre la syst�me.
  +
Regardez �galement attentivement la fonction du Bios qui nous a
−
Regardez ‚galement attentivement la fonction du Bios qui nous a
 
  +
servi � mettre en place nos deux routines. Si au lieu de lui
−
servi … mettre en place nos deux routines. Si au lieu de lui
 
 
fournir la nouvelle adresse pour le vecteur, nous lui passons -1,
 
fournir la nouvelle adresse pour le vecteur, nous lui passons -1,
 
cette fonction nous retourne, dans D0.L, l'adresse actuelle
 
cette fonction nous retourne, dans D0.L, l'adresse actuelle
−
correspondant
+
correspondant � ce vecteur. Rien ne nous emp�che donc de demander
  +
l'adresse utilis�e par le TRAP #1 (Gemdos), de transf�rer cette
−
l'adresse utilis‚e par le TRAP #1 (Gemdos), de transf‚rer cette
 
 
adresse dans le trap #0 (par exemple) et de mettre notre propre
 
adresse dans le trap #0 (par exemple) et de mettre notre propre
 
routine dans le TRAP #1. Cela peut aussi vous servir pour
 
routine dans le TRAP #1. Cela peut aussi vous servir pour
  +
d�tourner le TRAP. Par exemple pour g�n�rer automatiquement des
−
d‚tourner le TRAP. Par exemple pour g‚n‚rer automatiquement des
 
−
macros. Il est possible d'imaginer ainsi un programme r
+
macros. Il est possible d'imaginer ainsi un programme r�sident en
  +
m�moire, qui est plac� � la place du trap 13 (Bios). A chaque
−
m‚moire, qui est plac‚ … la place du trap 13 (Bios). A chaque
 
 
fois qu'il y a un appel au Bios, c'est donc notre routine qui est
 
fois qu'il y a un appel au Bios, c'est donc notre routine qui est
  +
d�clench�e. Etant donn� que les appels se font avec empilage
−
d‚clench‚e. Etant donn‚ que les appels se font avec empilage
 
  +
des param�tres, il est tout � fait possible de savoir quelle
−
des paramŠtres, il est tout … fait possible de savoir quelle
 
−
fonction du Bios on veut appeler. Il est alors possible de r
+
fonction du Bios on veut appeler. Il est alors possible de r�agir
  +
diff�remment pour certaines fonctions. Cela permet par exemple de
−
diff‚remment pour certaines fonctions. Cela permet par exemple de
 
 
tester des appuis sur Alternate+touches de fonction et dans ce
 
tester des appuis sur Alternate+touches de fonction et dans ce
−
cas, d'aller
+
cas, d'aller �crire des phrases dans le buffer clavier, ceci afin
−
de g
+
de g�n�rer des macros!
   
−
Note: Un trap ne peut faire appel
+
Note: Un trap ne peut faire appel � des traps plac�s 'au-dessous'
−
de lui. Ainsi, dans un trap #1, il est tout
+
de lui. Ainsi, dans un trap #1, il est tout � fait possible
 
d'appeler un trap #13 mais l'inverse n'est pas possible.
 
d'appeler un trap #13 mais l'inverse n'est pas possible.
   
−
Exemple curieux et int
+
Exemple curieux et int�ressant:
 
MOVE.W #"A",-(SP)
 
MOVE.W #"A",-(SP)
 
MOVE.W #2,-(SP)
 
MOVE.W #2,-(SP)
Line 153: Line 153:
 
TRAP #1
 
TRAP #1
   
−
Ce court programme ne doit pas poser de probl
+
Ce court programme ne doit pas poser de probl�me. Nous affichons A
 
puis nous quittons. Assemblez-le, puis passez sous MONST.
 
puis nous quittons. Assemblez-le, puis passez sous MONST.
−
Appuyez sur [Control] + P. Vous choisissez alors les pr
+
Appuyez sur [Control] + P. Vous choisissez alors les pr�f�rences
−
de MONST. Parmi celles-ci, il y a "follow traps", c'est-
+
de MONST. Parmi celles-ci, il y a "follow traps", c'est-�-dire
−
suivre les TRAPs qui, par d
+
suivre les TRAPs qui, par d�faut, est sur "NO". Tapez Y pour YES.
−
Une fois les pr
+
Une fois les pr�f�rences d�finies, faites avancer votre programme
  +
pas � pas avec control+Z. A la diff�rence des autres fois,
−
pas … pas avec control+Z. A la diff‚rence des autres fois,
 
 
lorsque vous arrivez sur le TRAP vous voyez ce qui se passe. Ne
 
lorsque vous arrivez sur le TRAP vous voyez ce qui se passe. Ne
  +
vous �tonnez pas, cela va �tre assez long car il se passe
−
vous ‚tonnez pas, cela va ˆtre assez long car il se passe
 
−
beaucoup de chose pour afficher un caract
+
beaucoup de chose pour afficher un caract�re � l'�cran. Le plus
  +
�tonnant va �tre l'appel au trap #13. Eh oui, pour afficher un
−
‚tonnant va ˆtre l'appel au trap #13. Eh oui, pour afficher un
 
  +
caract�re le GEMDOS fait appel au Bios!!!!!
−
caractŠre le GEMDOS fait appel au Bios!!!!!
 
   
−
Une autre exp
+
Une autre exp�rience tout aussi int�ressante:
   
 
MOVE.W #"A",-(SP)
 
MOVE.W #"A",-(SP)
Line 179: Line 179:
 
Affichage de A mais cette fois avec la fonction Bconout() du
 
Affichage de A mais cette fois avec la fonction Bconout() du
 
Bios. Assemblez puis passez sous MONST avec un suivi des traps.
 
Bios. Assemblez puis passez sous MONST avec un suivi des traps.
−
Lorsque vous arrivez dans le Bios (donc apr
+
Lorsque vous arrivez dans le Bios (donc apr�s le passage sur
−
l'instruction TRAP #13), faites avancer pas
+
l'instruction TRAP #13), faites avancer pas � pas le programme
 
mais de temps en temps taper sur la lettre V. Cela vous permet de
 
mais de temps en temps taper sur la lettre V. Cela vous permet de
  +
voir l'�cran. Pour revenir sous MONST tapez n'importe quelle
−
voir l'‚cran. Pour revenir sous MONST tapez n'importe quelle
 
 
touche. Avancer encore de quelques instructions puis retaper V
 
touche. Avancer encore de quelques instructions puis retaper V
−
etc... Au bout d'un moment vous verrez appara
+
etc... Au bout d'un moment vous verrez appara�tre la lettre A.
  +
R�fl�chissez � la notion d'�cran graphique et � la notion de fon-
−
R‚fl‚chissez … la notion d'‚cran graphique et … la notion de fon-
 
 
tes et vous comprendrez sans mal ce qui se passe. Surprenant non ?
 
tes et vous comprendrez sans mal ce qui se passe. Surprenant non ?
   
 
Quelques petites choses encore: suivez les traps du Bios, Xbios
 
Quelques petites choses encore: suivez les traps du Bios, Xbios
−
GemDos et regardez ce qui se passe au d
+
GemDos et regardez ce qui se passe au d�but. Vous vous rendrez
 
compte qu'il y a sauvegarde des registres sur la pile. Seulement
 
compte qu'il y a sauvegarde des registres sur la pile. Seulement
 
il n'y a pas sauvegarde de TOUS les registres! Seuls D3-D7/A3-A6
 
il n'y a pas sauvegarde de TOUS les registres! Seuls D3-D7/A3-A6
  +
sont sauv�s et donc le contenu de D2 est potentiellement �crasa-
−
sont sauv‚s et donc le contenu de D2 est potentiellement ‚crasa-
 
−
ble par un appel au syst
+
ble par un appel au syst�me d'exploitation. La prudence est donc
  +
conseill�e. En suivant �galement les TRAPs vous apercevrez USP.
−
conseill‚e. En suivant ‚galement les TRAPs vous apercevrez USP.
 
−
Cela signifie User Stack Pointer c'est ainsi que l'on d
+
Cela signifie User Stack Pointer c'est ainsi que l'on d�signe la
 
pile utilisateur.
 
pile utilisateur.
   
  +
Voil�, normalement les traps n'ont plus de secret pour vous. Vous
−
Voil…, normalement les traps n'ont plus de secret pour vous. Vous
 
−
devez savoir leur passer des param
+
devez savoir leur passer des param�tres, les reprogrammer etc ...
−
Vous devez m
+
Vous devez m�me vous rendre compte qu'en suivant les fonctions du
  +
syst�me d'exploitation, on doit pouvoir d�couvrir comment se font
−
systŠme d'exploitation, on doit pouvoir d‚couvrir comment se font
 
−
telle et telle choses, et ainsi pouvoir r
+
telle et telle choses, et ainsi pouvoir r��crire des morceaux de
 
routines.
 
routines.
 
</pre>
 
</pre>

Revision as of 15:08, 23 November 2023

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

   Nous  voici donc repartis pour de nouvelles aventures!  Ce  second
   cours   aura pour sujet les TRAP et plus pr�cis�ment  comment  les
   programmer  soit m�me.Nous  avions vu, dans la premi�re s�rie, que
   les  traps �taient un excellent  moyen  d'acc�der au syst�me d'ex-
   ploitation,  et plus g�n�ralement d'acc�der � des espaces prot�g�s
   (uniquement  accessible  en mode Superviseur).  Nous avions �gale-
   ment  �tudi�  le  passage des param�tres par la pile,  ce qui nous
   avait servi pour r�aliser des subroutines avec param�tres.

   Le   premier exemple va consister � changer la couleur du fond  de
   l'�cran,   avec une routine fabrication maison,  qui sera  appel�e
   par un trap.

   D'abord la routine:
   Etant  donn� qu'un trap est toujours ex�cut� en Superviseur,  nous
   n'h�sitons  pas � utiliser  les  adresses syst�me.  La palette  de
   couleurs   du ST est situ�e � l'adresse  $FF8240.  Chaque  couleur
   �tant  cod�e sur un mot, la couleur 0 est en $FF8240, la couleur 1
   en $FF8242 etc...

   Nous  allons faire 2 routines.  Une qui mettra le fond en  rouge, 
   l'autre qui mettra le fond en vert. Les voici:

   ROUGE   MOVE.W  #$700,$FF8240
           RTE

   VERT    MOVE.W  #$070,$FF8240
           RTE

   Une  �tiquette permet de les rep�rer (ROUGE et VERT). Les couleurs
   �tant  cod�es en RVB (rouge/vert/bleu. On trouve aussi RGB qui est
   la  traduction anglaise: red/green/blue) et les niveaux varient de
   0 �  7. Nous  remarquons  que les routines ne se terminent pas par
   RTS  mais  par RTE. Cela signifie Return from exception. Il s'agit
   bien  en effet d'un retour d'exception et non pas du retour d'une 
   subroutine classique.

   Petit rappel: RTE se lit "return from exception". Je vous rappelle
   qu'il faut TOUT lire en Anglais et pas se contenter de lire l'abr�
   viation dont la signification est souvent assez �vasive.

   Voici le programme 'en entier'.

           MOVE.L  #MESSAGE,-(SP)  toujours sympa de se pr�senter
           MOVE.W  #9,-(SP)
           TRAP    #1              appel GEMDOS
           ADDQ.L  #6,SP   

   * Fixer les vecteur d'exception
           MOVE.L  #ROUGE,-(SP)    adresse 'routine'
           MOVE.W  #35,-(SP)       num�ro de vecteur du trap #3
           MOVE.W  #5,-(SP)        fonction Setexec()
           TRAP    #13             du bios
           ADDQ.L  #8,SP

           MOVE.L  #VERT,-(SP)     adresse 'routine'
           MOVE.W  #36,-(SP)       num�ro de vecteur du trap #4
           MOVE.W  #5,-(SP)        fonction Setexec()
           TRAP    #13             du bios
           ADDQ.L  #8,SP

   * Les  routines sont donc maintenant accessibles par le trap 3  et
   par le trap 4.
           BSR     TOUCHE
           TRAP    #3
           BSR     TOUCHE
           TRAP    #4
           BSR     TOUCHE
           TRAP    #3
           BSR     TOUCHE
           
           MOVE.W  #0,-(SP)
           TRAP    #1
   *-------------------------------------*
   ROUGE   MOVE.W  #$700,$FF8240
           RTE
           
   VERT    MOVE.W  #$070,$FF8240
           RTE
   *-------------------------------------*
   TOUCHE  MOVE.W  #7,-(SP)
           TRAP    #1
           ADDQ.L  #2,SP
           RTS
   *-------------------------------------*
           SECTION DATA
   MESSAGE DC.B    27,"E","LES TRAPS",0


   Facile   n'est ce pas ?  Et bien maintenant que vous savez  mettre
   vos   propres routines en TRAP et que vous savez �galement  passer
   des   param�tres  � une sub routine,  il ne vous reste  plus  qu'�
   faire  la  m�me chose.  J'estime que vous �tes assez grand pour le
   faire  tout seul et c'est pour cette raison que nous n'allons  pas
   le   faire  ici.  A vous de travailler!  Une  seule  pr�caution  �
   prendre:  Une  subroutine n'a besoin que de l'adresse de retour et
   donc  n'empile que cela.  Un TRAP par contre,  du fait qu'il passe
   en  Superviseur, sauve  �galement  le Status Register.  Il ne faut
   donc   pas  oublier  de le prendre en compte pour calculer le saut
   qui   vous   permettra de r�cup�rer vos param�tres  pass�s  sur la
   pile.  L'adresse   de  retour est bien s�r cod�e sur 4 bytes et le
   Status  Register  sur  2.  Il  y a donc empilage de 6 bytes par le
   TRAP   qui les d�pile automatiquement au retour afin de  retrouver
   d'o� il vient et afin �galement de remettre comme avant le Status-
   Register.  Il  ne faudra pas non plus oublier de corriger la  pile
   au retour.

   Comme  d'habitude, prenez votre temps et faites de nombreux petits
   essais afin de parfaitement comprendre la syst�me.
   Regardez   �galement attentivement la fonction du Bios qui nous  a
   servi   �  mettre en place nos deux routines.  Si au lieu  de  lui
   fournir  la nouvelle adresse pour le vecteur, nous lui passons -1,
   cette   fonction  nous  retourne,  dans D0.L, l'adresse   actuelle
   correspondant  � ce vecteur. Rien ne nous emp�che donc de demander
   l'adresse  utilis�e par le TRAP #1 (Gemdos),  de transf�rer  cette
   adresse   dans le trap #0 (par exemple) et de mettre notre  propre
   routine   dans  le  TRAP #1.  Cela peut  aussi  vous  servir  pour
   d�tourner  le TRAP.  Par exemple pour g�n�rer automatiquement  des
   macros. Il  est possible d'imaginer ainsi un programme r�sident en
   m�moire,  qui   est plac� � la place du trap 13 (Bios).  A  chaque
   fois  qu'il y a un appel au Bios, c'est donc notre routine qui est
   d�clench�e.  Etant   donn�  que  les appels se font avec  empilage
   des   param�tres,   il  est  tout � fait possible de savoir quelle
   fonction  du Bios on veut appeler. Il est alors possible de r�agir
   diff�remment pour certaines fonctions.  Cela permet par exemple de
   tester   des  appuis sur Alternate+touches de fonction et dans  ce
   cas, d'aller  �crire des phrases dans le buffer clavier, ceci afin
   de g�n�rer des macros!

   Note:  Un trap ne peut faire appel � des traps plac�s 'au-dessous'
   de   lui.  Ainsi,  dans  un trap #1, il est tout �  fait  possible
   d'appeler un trap #13 mais l'inverse n'est pas possible. 

   Exemple curieux et int�ressant:
           MOVE.W  #"A",-(SP)
           MOVE.W  #2,-(SP)
           TRAP    #1
           ADDQ.L  #4,SP

           MOVE.W  #0,-(SP)
           TRAP    #1

   Ce court programme ne doit pas poser de probl�me. Nous affichons A
    puis   nous   quittons.  Assemblez-le, puis  passez  sous  MONST.
   Appuyez  sur [Control] + P.  Vous choisissez alors les pr�f�rences
   de MONST.   Parmi celles-ci, il y a "follow traps",   c'est-�-dire
   suivre  les TRAPs qui, par d�faut, est sur "NO". Tapez Y pour YES.
   Une  fois les pr�f�rences d�finies, faites avancer votre programme
   pas   �  pas  avec control+Z.  A la diff�rence  des  autres  fois,
   lorsque  vous arrivez sur le TRAP vous voyez ce qui se  passe.  Ne
   vous   �tonnez  pas,  cela  va �tre assez long  car  il  se  passe
   beaucoup  de chose pour afficher un caract�re � l'�cran.  Le  plus
   �tonnant   va �tre l'appel au trap #13.  Eh oui, pour afficher  un
   caract�re le GEMDOS fait appel au Bios!!!!!

   Une autre exp�rience tout aussi int�ressante:

           MOVE.W  #"A",-(SP)
           MOVE.W  #2,-(SP)
           MOVE.W  #3,-(SP)
           TRAP    #13
           ADDQ.L  #6,SP   

           MOVE.W  #0,-(SP)
           TRAP    #1

   Affichage   de  A mais cette fois avec la  fonction  Bconout()  du
   Bios.  Assemblez  puis passez sous MONST avec un suivi des  traps.
   Lorsque   vous  arrivez dans le Bios (donc apr�s  le  passage  sur
   l'instruction  TRAP  #13),  faites  avancer pas � pas le programme
   mais  de temps en temps taper sur la lettre V. Cela vous permet de
   voir   l'�cran.  Pour  revenir sous MONST tapez  n'importe  quelle
   touche.  Avancer   encore de quelques instructions puis retaper  V
   etc...  Au   bout d'un moment vous verrez appara�tre la lettre  A.
   R�fl�chissez  � la notion d'�cran graphique et � la notion de fon-
   tes et vous comprendrez sans mal ce qui se passe. Surprenant non ?

   Quelques  petites choses encore:  suivez les traps du Bios,  Xbios
   GemDos   et regardez ce qui se passe au d�but.  Vous vous  rendrez
   compte  qu'il y a sauvegarde des registres sur la pile.  Seulement
   il n'y a pas sauvegarde de TOUS les registres! Seuls  D3-D7/A3-A6 
   sont  sauv�s et donc le contenu  de D2 est potentiellement �crasa-
   ble  par  un appel au syst�me d'exploitation. La prudence est donc
   conseill�e.  En  suivant �galement les  TRAPs vous apercevrez USP.
   Cela  signifie  User Stack Pointer c'est ainsi que l'on d�signe la
   pile utilisateur.

   Voil�, normalement  les traps n'ont plus de secret pour vous. Vous
   devez  savoir leur passer des param�tres, les reprogrammer etc ...
   Vous  devez m�me vous rendre compte qu'en suivant les fonctions du
   syst�me  d'exploitation, on doit pouvoir d�couvrir comment se font
   telle  et telle choses,  et ainsi pouvoir r��crire des morceaux de
   routines. 

Back to ASM_Tutorial