Pl2 VDI.DOC/fr: Difference between revisions

From Atari Wiki
Jump to navigation Jump to search
No edit summary
mNo edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
  +
{{Languages|Pl2 VDI.DOC}}
 
<pre>
 
<pre>
   
Line 19: Line 20:
 
cher un cercle,un polygone,remplir des surfaces etc...
 
cher un cercle,un polygone,remplir des surfaces etc...
   
Je vais aussi être amen‚ à parler des fonctions de l'AES, celles-ci ne
+
Je vais aussi être amené à parler des fonctions de l'AES, celles-ci ne
seront pas ‚tudi‚es dans cet ouvrage (vu la complexit‚ de leur mise en
+
seront pas étudiées dans cet ouvrage (vu la complexité de leur mise en
 
oeuvre).
 
oeuvre).
 
Les fonctions de l'AES s'occupent essentiellement de la gestion de
 
Les fonctions de l'AES s'occupent essentiellement de la gestion de
l'‚cran et de la souris.(Fenètres,gestion des objets...)
+
l'écran et de la souris.(Fenètres,gestion des objets...)
 
 
 
- Il faudra fournir un certain nombre de paramètres aux fonctions du VDI
 
- Il faudra fournir un certain nombre de paramètres aux fonctions du VDI
pour pouvoir obtenir l'effet d‚sir‚:
+
pour pouvoir obtenir l'effet désiré:
La transmission des paramètres se fait par l'interm‚diaire d'un TABLEAU:
+
La transmission des paramètres se fait par l'intermédiaire d'un TABLEAU:
(Un TABLEAU n'est rien d'autre qu'un espace de la m‚moire qu'on a r‚ser-
+
(Un TABLEAU n'est rien d'autre qu'un espace de la mémoire qu'on a réser-
v‚ à partir d'une adresse (avec DS.x place) ).
+
à partir d'une adresse (avec DS.x place) ).
 
Ce tableau est commun aux fonctions du VDI et de l'AES.
 
Ce tableau est commun aux fonctions du VDI et de l'AES.
 
Le tableau se trouve dans le segment BSS et c'est à certaines de ses ad-
 
Le tableau se trouve dans le segment BSS et c'est à certaines de ses ad-
 
resses qu'on placera les paramètres.
 
resses qu'on placera les paramètres.
 
Dans le segment DATA, on devra aussi poser un label qui pointe sur les
 
Dans le segment DATA, on devra aussi poser un label qui pointe sur les
diff‚rentes adresses du tableau.(Un label qui pointe sur des adresses
+
différentes adresses du tableau.(Un label qui pointe sur des adresses
en zone DATA est g‚n‚ralement appell‚ VECTEUR...)
+
en zone DATA est généralement appellé VECTEUR...)
Dans le tableau qui regroupe toutes les r‚servations pour les fonctions
+
Dans le tableau qui regroupe toutes les réservations pour les fonctions
 
du VDI et de l'AES, on distingue plusieurs groupes de tableaux:
 
du VDI et de l'AES, on distingue plusieurs groupes de tableaux:
   
.Le tableau point‚ par l'adresse 'CONTROL' (pour le VDI et l'AES)
+
.Le tableau pointé par l'adresse 'CONTROL' (pour le VDI et l'AES)
:c'est dans ce tableau qu'on d‚posera le code de la fonction et
+
:c'est dans ce tableau qu'on déposera le code de la fonction et
 
les dimensions des tableaux 'intin','ptsin','intout','ptsout'.
 
les dimensions des tableaux 'intin','ptsin','intout','ptsout'.
 
 
.Celui point‚ par l'adresse 'GLOBAL' (pour l'AES)
+
.Celui pointé par l'adresse 'GLOBAL' (pour l'AES)
:d‚tails plus loin...
+
:détails plus loin...
   
.4 tableaux point‚s par les adresses 'INTIN','INTOUT','PTSIN','PTSOUT'
+
.4 tableaux pointés par les adresses 'INTIN','INTOUT','PTSIN','PTSOUT'
 
Dans les tableaux de type 'IN', l'utilisateur peut fournir des para-
 
Dans les tableaux de type 'IN', l'utilisateur peut fournir des para-
 
mètres et dans ceux du type 'OUT', certaines fonctions du VDI ou de
 
mètres et dans ceux du type 'OUT', certaines fonctions du VDI ou de
 
l'AES retournent des valeurs.
 
l'AES retournent des valeurs.
 
Dans INTIN on placera les paramètres propres à la fonction VDI ou
 
Dans INTIN on placera les paramètres propres à la fonction VDI ou
AES utilis‚e.
+
AES utilisée.
Dans INTOUT, le VDI ou l'AES posera des donn‚es de retour.
+
Dans INTOUT, le VDI ou l'AES posera des données de retour.
Dans PTSIN on range des coordonn‚es:ce tableau est utlis‚ par le VDI.
+
Dans PTSIN on range des coordonnées:ce tableau est utlisé par le VDI.
Dans PTSOUT le VDI fournit en retour des coordonn‚es (avec certaines
+
Dans PTSOUT le VDI fournit en retour des coordonnées (avec certaines
 
fonction).
 
fonction).
 
 
 
.On trouvera aussi 2 tableaux: 'ADDRIN' et 'ADDROUT' qui sont
 
