Envoyer un e-mail à Collection ThomsonCollection Thomson
EditoForum 2002Liens
Nanoreseau
Docs
Logiciels
Matériel
Imprimer le documentLes cours d'assembleur de Prehis-To
Retour à la liste

Initiation à l’assembleur 6809

Cours n°11

Nous allons maintenant étudier pour exemple une entrée du moniteur.

La mémoire Moniteur, logée en ROM, contient plusieurs programmes pouvant faciliter une opération pour le programmeur : opération sur LEP, lecteur de disquettes, tracé d’un segment de droite, d’un point, lecture du crayon optique, etc... Procurez-vous, pour les MO, le guide du MO5 aux éditions Cedic Nathan ainsi que, pour les TO comme pour les MO, le «Manuel de l’assembleur 6809 du TO7/TO7-70 » de Michel Weissgerber dans la même édition. Outre tous les détails sur les routines Moniteur des TO, ce dernier vous donnera aussi le mode d’emploi du programme ASSEMBLER de MicroSoft, un chapitre très complet sur les types d’adressages, les registres programmables du 6809, le codage et le tableau des instructions assembleur incluant leur vitesse d’exécution et leur effet sur le registre condition CC. Un ouvrage indispensable pour tout programmeur en assembleur.

Attardons-nous par exemple sur le point d’entrée pour l’affichage d’un segment au chapitre « 7.2 tracé d’un segment de droite » du manuel :

Pour les MO:

* Code du point d’entrée : 0EH pour un JSR, 8EH pour un JMP
* paramètres d’entrée :
- registres 6809 X et Y
- registres PLOTX(2032H-2033H), PLOTY (2034H-2035H), FORME (2029H), COLOUR (202BH),
  CHDRAW(2036H)
* paramètres de retour
  registres PLOTX (2032H-2033H), PLOTY (2034H-2035H)

...et pour les TO :

* Adresse du point d’entrée : DRAW$ (E80CH)
* paramètres d’entrée :
  registres 6809 X et Y
  registres PLOTX (603DH-603EH), PLOTY (603FH-6040H), CHDRAW
  (6041H), FORME (6038H), COLOUR (603BH)
* paramètres de retour
  registres PLOTX (603DH-603EH), PLOTY (603FH-6040H)

Vous remarquerez que les registres ont un nom identique, même s’ils sont adressés différemment, ce qui permet, éventuellement, une adaptation facile sur des machines différentes. Les adresses sont suivies du caractère « H », qui signifie simplement que les valeurs sont exprimées en hexadécimal.

Sous Basic, le traçage d’un segment suppose des coordonnées de départ et d’arrivée, le choix du tracé en mode graphique ou caractère et la couleur. Toutes ces options sont aussi gérées par la routine moniteur de tracé.

Pour un mode de tracé graphique, le registre CHDRAW doit être mis à 0. Dans le cas où il serait différent de 0, le tracé serait en mode caractère et CHDRAW devrait donc contenir le code du caractère pour le traçage du segment. La couleur du segment sera définie dans le registre FORME. Elle peut varier de 0 à 15 s’il s’agit d’un segment de forme et de -1 à -16 s’il s’agit d’un segment de fond.

Pour les coordonnées, la gêne réside dans le fait que les registres X et Y sont utilisés pour formuler les coordonnées d’arrivée. Pour afficher un segment, il est donc nécessaire au préalable ou de fixer les coordonnées de départ dans les registres PLOTX et PLOTY. Pour un écran normal en 40 colonnes, il faut veiller à ce que les abscisses ne soient pas supérieures à 319 et les ordonnées à 199, de telle façon que le segment ne s’affiche pas hors de l’écran.

En retour de routine moniteur, il est dit que les registres PLOTX et PLOTY seront mis à jour, c’est à dire qu’ils contiendront alors respectivement l’abscisse et l’ordonnée d’arrivée du segment. Ainsi, dans le cas du traçage de lignes brisées, les coordonnées du point de départ du segment suivant seront déjà mises à jour dans ces registres. Ce qui équivaut à l’effet, sous Basic, de la syntaxe « LINE-(X1,Y1) ».

Définissons la couleur et les coordonnées à l’aide de la commande « EQU ». Toutes ces valeurs sont arbitraires. Vous les changerez à votre guise. Pour le programme, la partie TO se trouve dans la colonne 2 et la partie MO dans la colonne 3 :

