COURS202.TXT/fr: Difference between revisions

From Atari Wiki
Jump to navigation Jump to search
No edit summary
(Replacing content with updated version)
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
  +
{{Languages|COURS202.TXT}}
 
<pre>
 
<pre>
 
******************************************************************
 
******************************************************************
Line 4: Line 5:
 
* COURS D'ASSEMBLEUR 68000 SUR ATARI ST *
 
* COURS D'ASSEMBLEUR 68000 SUR ATARI ST *
 
* *
 
* *
* par Le F�roce Lapin (from 44E) *
+
* par Le Féroce Lapin (from 44E) *
 
* *
 
* *
* Seconde s�rie *
+
* Seconde série *
 
* *
 
* *
* Cours num�ro 2 *
+
* 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�cis�ment comment les
+
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
+
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�n�ralement d'acc�der des espaces prot�g�s
+
ploitation, et plus généralement d'accéder à des espaces protégés
(uniquement accessible en mode Superviseur). Nous avions �gale-
+
(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�aliser des subroutines avec param�tres.
+
avait servi pour réaliser des subroutines avec paramètres.
   
Le premier exemple va consister changer la couleur du fond de
+
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�e l'adresse $FF8240. Chaque couleur
+
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 41:
 
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 50:
   
 
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 �vasive.
+
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�senter
+
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 62:
 
* 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�ro de vecteur du trap #3
+
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 68:
   
 
MOVE.L #VERT,-(SP) adresse 'routine'
 
MOVE.L #VERT,-(SP) adresse 'routine'
MOVE.W #36,-(SP) num�ro de vecteur du trap #4
+
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 102:
   
 
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 �galement passer
+
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�caution
+
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 �galement le Status Register. Il ne faut
+
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�cup�rer vos param�tres pass�s sur la
+
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
+
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�pile automatiquement au retour afin de retrouver
+
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' 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�me.
+
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 ce vecteur. Rien ne nous emp�che donc de demander
+
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�sident en
+
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�agir
+
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 �crire des phrases dans le buffer clavier, ceci afin
+
cas, d'aller écrire des phrases dans le buffer clavier, ceci afin
de g�n�rer des macros!
+
de générer des macros!
   
Note: Un trap ne peut faire appel des traps plac�s 'au-dessous'
+
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
+
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�ressant:
+
Exemple curieux et intéressant:
 
MOVE.W #"A",-(SP)
 
MOVE.W #"A",-(SP)
 
MOVE.W #2,-(SP)
 
MOVE.W #2,-(SP)
Line 153: Line 154:
 
TRAP #1
 
TRAP #1
   
Ce court programme ne doit pas poser de probl�me. Nous affichons A
+
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�f�rences
+
Appuyez sur [Control] + P. Vous choisissez alors les préférences
de MONST. Parmi celles-ci, il y a "follow traps", c'est--dire
+
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.
+
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
+
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�re l'�cran. Le plus
+
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�rience tout aussi int�ressante:
+
Une autre expérience tout aussi intéressante:
   
 
MOVE.W #"A",-(SP)
 
MOVE.W #"A",-(SP)
Line 179: Line 180:
 
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�s le passage sur
+
Lorsque vous arrivez dans le Bios (donc après le passage sur
l'instruction TRAP #13), faites avancer pas pas le programme
+
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�tre la lettre A.
+
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�but. Vous vous rendrez
+
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�me d'exploitation. La prudence est donc
+
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�signe la
+
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�tres, les reprogrammer etc ...
+
devez savoir leur passer des paramètres, les reprogrammer etc ...
Vous devez m�me vous rendre compte qu'en suivant les fonctions du
+
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��crire des morceaux de
+
telle et telle choses, et ainsi pouvoir réécrire des morceaux de
 
routines.
 
routines.
  +
 
</pre>
 
</pre>
 
Back to [[ASM_Tutorial]]
 
Back to [[ASM_Tutorial]]

Latest revision as of 23:57, 16 December 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