.On trouvera aussi 2 tableaux: 'ADDRIN' et 'ADDROUT' qui sont
sp‚cifiques à l'AES et qui contiennent des adresses (pointant
+
spécifiques à l'AES et qui contiennent des adresses (pointant
sur des donn‚es...).
+
sur des données...).
   
 
.Le vecteur 'VDIPB' du segment DATA pointe successivement les adresses
 
.Le vecteur 'VDIPB' du segment DATA pointe successivement les adresses
des tableaux: CONTROL,INTIN,PTSIN,INTOUT,PTSOUT qui sont utilis‚s par
+
des tableaux: CONTROL,INTIN,PTSIN,INTOUT,PTSOUT qui sont utilisés par
 
le VDI.
 
le VDI.
   
 
.Il existe aussi un vecteur (AESPB) qui pointe sur les adresses des
 
.Il existe aussi un vecteur (AESPB) qui pointe sur les adresses des
 
tableaux OPCODE,APVERS,INTIN,INTOUT,ADDRIN,ADDROUT et qui est uti-
 
tableaux OPCODE,APVERS,INTIN,INTOUT,ADDRIN,ADDROUT et qui est uti-
lis‚ par les fonctions de l'AES.
+
lisé par les fonctions de l'AES.
   
Ce tableau est donc compos‚ ainsi:
+
Ce tableau est donc composé ainsi:
   
   
Line 88: Line 89:
   
   
GLOBAL: ;d‚but du tableau GLOBAL
+
GLOBAL: ;début du tableau GLOBAL
 
apvers ds.w 1 ;1° adresse du tableau 'global':apvers
 
apvers ds.w 1 ;1° adresse du tableau 'global':apvers
 
apcount ds.w 1 ;2° adresse:apcount
 
apcount ds.w 1 ;2° adresse:apcount
Line 118: Line 119:
   
   
grhandle ds.w 1 ;ici on r‚serve 1 mot pour le handle
+
grhandle ds.w 1 ;ici on réserve 1 mot pour le handle
   
   
Line 165: Line 166:
   
 
apvers :(en GLOBAL+0) =nr° de la version de l'AES en service
 
apvers :(en GLOBAL+0) =nr° de la version de l'AES en service
apcount :(en GLOBAL+2) =nombre maximum autoris‚ de programmes
+
apcount :(en GLOBAL+2) =nombre maximum autorisé de programmes
simultanement en m‚moire
+
simultanement en mémoire
 
apid :(en GLOBAL+4) =nr° de l'application en cours
 
apid :(en GLOBAL+4) =nr° de l'application en cours
 
apprivate:(en GLOBAL+6) =selon la fonction
 
apprivate:(en GLOBAL+6) =selon la fonction
 
apptree :(en GLOBAL+10)=pointeur sur une structure d'arbre d'objets
 
apptree :(en GLOBAL+10)=pointeur sur une structure d'arbre d'objets
ap1resv :(en GLOBAL+14)=r‚serv‚ à des applications futures...
+
ap1resv :(en GLOBAL+14)=réservé à des applications futures...
 
ap2resv :(en GLOBAL+18)=idem
 
ap2resv :(en GLOBAL+18)=idem
 
ap3resv :(en GLOBAL+22)=idem
 
ap3resv :(en GLOBAL+22)=idem
Line 176: Line 177:
   
   
- Mais avant de pouvoir utiliser les diff‚rentes fonctions du VDI ou
+
- Mais avant de pouvoir utiliser les différentes fonctions du VDI ou
 
de l'AES, il faudra faire quelques initialisations.
 
de l'AES, il faudra faire quelques initialisations.
 
(Comme pour le GEMDOS avec SETBLOCK).
 
(Comme pour le GEMDOS avec SETBLOCK).
Line 187: Line 188:
   
 
- Pour appeller ces fonctions, nous allons passer les paramètres
 
- Pour appeller ces fonctions, nous allons passer les paramètres
n‚c‚ssaires dans le tableau (aux bonnes adresses) des r‚serva-
+
nécéssaires dans le tableau (aux bonnes adresses) des réserva-
 
tions et nous appellerons le VDI avec:
 
tions et nous appellerons le VDI avec:
 
 
Line 204: Line 205:
   
 
La fonction OPEN_SCREEN_WORKSTATION permet d'ouvrir une station
 
La fonction OPEN_SCREEN_WORKSTATION permet d'ouvrir une station
de travail en chargeant en m‚moire le système de gestion graphique
+
de travail en chargeant en mémoire le système de gestion graphique
 
du VDI.
 
du VDI.
   
Line 212: Line 213:
 
Dans sptsin ,1 MOT=0
 
Dans sptsin ,1 MOT=0
 
Dans sintin,1 MOT=11
 
Dans sintin,1 MOT=11
Dans handle,le MOT point‚ par grhandle
+
Dans handle,le MOT pointé par grhandle
 
Dans intin jusqu'à intin+20, 1 MOT=1
 
Dans intin jusqu'à intin+20, 1 MOT=1
 
 
En r‚alit‚, les paramètres plac‚s en INTIN, doivent donner les
+
En réalité, les paramètres placés en INTIN, doivent donner les
 
renseignements suivants:
 
renseignements suivants:
   
intin =identification du p‚riph‚rique à la carte mère
+
intin =identification du périphérique à la carte mère
 
intin+2 =type de ligne
 
intin+2 =type de ligne
 
intin+4 =couleur de la ligne
 
intin+4 =couleur de la ligne
Line 224: Line 225:
 