COLOR  EQU    4            Couleur choisie pour le segment
X0     EQU    20           Abscisse de départ à 20
Y0     EQU    10           Ordonnée de départ à 10
X1     EQU    300          Abscisse d’arrivée à 300
Y1     EQU    180          Ordonnée d’arrivée à 180
  
DEBUT  | LDB  #COLOR       | LDB  #COLOR       | Fixe la couleur
       | STB  $6038        | STB  $2029        | du tracé
       | CLR  $6041        | CLR  $2036        Demande de tracé en mode graphique
       | LDD  #X0          | LDD  #X0          | Fixe l’abscisse
       | STD  $603D        | STD  $2032        | de départ
       | LDD  #Y0          | LDD  #Y0           | Fixe l’ordonnée
       | STD  $603F        | STD  $2034         | de départ
       | LDX  #X1          | LDX  #X1          Charge abscisse d’arrivée
       | LDY  #Y1          | LDY  #Y1          Charge ordonnée d’arrivée
       | JSR  $E80C        | CALL $0E          Trace le segment
       | SWI               | STOP              Arrêt du programme
       | END               | END               - Fin du programme -

Il est aussi possible de fixer les coordonnées de départ du segment en utilisant la routine d’affichage d’un point (chapitre 7.1 du manuel), ce qui donne, avec la même table d’égalité :

DEBUT  | LDB  #COLOR       | LDB  #COLOR       | Fixe la couleur
       | STB  $6038        | STB  $2029        | du tracé
       | CLR  $6041        | CLR  $2036        Demande de tracé en mode graphique
       | LDX  #X0          | LDX  #X0          Charge l’abscisse de départ
       | LDY  #Y0          | LDY  #Y0          Charge l’ordonnée de départ
       | JSR  $E80F        | CALL $10          Affiche le point de départ
       | LDX  #X1          | LDX  #X1          Charge abscisse d’arrivée
       | LDY  #Y1          | LDY  #Y1          Charge ordonnée d’arrivée
       | JSR  $E80C        | CALL $0E          Trace le segment
       | SWI               | STOP              Arrêt du programme
       | END               | END               - Fin du programme -

Avant chaque appel aux routines moniteur, il faudra donc toujours veiller à la bonne initialisation des registres. Dans le cas du tracé de segment, une coordonnée dépassant les limites de l’écran amènera le moniteur à tracer un segment à l’extérieur de l’écran, ce qui provoquera un bug. En effet, les routines Moniteur ne sont pas bridées comme les instructions sous Basic. Leur utilisation implique donc le filtrage systématique des registres utilisés.

Pour information, le chapitre 5 dans «  La conduite du TO7-70 » de Gabriel GUILLON aux éditions Eyrolles passe en revue certains de ces points d’entrées. Comme son titre l’indique, cet ouvrage n’est malheureusement consacré qu’au TO. Mais les routines Moniteur nécessitent les mêmes types de registres et réagissent de la même manière sur MO.

Sur les TO7, TO7-70 et MO5, il faudra faire attention. Les registres assembleur (A, B, X, Y, U,...) qui ne sont pas utilisés par la routine Moniteur peuvent néanmoins être altérés ou même réinitialisés. Il est conseillé d’empiler en entrée de la routine les registres importants et de les dépiler en sortie. Ou ne pas en avoir l’usage.

Les Thomson de dernière génération (MO6/TO9/TO8/TO8D/TO9+) possèdent, quant à eux, un ExtraMoniteur. Il s’agit, comme son nom l’indique, d’une extension du Moniteur, permettant l’appel de routines plus riches. Son maniement offre au programmeur averti de rapprocher des programmes Basic l’efficacité - et la concision - de ses programmes assembleur. On y trouve notamment les fonctions CIRCLE, PAINT, NAME, DSKINI, OPEN, CLOSE, BOX, BOXF, etc...

La vitesse d’exécution des routines Moniteur, vous vous en rendrez compte au cours de vos pérégrinations, n’est pas toujours optimale puisque gérant quelquefois de multiples options. En attendant que vous maîtrisiez le langage assembleur au point de vous attaquer aux programmes en ROM, étudiez donc les autres routines proposées par le Moniteur. Vous comprendrez alors plus clairement comment fonctionne votre Thomson.

Site
Plus
Forums
Code
Créations

*Site en favoris
*Page en favoris
*Site en démarrage
*Page en démarrage


Haut de page

Collection Thomson 2015 © Ghislain Fournier & François Mouret