intin+8 =couleur du marquage
 
intin+8 =couleur du marquage
 
intin+10=jeu de caractère
 
intin+10=jeu de caractère
intin+12=couleur de l'‚criture
+
intin+12=couleur de l'écriture
 
intin+14=type de remplissage
 
intin+14=type de remplissage
 
intin+16=motif de remplissage
 
intin+16=motif de remplissage
 
intin+18=couleur du remplissage
 
intin+18=couleur du remplissage
intin+20=coordonn‚es pour des drapeaux
+
intin+20=coordonnées pour des drapeaux
   
 
Mais nous ne nous en servirons pas, nous mettons alors toutes ces
 
Mais nous ne nous en servirons pas, nous mettons alors toutes ces
Line 245: Line 246:
 
Dans sintout,1 MOT=0
 
Dans sintout,1 MOT=0
 
 
La fonction GRAF_HANDLE de l'AES permet de donner un num‚ro
+
La fonction GRAF_HANDLE de l'AES permet de donner un numéro
 
d'identification à notre programme.
 
d'identification à notre programme.
Ce num‚ro retourne dans INTOUT et nous le placerons en 'grhandle'.
+
Ce numéro retourne dans INTOUT et nous le placerons en 'grhandle'.
   
 
Les paramètres à passer sont:
 
Les paramètres à passer sont:
Line 261: Line 262:
   
 
Après l'appel de la fonction GRAF_HANDLE de l'AES, nous poserons
 
Après l'appel de la fonction GRAF_HANDLE de l'AES, nous poserons
le nr° d'identification d‚pos‚ en INTOUT en 'grhandle' avec:
+
le nr° d'identification déposé en INTOUT en 'grhandle' avec:
   
 
MOVE INTOUT,GRHANDLE
 
MOVE INTOUT,GRHANDLE
   
Nous allons aussi cr‚er 2 MACROS instructions qui vont se charger
+
Nous allons aussi créer 2 MACROS instructions qui vont se charger
 
d'appeller le VDI et l'AES.
 
d'appeller le VDI et l'AES.
   
Line 363: Line 364:
 
INCLUDE "INIT_GEM.L" ;fichier des initialisations du VDI/AES
 
INCLUDE "INIT_GEM.L" ;fichier des initialisations du VDI/AES
   
SETBLOCK ;r‚serve m‚moire
+
SETBLOCK ;réserve mémoire
   
 
. ;les instructions qui forment
 
. ;les instructions qui forment
Line 371: Line 372:
 
DATA
 
DATA
   
. ;les donn‚es initialis‚es
+
. ;les données initialisées
 
.
 
.
 
 
Line 377: Line 378:
   
 
INCLUDE "TABLEAU.L" ;le TABLEAU du VDI et de l'AES:
 
INCLUDE "TABLEAU.L" ;le TABLEAU du VDI et de l'AES:
;Contient aussi les r‚servations en 'PILE'
+
;Contient aussi les réservations en 'PILE'
 
;pour SETBLOCK...
 
;pour SETBLOCK...
 
END
 
END
Line 386: Line 387:
 
---------------------------
 
---------------------------
   
Vous voilà prèts à pr‚sent à utiliser les fonctions graphiques du VDI:
+
Vous voilà prèts à présent à utiliser les fonctions graphiques du VDI:
 
 
Je vais citer les fonctions les plus int‚ressantes et vous donner pour
+
Je vais citer les fonctions les plus intéressantes et vous donner pour
 
chacunes d'elles les paramètres à passer dans le tableau: TABLEAU.L
 
chacunes d'elles les paramètres à passer dans le tableau: TABLEAU.L
 
 
Line 396: Line 397:
   
 
 
TEXT:Permet l'‚dition d'un texte à des coordonn‚es (x,y)
+
TEXT:Permet l'édition d'un texte à des coordonnées (x,y)
 
----
 
----
 
Paramètres:
 
Paramètres:
Line 404: Line 405:
 
sintin=n
 
sintin=n
 
handle=grhandle
 
handle=grhandle
intin=la chaine de caractère compos‚e de 'n' lettres
+
intin=la chaine de caractère composée de 'n' lettres
 
ptsin=x
 
ptsin=x
 
ptsin+2=y
 
ptsin+2=y
Line 425: Line 426:
 
GRAPHIC TEXT SPECIAL EFFECTS:Permet de manipuler le type du texte graph.
 
GRAPHIC TEXT SPECIAL EFFECTS:Permet de manipuler le type du texte graph.
 
----------------------------
 
----------------------------
Le type du texte graphique est d‚pos‚ en 'intin' sous la forme d'un mot,
+
Le type du texte graphique est déposé en 'intin' sous la forme d'un mot,
seuls les bits 0 à 5 du mot sont utilis‚s et permettent de choisir:
+
seuls les bits 0 à 5 du mot sont utilisés et permettent de choisir:
   
 
nr° BIT: Effet sur TEXT
 
nr° BIT: Effet sur TEXT
Line 433: Line 434:
 
1 caractères fins
 
1 caractères fins
 
2 caractères italiques
 
2 caractères italiques
3 caractères soulign‚s
+
3 caractères soulignés
 
4 caractères 'light'
 
4 caractères 'light'
 
5 caractères 'outline'
 
5 caractères 'outline'
Line 447: Line 448:
   
 
 
CONTOUR FILL:Permet de remplir une surface à partir d'un point de d‚part
+
CONTOUR FILL:Permet de remplir une surface à partir d'un point de départ
------------ de coordonn‚es (x,y)
+
------------ de coordonnées (x,y)
   
 
Paramètres:
 
Paramètres:
Line 461: Line 462:
 
 
   
SET FILL COLOR INDEX:D‚termine la couleur utilis‚e pour les fonctions de
+
SET FILL COLOR INDEX:Détermine la couleur utilisée pour les fonctions de
 
-------------------- remplissage.
 
-------------------- remplissage.
   
Line 483: Line 484:
 
 
 
0=pas de remplissage
 
0=pas de remplissage
1=remplissage de type PLEIN avec la couleur selectionn‚e
+
1=remplissage de type PLEIN avec la couleur selectionnée
2=remplissage avec des motifs pr‚d‚finis
+
2=remplissage avec des motifs prédéfinis
 
3=remplissage avec des HACHURES
 
3=remplissage avec des HACHURES
4=remplissage avec un motif red‚fini par le programmeur
+
4=remplissage avec un motif redéfini par le programmeur
   
 
Paramètres:
 
Paramètres:
Line 500: Line 501:
 
-------------- remplissage:36 motifs sont disponibles
 
-------------- remplissage:36 motifs sont disponibles
   
La matrice est la trame utilis‚e pour le remplissage de la surface:
+
La matrice est la trame utilisée pour le remplissage de la surface:
 
Elle peut ètre du type 3 (24 motifs) ou du type 2 (12 motifs) (voir
 
Elle peut ètre du type 3 (24 motifs) ou du type 2 (12 motifs) (voir
 
la fonction SET FILL INTERIOR pour les 5 types disponibles)
 
la fonction SET FILL INTERIOR pour les 5 types disponibles)
Line 513: Line 514:
   
   
SET WRITING MODE:Permet de selectionner le mode d'‚criture de toutes les
+
SET WRITING MODE:Permet de selectionner le mode d'écriture de toutes les
---------------- ‚ditions graphiques.
+
---------------- éditions graphiques.
   
En mode 1:mode AND, ce qui est en dessous est toujours effac‚.
+
En mode 1:mode AND, ce qui est en dessous est toujours effacé.
En mode 2:mode OR , on ‚crit seulement là o— il n'y a pas encore de
+
En mode 2:mode OR , on écrit seulement là o— il n'y a pas encore de
points et les vides sont toujours repr‚sent‚s.
+
points et les vides sont toujours représentés.
 
En mode 3:mode XOR ,on ne place des points que là o— il n'y en a pas
 
En mode 3:mode XOR ,on ne place des points que là o— il n'y en a pas
encore et les points d‚jà occup‚s sont ‚ffac‚s
+
encore et les points déjà occupés sont éffacés
 
En mode 4:mode transparent inverse, on ne place que des points là o— il
 
En mode 4:mode transparent inverse, on ne place que des points là o— il
y en avait d‚jà et seulement si ils ne possèdent pas de cou-
+
y en avait déjà et seulement si ils ne possèdent pas de cou-
 
leur (permet d'obtenir un NEGATIF de la trame destination).
 
leur (permet d'obtenir un NEGATIF de la trame destination).
 
 
Line 535: Line 536:
   
   
FILL RECTANGLE:Rempli un rectangle d‚finit ainsi:coordonn‚es du coin
+
FILL RECTANGLE:Rempli un rectangle définit ainsi:coordonnées du coin
-------------- sup‚rieur gauche (x1,y1),coordonn‚es du coin inf‚rieur
+
-------------- supérieur gauche (x1,y1),coordonnées du coin inférieur
 
droit (x2,y2)
 
droit (x2,y2)
   
Line 551: Line 552:
   
   
CIRCLE:Permet de dessiner un cercle de coordonn‚es (x,y) et de rayon R
+
CIRCLE:Permet de dessiner un cercle de coordonnées (x,y) et de rayon R
------ à l'‚cran.
+
------ à l'écran.
   
 
 
Line 572: Line 573:
   
   
- Voilà pour les fonctions du VDI, je n'ai bien sur pas pr‚sent‚ toutes
+
- Voilà pour les fonctions du VDI, je n'ai bien sur pas présenté toutes
 
les fonctions...
 
les fonctions...
 
Elles sont bien trop lentes et trop lourdes à exploiter pour pouvoir
 
Elles sont bien trop lentes et trop lourdes à exploiter pour pouvoir
v‚ritablement être dignes de votre attention...
+
véritablement être dignes de votre attention...
 
Je parlerais bientot des LINES_A, ce sont aussi des fonctions graphi-
 
Je parlerais bientot des LINES_A, ce sont aussi des fonctions graphi-
 
ques mais elles au moins sont très rapides.En attendant, vous pouvez
 
ques mais elles au moins sont très rapides.En attendant, vous pouvez
 
regarder le listing d'un programme exemple qui illustre clairement
 
regarder le listing d'un programme exemple qui illustre clairement
l'utilisation des fonctions du VDI d‚crites ci-dessus.
+
l'utilisation des fonctions du VDI décrites ci-dessus.
 
 
 
.Listing :fichier VDI.L
 
.Listing :fichier VDI.L
.‚xecutable:fichier VDI.PRG
+
.éxecutable:fichier VDI.PRG
   
NB:Si vous d‚sirez utiliser une fonction du VDI dans une boucle, il
+
NB:Si vous désirez utiliser une fonction du VDI dans une boucle, il
-- n'est pas n‚cessaire de r‚initialiser tous les paramètres du tableau
+
-- n'est pas nécessaire de réinitialiser tous les paramètres du tableau
puisqu'ils ne sont pas effac‚s:il suffira donc de faire varier les
+
puisqu'ils ne sont pas effacés:il suffira donc de faire varier les
 
paramètres qui doivent changer dans votre boucle puis d'appeller le
 
paramètres qui doivent changer dans votre boucle puis d'appeller le
 
VDI.
 
VDI.
   
Ceux qui d‚sirent malgr‚ tout en savoir plus sur les fonctions du VDI
+
Ceux qui désirent malgré tout en savoir plus sur les fonctions du VDI
ou de l'AES pourront se r‚fèrer au livre:
+
ou de l'AES pourront se réfèrer au livre:
 
'LE LIVRE DU GEM' de Micro Application.
 
'LE LIVRE DU GEM' de Micro Application.
   

Latest revision as of 21:42, 17 December 2023


                         --------------------
                             CHAPITRE N°7:

                               LE   VDI 
     
                         --------------------     


                         *** INTRODUCTION ***
                         --------------------


- Le VDI est un ensemble de fonctions (tout comme le Gemdos,le bios et
  l'xbios) graphiques:

  En appellant les fonctions adequates, on pourra donc par exemple affi-
  cher un cercle,un polygone,remplir des surfaces etc...

  Je vais aussi être amené à parler des fonctions de l'AES, celles-ci ne
  seront pas étudiées dans cet ouvrage (vu la complexité de leur mise en
  oeuvre).
  Les fonctions de l'AES s'occupent essentiellement de la gestion de
  l'écran et de la souris.(Fenètres,gestion des objets...)
 
- Il faudra fournir un certain nombre de paramètres aux fonctions du VDI
  pour pouvoir obtenir l'effet désiré:
  La transmission des paramètres se fait par l'intermédiaire d'un TABLEAU:
  (Un TABLEAU n'est rien d'autre qu'un espace de la mémoire qu'on a réser-
  vé à partir d'une adresse (avec DS.x   place) ).
  Ce tableau est commun aux fonctions du VDI et de l'AES.
  Le tableau se trouve dans le segment BSS et c'est à certaines de ses ad-
  resses qu'on placera les paramètres. 
  Dans le segment DATA, on devra aussi poser un label qui pointe sur les
  différentes adresses du tableau.(Un label qui pointe sur des adresses
  en zone DATA est généralement appellé VECTEUR...)  
  Dans le tableau qui regroupe toutes les réservations pour les fonctions
  du VDI et de l'AES, on distingue plusieurs groupes de tableaux:

  .Le tableau pointé par l'adresse 'CONTROL' (pour le VDI et l'AES)
   :c'est dans ce tableau qu'on déposera le code de la fonction et
   les dimensions des tableaux 'intin','ptsin','intout','ptsout'.
 
  .Celui pointé par l'adresse 'GLOBAL' (pour l'AES)
   :détails plus loin...

  .4 tableaux pointés par les adresses 'INTIN','INTOUT','PTSIN','PTSOUT'  
   Dans les tableaux de type 'IN', l'utilisateur peut fournir des para-
   mètres et dans ceux du type 'OUT', certaines fonctions du VDI ou de
   l'AES retournent des valeurs. 
   Dans INTIN on placera les paramètres propres à la fonction VDI ou 
   AES utilisée.
   Dans INTOUT, le VDI ou l'AES posera des données de retour.
   Dans PTSIN on range des coordonnées:ce tableau est utlisé par le VDI.
   Dans PTSOUT le VDI fournit en retour des coordonnées (avec certaines
   fonction).
   
  .On trouvera aussi 2 tableaux:  'ADDRIN' et 'ADDROUT' qui sont 
   spécifiques à l'AES et qui contiennent des adresses (pointant
   sur des données...). 

  .Le vecteur 'VDIPB' du segment DATA pointe successivement les adresses
   des tableaux: CONTROL,INTIN,PTSIN,INTOUT,PTSOUT qui sont utilisés par
   le VDI.

  .Il existe aussi un vecteur (AESPB) qui pointe sur les adresses des
   tableaux OPCODE,APVERS,INTIN,INTOUT,ADDRIN,ADDROUT et qui est uti-
   lisé par les fonctions de l'AES.

  Ce tableau est donc composé ainsi:


          BSS                 ;segment BSS

CONTROL:                      ;tableau CONTROL (':' car il pointe sur une
                              ;adresse et non pas sur une instruction...)
opcode    ds.w      1         ;1° adresse du tableau 'control':opcode
sptsin    ds.w      1         ;2° adresse:sptsin     
sptsout   ds.w      1         ;3° adresse:sptsout
sintin    ds.w      1         ;4° adresse:sintin
sintout   ds.w      1         ;5° adresse:sintout
idsfct    ds.w      1         ;6° adresse:idsfct
handle    ds.w      1         ;7° adresse:handle
          ds.w      10

;le tableau CONTROL a une taille de 54 octets.


GLOBAL:                       ;début du tableau GLOBAL
apvers    ds.w      1         ;1° adresse du tableau 'global':apvers
apcount   ds.w      1         ;2° adresse:apcount
apid      ds.w      1         ;3° adresse:apid
apprivate ds.l      1         ;4° adresse:apprivate
apptree   ds.l      1         ;5° adresse:apptree
ap1resv   ds.l      1         ;6° adresse:ap1resv
ap2resv   ds.l      1         ;7° adresse:ap2resv
ap3resv   ds.l      1         ;8° adresse:ap3resv
ap4resv   ds.l      1         ;9° adresse:ap4resv

;le tableau GLOBAL a une taille de 30 octets



intin     ds.w      128       ;tableau 'intin':128 mots
     
intout    ds.w      128       ;tableau 'intout':128 mots
     
ptsin     ds.w      128       ;tableau 'ptsint':128 mots

ptsout    ds.w      128       ;tableau 'ptsout':128 mots



addrin    ds.w      128       ;tableau 'addrin' (AES):128 mots

addrout   ds.w      128       ;tableau 'addrout' (AES):128 mots


grhandle  ds.w      1         ;ici on réserve 1 mot pour le handle


          ds.b      300       ;RESERVATIONS POUR SETBLOCK en 'PILE'
PILE      ds.b      1


          DATA                ;segment DATA

;le vecteur de l'AES

          ALIGN.W   ;adresse paire car ici se trouvent des L-M
     
aespb     dc.l      control,global,intin,intout,addrin,addrout

;le vecteur du VDI

          ALIGN.W   ;adresse paire car ici se trouvent des L-M

vdipb     dc.l      control,intin,ptsin,intout,ptsout

          END



 -  Ce tableau devra être inclu dans vos listings si vous utilisez des 
    fonctions du VDI ou de l'AES.
    Il se trouve dans le fichier :TABLEAU.L ,il vous suffira donc de 
    l'inclure à la fin de votre listing.

 -  Voilà maintenant la signification de chaque CHAMP (sous-parties)
    des tableaux CONTROL et GLOBAL:

    Tableau CONTROL:

    opcode  :(en CONTROL+0) =le code de la fonction à appeller
    sptsin  :(en CONTROL+2) =le nombre de couples de points dans PTSIN
    sptsout :(en CONTROL+4) =idem pour PTSOUT
    sintin  :(en CONTROL+6) =nombre de mots dans INTIN
    sintout :(en CONTROL+8) =idem pour INTOUT
    idsfct  :(en CONTROL+10)=nr° d'identification de la fonction 
    handle  :(en CONTROL+12)=nr° du handle
             

    Tableau GLOBAL

    apvers   :(en GLOBAL+0) =nr° de la version de l'AES en service
    apcount  :(en GLOBAL+2) =nombre maximum autorisé de programmes
                             simultanement en mémoire
    apid     :(en GLOBAL+4) =nr° de l'application en cours
    apprivate:(en GLOBAL+6) =selon la fonction
    apptree  :(en GLOBAL+10)=pointeur sur une structure d'arbre d'objets
    ap1resv  :(en GLOBAL+14)=réservé à des applications futures...
    ap2resv  :(en GLOBAL+18)=idem
    ap3resv  :(en GLOBAL+22)=idem
    ap4resv  :(en GLOBAL+26)=idem


 -  Mais avant de pouvoir utiliser les différentes fonctions du VDI ou 
    de l'AES, il faudra faire quelques initialisations.
    (Comme pour le GEMDOS avec SETBLOCK).

    Il faudra appeler les fonctions:APPL_INIT puis GRAF_HANDLE 
    pour initialiser l'AES.

    Il faudra appeler les fonctions:OPEN_SCREEN_ WORKSTATION puis
    pour initialiser le VDI.

 -  Pour appeller ces fonctions, nous allons passer les paramètres
    nécéssaires dans le tableau (aux bonnes adresses) des réserva-
    tions et nous appellerons le VDI avec:
    
    MOVE.L  #vdipb,d1    ;adresse du VECTEUR VDIPB dans d1
    MOVE    #$73,d0      ;mot=$73 dans d0
    TRAP    #2           ;appel du VDI
 
    ou l'AES avec:

    MOVE.L  #aespb,d1    ;adresse du VECTEUR AESPB dans d1
    MOVE    #$C8,d0      ;mot=$C8 dans d0
    TRAP    #2

    et cela après chaque fonction VDI ou AES que nous appelleront.
 

    La fonction OPEN_SCREEN_WORKSTATION permet d'ouvrir une station
    de travail en chargeant en mémoire le système de gestion graphique
    du VDI.

    Les paramètres à fournir sont:

    Dans opcode,1 MOT=100 (le CODE de la fonction)
    Dans sptsin ,1 MOT=0
    Dans sintin,1 MOT=11
    Dans handle,le MOT pointé par grhandle
    Dans intin jusqu'à intin+20, 1 MOT=1
  
    En réalité, les paramètres placés en INTIN, doivent donner les
    renseignements suivants:

     intin   =identification du périphérique à la carte mère
     intin+2 =type de ligne
     intin+4 =couleur de la ligne
     intin+6 =type de marquage
     intin+8 =couleur du marquage
     intin+10=jeu de caractère
     intin+12=couleur de l'écriture
     intin+14=type de remplissage
     intin+16=motif de remplissage
     intin+18=couleur du remplissage
     intin+20=coordonnées pour des drapeaux          

    Mais nous ne nous en servirons pas, nous mettons alors toutes ces
    valeurs à 1...


    La fonction APPL_INIT de l'AES permet d'initialiser l'AES.

    Les paramètres à fournir sont:

    Dans les 4 apresv,1 L-M=0 
    Dans opcode,1 MOT=10 (le CODE de la fonction)
    Dans sptsin,1 MOT=0
    Dans sptsout,1 MOT=1 
    Dans sintin,1 MOT=0
    Dans sintout,1 MOT=0
    
    La fonction GRAF_HANDLE de l'AES permet de donner un numéro 
    d'identification à notre programme.
    Ce numéro retourne dans INTOUT et nous le placerons en 'grhandle'.

    Les paramètres à passer sont:

    Dans opcode,1 MOT=77 (le CODE de la fonction)
    Dans sptsin,1 MOT=0
    Dans sptsout,1 MOT=5
    Dans sintin et sintout, 1 MOT=0

    Comme la fonctions OPEN_SCREEN_WORSTATION du VDI a besoin de ce nr°
    d'identification ( paramètre ), c'est par l'appel de l'AES qu'il
    faudra commencer.

    Après l'appel de la fonction GRAF_HANDLE de l'AES, nous poserons
    le nr° d'identification déposé en INTOUT en 'grhandle' avec:

    MOVE  INTOUT,GRHANDLE

    Nous allons aussi créer 2 MACROS instructions qui vont se charger
    d'appeller le VDI et l'AES.


VDI  MACRO                      ;macro d'appel du VDI
     MOVE.L    #VDIPB,d1        ;adresse du Vecteur VDIPB dans d1
     MOVE      #$73,d0          ;mot=$73 dans d0
     TRAP      #2               ;appel du GEM 
     ENDM                       ;fin de la macro

AES  MACRO                      ;macro d'appel de l'AES
     MOVE.L    #AESPB,d1        ;adresse du Vecteur AESPB dans d1
     MOVE      #$C8,D0          ;mot=$C8 dans d0
     TRAP      #2               ;appel du GEM   
     ENDM                       ;fin de la macro     


 - Le listing complet du programme d'initialisation pour l'AES et le
   VDI sera donc:
  

; initialisation du VDI et de l'AES 

        TEXT


VDI      MACRO                      
         move.l   #vdipb,d1        
         move     #$73,d0          
         trap     #2               
         ENDM                       

AES      MACRO                      
         move.l    #aespb,d1        
         move      #$C8,D0          
         trap      #2                  
         ENDM                       

;        APPL_INIT 


         move.l    #0,ap1resv
         move.l    #0,ap2resv
         move.l    #0,ap3resv
         move.l    #0,ap4resv
         move.w    #10,opcode
         move.w    #0,sptsin
         move.w    #1,sptsout
         move.w    #0,sintin
         move.w    #0,sintout
         AES                       ;-->AES
  
;         GRAF_HANDLE 

          move.w    #77,opcode
          move.w    #0,sptsin
          move.w    #5,sptsout
          move.w    #0,sintin
          move.w    #0,sintout
          AES                      ;-->AES

          move.w    intout,grhandle     ;On sauvgarde le HANDLE


;         OPEN VIRTUAL SCREEN WORKSTATION 

          move.w    #100,opcode         
          move.w    #0,sptsin
          move.w    #11,sptsout
          move.w    grhandle,handle     
          move.w    #1,intin            
          move.w    #1,intin+2
          move.w    #1,intin+4
          move.w    #1,intin+6
          move.w    #1,intin+8
          move.w    #1,intin+10
          move.w    #1,intin+12
          move.w    #1,intin+14
          move.w    #1,intin+16
          move.w    #1,intin+18
          move.w    #1,intin+20
          VDI                           ;-->VDI

          END


 Le listing de cette initialisation se trouve dans le fichier INIT_GEM.L
 

 - Tous vos programmes qui utilisent le VDI ou l'AES auront donc
   cette structure:


     TEXT
     
     INCLUDE   "INIT_TOS.L"   ;fichier de la macro SETBLOCK
     INCLUDE   "INIT_GEM.L"   ;fichier des initialisations du VDI/AES

     SETBLOCK                 ;réserve mémoire

     .         ;les instructions qui forment
     .         ;votre programme...
     .

     DATA

     .         ;les données initialisées
     .
    
     BSS

     INCLUDE   "TABLEAU.L"    ;le TABLEAU du VDI et de l'AES:
                              ;Contient aussi les réservations en 'PILE'
                              ;pour SETBLOCK...                        
     END



                       *** LES FONTIONS DU VDI ***
                       ---------------------------

 Vous voilà prèts à présent à utiliser les fonctions graphiques du VDI:
 
 Je vais citer les fonctions les plus intéressantes et vous donner pour
 chacunes d'elles les paramètres à passer dans le tableau: TABLEAU.L
 
 Je vous donnerais aussi les paramètres de retour si la fonction en
 fournit et si ils peuvent être utiles...


 
 TEXT:Permet l'édition d'un texte à des coordonnées (x,y)
 ----
 Paramètres:

 Opcode=8
 sptsin=1
 sintin=n
 handle=grhandle
 intin=la chaine de caractère composée de 'n' lettres   
 ptsin=x
 ptsin+2=y
 

 NB:La chaine de caractère doit se terminer par une valeur NULLE.
 --

 GRAPHIC TEXT COLOR:Permet de selectionner la couleur d'un texte graph.
 ------------------
 Paramètre:

 opcode=22
 sptsin=0
 sintin=1
 handle=grhandle
 intin=couleur choisie


 GRAPHIC TEXT SPECIAL EFFECTS:Permet de manipuler le type du texte graph.
 ----------------------------
 Le type du texte graphique est déposé en 'intin' sous la forme d'un mot,
 seuls les bits 0 à 5 du mot sont utilisés et permettent de choisir:

 nr° BIT:          Effet sur TEXT

 0                 caractères gras
 1                 caractères fins
 2                 caractères italiques
 3                 caractères soulignés
 4                 caractères 'light'
 5                 caractères 'outline'
  
 
 paramètres:

 opcode=106
 sptsin=0
 sintin=1
 handle=grhandle
 intin=vecteur bit

 
 CONTOUR FILL:Permet de remplir une surface à partir d'un point de départ
 ------------ de coordonnées (x,y)

 Paramètres:

 opcode=103
 sptsin=1
 sintin=1
 handle=grhandle
 intin=couleur du remplissage
 ptsin=x
 ptsin+2=y
 

 SET FILL COLOR INDEX:Détermine la couleur utilisée pour les fonctions de
 -------------------- remplissage.

 Paramètres:

 opcode=25
 sptsin=0
 sintin=1
 handle=grhandle
 intin=couleur de remplissage

 Paramètres de retour:

 intout=couleur de remplissage


 SET FILE INTERIOR:Permet de selectionner le type de remplissage pour 
 ----------------- les fonctions de remplissage

 Il existe 5 types de remplissages:
 
 0=pas de remplissage
 1=remplissage de type PLEIN avec la couleur selectionnée
 2=remplissage avec des motifs prédéfinis
 3=remplissage avec des HACHURES
 4=remplissage avec un motif redéfini par le programmeur

 Paramètres:

 opcode=23
 sptsin=0
 sintin=1
 handle=grhandle
 intin=type de remplissage (0-5)
 

 SET FILL STYLE:Permet de selectionner la matrice pour les fonctions de
 -------------- remplissage:36 motifs sont disponibles

 La matrice est la trame utilisée pour le remplissage de la surface:
 Elle peut ètre du type 3 (24 motifs) ou du type 2 (12 motifs) (voir
 la fonction SET FILL INTERIOR pour les 5 types disponibles)

 Paramètres:

 opcode=24
 sptsin=0
 sintin=1
 handle=grhandle
 intin=nr° motif (1-24) ou (1-12)


 SET WRITING MODE:Permet de selectionner le mode d'écriture de toutes les
 ---------------- éditions graphiques.

 En mode 1:mode AND, ce qui est en dessous est toujours effacé. 
 En mode 2:mode OR , on écrit seulement là o— il n'y a pas encore de 
           points et les vides sont toujours représentés.
 En mode 3:mode XOR ,on ne place des points que là o— il n'y en a pas
           encore et les points déjà occupés sont éffacés
 En mode 4:mode transparent inverse, on ne place que des points là o— il
           y en avait déjà et seulement si ils ne possèdent pas de cou-
           leur (permet d'obtenir un NEGATIF de la trame destination).
  

 Paramètres:

 opcode=32
 sptsin=0
 sintin=1
 handle=grhandle
 intin=mode graphique (1-4)


 FILL RECTANGLE:Rempli un rectangle définit ainsi:coordonnées du coin
 -------------- supérieur gauche (x1,y1),coordonnées du coin inférieur
                droit (x2,y2)

 Paramètres:
 
 opcode=114
 sptsin=2
 sintin=0 
 handle=grhandle
 ptsin  =x1
 ptsin+2=y1
 ptsin+4=x2
 ptsin+6=y2


 CIRCLE:Permet de dessiner un cercle de coordonnées (x,y) et de rayon R
 ------ à l'écran.

 
 Paramètres:

 opcode=11
 sptsin=3
 sintin=0
 idsfct=5
 handle=grhandle
 
 ptsin  =x
 ptsin+2=y
 ptsin+4=0
 ptsin+6=0
 ptsin+8=R
 ptsin+10=0



 - Voilà pour les fonctions du VDI, je n'ai bien sur pas présenté toutes
   les fonctions...
   Elles sont bien trop lentes et trop lourdes à exploiter pour pouvoir
   véritablement être dignes de votre attention...
   Je parlerais bientot des LINES_A, ce sont aussi des fonctions graphi-
   ques mais elles au moins sont très rapides.En attendant, vous pouvez
   regarder le listing d'un programme exemple qui illustre clairement
   l'utilisation des fonctions du VDI décrites ci-dessus.
  
   .Listing   :fichier VDI.L
   .éxecutable:fichier VDI.PRG

 NB:Si vous désirez utiliser une fonction du VDI dans une boucle, il 
 -- n'est pas nécessaire de réinitialiser tous les paramètres du tableau
    puisqu'ils ne sont pas effacés:il suffira donc de faire varier les
    paramètres qui doivent changer dans votre boucle puis d'appeller le
    VDI. 

   Ceux qui désirent malgré tout en savoir plus sur les fonctions du VDI
   ou de l'AES pourront se réfèrer au livre:
   'LE LIVRE DU GEM' de Micro Application.


   
    PIECHOCKI   Laurent
    8, Impasse Bellevue                Suite dans le fichier LINEA.DOC
    57980     TENTELING                                      ---------



 




Back to ASM_Tutorial