<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.temlib.org/AtariForumWiki/index.php?action=history&amp;feed=atom&amp;title=Pl2_VDI.DOC</id>
	<title>Pl2 VDI.DOC - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.temlib.org/AtariForumWiki/index.php?action=history&amp;feed=atom&amp;title=Pl2_VDI.DOC"/>
	<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=Pl2_VDI.DOC&amp;action=history"/>
	<updated>2026-07-27T09:45:02Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.2</generator>
	<entry>
		<id>https://www.temlib.org/AtariForumWiki/index.php?title=Pl2_VDI.DOC&amp;diff=16137&amp;oldid=prev</id>
		<title>&gt;Wongck at 15:19, 12 October 2011</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=Pl2_VDI.DOC&amp;diff=16137&amp;oldid=prev"/>
		<updated>2011-10-12T15:19:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:19, 12 October 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l609&quot;&gt;Line 609:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 609:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Back to [[ASM_Tutorial]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Back to [[ASM_Tutorial]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Programming&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ASSEMBLEUR 68000 sur ATARI ST Part 2&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>&gt;Wongck</name></author>
	</entry>
	<entry>
		<id>https://www.temlib.org/AtariForumWiki/index.php?title=Pl2_VDI.DOC&amp;diff=16136&amp;oldid=prev</id>
		<title>&gt;Silver Surfer: Added category</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=Pl2_VDI.DOC&amp;diff=16136&amp;oldid=prev"/>
		<updated>2009-05-02T20:44:17Z</updated>

		<summary type="html">&lt;p&gt;Added category&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:44, 2 May 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l609&quot;&gt;Line 609:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 609:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Back to [[ASM_Tutorial]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Back to [[ASM_Tutorial]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Programming]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>&gt;Silver Surfer</name></author>
	</entry>
	<entry>
		<id>https://www.temlib.org/AtariForumWiki/index.php?title=Pl2_VDI.DOC&amp;diff=16135&amp;oldid=prev</id>
		<title>&gt;Zorro 2 at 15:06, 9 October 2006</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=Pl2_VDI.DOC&amp;diff=16135&amp;oldid=prev"/>
		<updated>2006-10-09T15:06:04Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                         --------------------&lt;br /&gt;
                             CHAPITRE NÂ°7:&lt;br /&gt;
&lt;br /&gt;
                               LE   VDI &lt;br /&gt;
     &lt;br /&gt;
                         --------------------     &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                         *** INTRODUCTION ***&lt;br /&gt;
                         --------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- Le VDI est un ensemble de fonctions (tout comme le Gemdos,le bios et&lt;br /&gt;
  l'xbios) graphiques:&lt;br /&gt;
&lt;br /&gt;
  En appellant les fonctions adequates, on pourra donc par exemple affi-&lt;br /&gt;
  cher un cercle,un polygone,remplir des surfaces etc...&lt;br /&gt;
&lt;br /&gt;
  Je vais aussi Ãªtre amenâ€š Ã  parler des fonctions de l'AES, celles-ci ne&lt;br /&gt;
  seront pas â€študiâ€šes dans cet ouvrage (vu la complexitâ€š de leur mise en&lt;br /&gt;
  oeuvre).&lt;br /&gt;
  Les fonctions de l'AES s'occupent essentiellement de la gestion de&lt;br /&gt;
  l'â€šcran et de la souris.(FenÃ¨tres,gestion des objets...)&lt;br /&gt;
 &lt;br /&gt;
- Il faudra fournir un certain nombre de paramÃ¨tres aux fonctions du VDI&lt;br /&gt;
  pour pouvoir obtenir l'effet dâ€šsirâ€š:&lt;br /&gt;
  La transmission des paramÃ¨tres se fait par l'intermâ€šdiaire d'un TABLEAU:&lt;br /&gt;
  (Un TABLEAU n'est rien d'autre qu'un espace de la mâ€šmoire qu'on a râ€šser-&lt;br /&gt;
  vâ€š Ã  partir d'une adresse (avec DS.x   place) ).&lt;br /&gt;
  Ce tableau est commun aux fonctions du VDI et de l'AES.&lt;br /&gt;
  Le tableau se trouve dans le segment BSS et c'est Ã  certaines de ses ad-&lt;br /&gt;
  resses qu'on placera les paramÃ¨tres. &lt;br /&gt;
  Dans le segment DATA, on devra aussi poser un label qui pointe sur les&lt;br /&gt;
  diffâ€šrentes adresses du tableau.(Un label qui pointe sur des adresses&lt;br /&gt;
  en zone DATA est gâ€šnâ€šralement appellâ€š VECTEUR...)  &lt;br /&gt;
  Dans le tableau qui regroupe toutes les râ€šservations pour les fonctions&lt;br /&gt;
  du VDI et de l'AES, on distingue plusieurs groupes de tableaux:&lt;br /&gt;
&lt;br /&gt;
  .Le tableau pointâ€š par l'adresse 'CONTROL' (pour le VDI et l'AES)&lt;br /&gt;
   :c'est dans ce tableau qu'on dâ€šposera le code de la fonction et&lt;br /&gt;
   les dimensions des tableaux 'intin','ptsin','intout','ptsout'.&lt;br /&gt;
 &lt;br /&gt;
  .Celui pointâ€š par l'adresse 'GLOBAL' (pour l'AES)&lt;br /&gt;
   :dâ€štails plus loin...&lt;br /&gt;
&lt;br /&gt;
  .4 tableaux pointâ€šs par les adresses 'INTIN','INTOUT','PTSIN','PTSOUT'  &lt;br /&gt;
   Dans les tableaux de type 'IN', l'utilisateur peut fournir des para-&lt;br /&gt;
   mÃ¨tres et dans ceux du type 'OUT', certaines fonctions du VDI ou de&lt;br /&gt;
   l'AES retournent des valeurs. &lt;br /&gt;
   Dans INTIN on placera les paramÃ¨tres propres Ã  la fonction VDI ou &lt;br /&gt;
   AES utilisâ€še.&lt;br /&gt;
   Dans INTOUT, le VDI ou l'AES posera des donnâ€šes de retour.&lt;br /&gt;
   Dans PTSIN on range des coordonnâ€šes:ce tableau est utlisâ€š par le VDI.&lt;br /&gt;
   Dans PTSOUT le VDI fournit en retour des coordonnâ€šes (avec certaines&lt;br /&gt;
   fonction).&lt;br /&gt;
   &lt;br /&gt;
  .On trouvera aussi 2 tableaux:  'ADDRIN' et 'ADDROUT' qui sont &lt;br /&gt;
   spâ€šcifiques Ã  l'AES et qui contiennent des adresses (pointant&lt;br /&gt;
   sur des donnâ€šes...). &lt;br /&gt;
&lt;br /&gt;
  .Le vecteur 'VDIPB' du segment DATA pointe successivement les adresses&lt;br /&gt;
   des tableaux: CONTROL,INTIN,PTSIN,INTOUT,PTSOUT qui sont utilisâ€šs par&lt;br /&gt;
   le VDI.&lt;br /&gt;
&lt;br /&gt;
  .Il existe aussi un vecteur (AESPB) qui pointe sur les adresses des&lt;br /&gt;
   tableaux OPCODE,APVERS,INTIN,INTOUT,ADDRIN,ADDROUT et qui est uti-&lt;br /&gt;
   lisâ€š par les fonctions de l'AES.&lt;br /&gt;
&lt;br /&gt;
  Ce tableau est donc composâ€š ainsi:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
          BSS                 ;segment BSS&lt;br /&gt;
&lt;br /&gt;
CONTROL:                      ;tableau CONTROL (':' car il pointe sur une&lt;br /&gt;
                              ;adresse et non pas sur une instruction...)&lt;br /&gt;
opcode    ds.w      1         ;1Â° adresse du tableau 'control':opcode&lt;br /&gt;
sptsin    ds.w      1         ;2Â° adresse:sptsin     &lt;br /&gt;
sptsout   ds.w      1         ;3Â° adresse:sptsout&lt;br /&gt;
sintin    ds.w      1         ;4Â° adresse:sintin&lt;br /&gt;
sintout   ds.w      1         ;5Â° adresse:sintout&lt;br /&gt;
idsfct    ds.w      1         ;6Â° adresse:idsfct&lt;br /&gt;
handle    ds.w      1         ;7Â° adresse:handle&lt;br /&gt;
          ds.w      10&lt;br /&gt;
&lt;br /&gt;
;le tableau CONTROL a une taille de 54 octets.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GLOBAL:                       ;dâ€šbut du tableau GLOBAL&lt;br /&gt;
apvers    ds.w      1         ;1Â° adresse du tableau 'global':apvers&lt;br /&gt;
apcount   ds.w      1         ;2Â° adresse:apcount&lt;br /&gt;
apid      ds.w      1         ;3Â° adresse:apid&lt;br /&gt;
apprivate ds.l      1         ;4Â° adresse:apprivate&lt;br /&gt;
apptree   ds.l      1         ;5Â° adresse:apptree&lt;br /&gt;
ap1resv   ds.l      1         ;6Â° adresse:ap1resv&lt;br /&gt;
ap2resv   ds.l      1         ;7Â° adresse:ap2resv&lt;br /&gt;
ap3resv   ds.l      1         ;8Â° adresse:ap3resv&lt;br /&gt;
ap4resv   ds.l      1         ;9Â° adresse:ap4resv&lt;br /&gt;
&lt;br /&gt;
;le tableau GLOBAL a une taille de 30 octets&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
intin     ds.w      128       ;tableau 'intin':128 mots&lt;br /&gt;
     &lt;br /&gt;
intout    ds.w      128       ;tableau 'intout':128 mots&lt;br /&gt;
     &lt;br /&gt;
ptsin     ds.w      128       ;tableau 'ptsint':128 mots&lt;br /&gt;
&lt;br /&gt;
ptsout    ds.w      128       ;tableau 'ptsout':128 mots&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
addrin    ds.w      128       ;tableau 'addrin' (AES):128 mots&lt;br /&gt;
&lt;br /&gt;
addrout   ds.w      128       ;tableau 'addrout' (AES):128 mots&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
grhandle  ds.w      1         ;ici on râ€šserve 1 mot pour le handle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
          ds.b      300       ;RESERVATIONS POUR SETBLOCK en 'PILE'&lt;br /&gt;
PILE      ds.b      1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
          DATA                ;segment DATA&lt;br /&gt;
&lt;br /&gt;
;le vecteur de l'AES&lt;br /&gt;
&lt;br /&gt;
          ALIGN.W   ;adresse paire car ici se trouvent des L-M&lt;br /&gt;
     &lt;br /&gt;
aespb     dc.l      control,global,intin,intout,addrin,addrout&lt;br /&gt;
&lt;br /&gt;
;le vecteur du VDI&lt;br /&gt;
&lt;br /&gt;
          ALIGN.W   ;adresse paire car ici se trouvent des L-M&lt;br /&gt;
&lt;br /&gt;
vdipb     dc.l      control,intin,ptsin,intout,ptsout&lt;br /&gt;
&lt;br /&gt;
          END&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 -  Ce tableau devra Ãªtre inclu dans vos listings si vous utilisez des &lt;br /&gt;
    fonctions du VDI ou de l'AES.&lt;br /&gt;
    Il se trouve dans le fichier :TABLEAU.L ,il vous suffira donc de &lt;br /&gt;
    l'inclure Ã  la fin de votre listing.&lt;br /&gt;
&lt;br /&gt;
 -  VoilÃ  maintenant la signification de chaque CHAMP (sous-parties)&lt;br /&gt;
    des tableaux CONTROL et GLOBAL:&lt;br /&gt;
&lt;br /&gt;
    Tableau CONTROL:&lt;br /&gt;
&lt;br /&gt;
    opcode  :(en CONTROL+0) =le code de la fonction Ã  appeller&lt;br /&gt;
    sptsin  :(en CONTROL+2) =le nombre de couples de points dans PTSIN&lt;br /&gt;
    sptsout :(en CONTROL+4) =idem pour PTSOUT&lt;br /&gt;
    sintin  :(en CONTROL+6) =nombre de mots dans INTIN&lt;br /&gt;
    sintout :(en CONTROL+8) =idem pour INTOUT&lt;br /&gt;
    idsfct  :(en CONTROL+10)=nrÂ° d'identification de la fonction &lt;br /&gt;
    handle  :(en CONTROL+12)=nrÂ° du handle&lt;br /&gt;
             &lt;br /&gt;
&lt;br /&gt;
    Tableau GLOBAL&lt;br /&gt;
&lt;br /&gt;
    apvers   :(en GLOBAL+0) =nrÂ° de la version de l'AES en service&lt;br /&gt;
    apcount  :(en GLOBAL+2) =nombre maximum autorisâ€š de programmes&lt;br /&gt;
                             simultanement en mâ€šmoire&lt;br /&gt;
    apid     :(en GLOBAL+4) =nrÂ° de l'application en cours&lt;br /&gt;
    apprivate:(en GLOBAL+6) =selon la fonction&lt;br /&gt;
    apptree  :(en GLOBAL+10)=pointeur sur une structure d'arbre d'objets&lt;br /&gt;
    ap1resv  :(en GLOBAL+14)=râ€šservâ€š Ã  des applications futures...&lt;br /&gt;
    ap2resv  :(en GLOBAL+18)=idem&lt;br /&gt;
    ap3resv  :(en GLOBAL+22)=idem&lt;br /&gt;
    ap4resv  :(en GLOBAL+26)=idem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 -  Mais avant de pouvoir utiliser les diffâ€šrentes fonctions du VDI ou &lt;br /&gt;
    de l'AES, il faudra faire quelques initialisations.&lt;br /&gt;
    (Comme pour le GEMDOS avec SETBLOCK).&lt;br /&gt;
&lt;br /&gt;
    Il faudra appeler les fonctions:APPL_INIT puis GRAF_HANDLE &lt;br /&gt;
    pour initialiser l'AES.&lt;br /&gt;
&lt;br /&gt;
    Il faudra appeler les fonctions:OPEN_SCREEN_ WORKSTATION puis&lt;br /&gt;
    pour initialiser le VDI.&lt;br /&gt;
&lt;br /&gt;
 -  Pour appeller ces fonctions, nous allons passer les paramÃ¨tres&lt;br /&gt;
    nâ€šcâ€šssaires dans le tableau (aux bonnes adresses) des râ€šserva-&lt;br /&gt;
    tions et nous appellerons le VDI avec:&lt;br /&gt;
    &lt;br /&gt;
    MOVE.L  #vdipb,d1    ;adresse du VECTEUR VDIPB dans d1&lt;br /&gt;
    MOVE    #$73,d0      ;mot=$73 dans d0&lt;br /&gt;
    TRAP    #2           ;appel du VDI&lt;br /&gt;
 &lt;br /&gt;
    ou l'AES avec:&lt;br /&gt;
&lt;br /&gt;
    MOVE.L  #aespb,d1    ;adresse du VECTEUR AESPB dans d1&lt;br /&gt;
    MOVE    #$C8,d0      ;mot=$C8 dans d0&lt;br /&gt;
    TRAP    #2&lt;br /&gt;
&lt;br /&gt;
    et cela aprÃ¨s chaque fonction VDI ou AES que nous appelleront.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
    La fonction OPEN_SCREEN_WORKSTATION permet d'ouvrir une station&lt;br /&gt;
    de travail en chargeant en mâ€šmoire le systÃ¨me de gestion graphique&lt;br /&gt;
    du VDI.&lt;br /&gt;
&lt;br /&gt;
    Les paramÃ¨tres Ã  fournir sont:&lt;br /&gt;
&lt;br /&gt;
    Dans opcode,1 MOT=100 (le CODE de la fonction)&lt;br /&gt;
    Dans sptsin ,1 MOT=0&lt;br /&gt;
    Dans sintin,1 MOT=11&lt;br /&gt;
    Dans handle,le MOT pointâ€š par grhandle&lt;br /&gt;
    Dans intin jusqu'Ã  intin+20, 1 MOT=1&lt;br /&gt;
  &lt;br /&gt;
    En râ€šalitâ€š, les paramÃ¨tres placâ€šs en INTIN, doivent donner les&lt;br /&gt;
    renseignements suivants:&lt;br /&gt;
&lt;br /&gt;
     intin   =identification du pâ€šriphâ€šrique Ã  la carte mÃ¨re&lt;br /&gt;
     intin+2 =type de ligne&lt;br /&gt;
     intin+4 =couleur de la ligne&lt;br /&gt;
     intin+6 =type de marquage&lt;br /&gt;
     intin+8 =couleur du marquage&lt;br /&gt;
     intin+10=jeu de caractÃ¨re&lt;br /&gt;
     intin+12=couleur de l'â€šcriture&lt;br /&gt;
     intin+14=type de remplissage&lt;br /&gt;
     intin+16=motif de remplissage&lt;br /&gt;
     intin+18=couleur du remplissage&lt;br /&gt;
     intin+20=coordonnâ€šes pour des drapeaux          &lt;br /&gt;
&lt;br /&gt;
    Mais nous ne nous en servirons pas, nous mettons alors toutes ces&lt;br /&gt;
    valeurs Ã  1...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    La fonction APPL_INIT de l'AES permet d'initialiser l'AES.&lt;br /&gt;
&lt;br /&gt;
    Les paramÃ¨tres Ã  fournir sont:&lt;br /&gt;
&lt;br /&gt;
    Dans les 4 apresv,1 L-M=0 &lt;br /&gt;
    Dans opcode,1 MOT=10 (le CODE de la fonction)&lt;br /&gt;
    Dans sptsin,1 MOT=0&lt;br /&gt;
    Dans sptsout,1 MOT=1 &lt;br /&gt;
    Dans sintin,1 MOT=0&lt;br /&gt;
    Dans sintout,1 MOT=0&lt;br /&gt;
    &lt;br /&gt;
    La fonction GRAF_HANDLE de l'AES permet de donner un numâ€šro &lt;br /&gt;
    d'identification Ã  notre programme.&lt;br /&gt;
    Ce numâ€šro retourne dans INTOUT et nous le placerons en 'grhandle'.&lt;br /&gt;
&lt;br /&gt;
    Les paramÃ¨tres Ã  passer sont:&lt;br /&gt;
&lt;br /&gt;
    Dans opcode,1 MOT=77 (le CODE de la fonction)&lt;br /&gt;
    Dans sptsin,1 MOT=0&lt;br /&gt;
    Dans sptsout,1 MOT=5&lt;br /&gt;
    Dans sintin et sintout, 1 MOT=0&lt;br /&gt;
&lt;br /&gt;
    Comme la fonctions OPEN_SCREEN_WORSTATION du VDI a besoin de ce nrÂ°&lt;br /&gt;
    d'identification ( paramÃ¨tre ), c'est par l'appel de l'AES qu'il&lt;br /&gt;
    faudra commencer.&lt;br /&gt;
&lt;br /&gt;
    AprÃ¨s l'appel de la fonction GRAF_HANDLE de l'AES, nous poserons&lt;br /&gt;
    le nrÂ° d'identification dâ€šposâ€š en INTOUT en 'grhandle' avec:&lt;br /&gt;
&lt;br /&gt;
    MOVE  INTOUT,GRHANDLE&lt;br /&gt;
&lt;br /&gt;
    Nous allons aussi crâ€šer 2 MACROS instructions qui vont se charger&lt;br /&gt;
    d'appeller le VDI et l'AES.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VDI  MACRO                      ;macro d'appel du VDI&lt;br /&gt;
     MOVE.L    #VDIPB,d1        ;adresse du Vecteur VDIPB dans d1&lt;br /&gt;
     MOVE      #$73,d0          ;mot=$73 dans d0&lt;br /&gt;
     TRAP      #2               ;appel du GEM &lt;br /&gt;
     ENDM                       ;fin de la macro&lt;br /&gt;
&lt;br /&gt;
AES  MACRO                      ;macro d'appel de l'AES&lt;br /&gt;
     MOVE.L    #AESPB,d1        ;adresse du Vecteur AESPB dans d1&lt;br /&gt;
     MOVE      #$C8,D0          ;mot=$C8 dans d0&lt;br /&gt;
     TRAP      #2               ;appel du GEM   &lt;br /&gt;
     ENDM                       ;fin de la macro     &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 - Le listing complet du programme d'initialisation pour l'AES et le&lt;br /&gt;
   VDI sera donc:&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
; initialisation du VDI et de l'AES &lt;br /&gt;
&lt;br /&gt;
        TEXT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VDI      MACRO                      &lt;br /&gt;
         move.l   #vdipb,d1        &lt;br /&gt;
         move     #$73,d0          &lt;br /&gt;
         trap     #2               &lt;br /&gt;
         ENDM                       &lt;br /&gt;
&lt;br /&gt;
AES      MACRO                      &lt;br /&gt;
         move.l    #aespb,d1        &lt;br /&gt;
         move      #$C8,D0          &lt;br /&gt;
         trap      #2                  &lt;br /&gt;
         ENDM                       &lt;br /&gt;
&lt;br /&gt;
;        APPL_INIT &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
         move.l    #0,ap1resv&lt;br /&gt;
         move.l    #0,ap2resv&lt;br /&gt;
         move.l    #0,ap3resv&lt;br /&gt;
         move.l    #0,ap4resv&lt;br /&gt;
         move.w    #10,opcode&lt;br /&gt;
         move.w    #0,sptsin&lt;br /&gt;
         move.w    #1,sptsout&lt;br /&gt;
         move.w    #0,sintin&lt;br /&gt;
         move.w    #0,sintout&lt;br /&gt;
         AES                       ;--&amp;gt;AES&lt;br /&gt;
  &lt;br /&gt;
;         GRAF_HANDLE &lt;br /&gt;
&lt;br /&gt;
          move.w    #77,opcode&lt;br /&gt;
          move.w    #0,sptsin&lt;br /&gt;
          move.w    #5,sptsout&lt;br /&gt;
          move.w    #0,sintin&lt;br /&gt;
          move.w    #0,sintout&lt;br /&gt;
          AES                      ;--&amp;gt;AES&lt;br /&gt;
&lt;br /&gt;
          move.w    intout,grhandle     ;On sauvgarde le HANDLE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;         OPEN VIRTUAL SCREEN WORKSTATION &lt;br /&gt;
&lt;br /&gt;
          move.w    #100,opcode         &lt;br /&gt;
          move.w    #0,sptsin&lt;br /&gt;
          move.w    #11,sptsout&lt;br /&gt;
          move.w    grhandle,handle     &lt;br /&gt;
          move.w    #1,intin            &lt;br /&gt;
          move.w    #1,intin+2&lt;br /&gt;
          move.w    #1,intin+4&lt;br /&gt;
          move.w    #1,intin+6&lt;br /&gt;
          move.w    #1,intin+8&lt;br /&gt;
          move.w    #1,intin+10&lt;br /&gt;
          move.w    #1,intin+12&lt;br /&gt;
          move.w    #1,intin+14&lt;br /&gt;
          move.w    #1,intin+16&lt;br /&gt;
          move.w    #1,intin+18&lt;br /&gt;
          move.w    #1,intin+20&lt;br /&gt;
          VDI                           ;--&amp;gt;VDI&lt;br /&gt;
&lt;br /&gt;
          END&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Le listing de cette initialisation se trouve dans le fichier INIT_GEM.L&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 - Tous vos programmes qui utilisent le VDI ou l'AES auront donc&lt;br /&gt;
   cette structure:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     TEXT&lt;br /&gt;
     &lt;br /&gt;
     INCLUDE   &amp;quot;INIT_TOS.L&amp;quot;   ;fichier de la macro SETBLOCK&lt;br /&gt;
     INCLUDE   &amp;quot;INIT_GEM.L&amp;quot;   ;fichier des initialisations du VDI/AES&lt;br /&gt;
&lt;br /&gt;
     SETBLOCK                 ;râ€šserve mâ€šmoire&lt;br /&gt;
&lt;br /&gt;
     .         ;les instructions qui forment&lt;br /&gt;
     .         ;votre programme...&lt;br /&gt;
     .&lt;br /&gt;
&lt;br /&gt;
     DATA&lt;br /&gt;
&lt;br /&gt;
     .         ;les donnâ€šes initialisâ€šes&lt;br /&gt;
     .&lt;br /&gt;
    &lt;br /&gt;
     BSS&lt;br /&gt;
&lt;br /&gt;
     INCLUDE   &amp;quot;TABLEAU.L&amp;quot;    ;le TABLEAU du VDI et de l'AES:&lt;br /&gt;
                              ;Contient aussi les râ€šservations en 'PILE'&lt;br /&gt;
                              ;pour SETBLOCK...                        &lt;br /&gt;
     END&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       *** LES FONTIONS DU VDI ***&lt;br /&gt;
                       ---------------------------&lt;br /&gt;
&lt;br /&gt;
 Vous voilÃ  prÃ¨ts Ã  prâ€šsent Ã  utiliser les fonctions graphiques du VDI:&lt;br /&gt;
 &lt;br /&gt;
 Je vais citer les fonctions les plus intâ€šressantes et vous donner pour&lt;br /&gt;
 chacunes d'elles les paramÃ¨tres Ã  passer dans le tableau: TABLEAU.L&lt;br /&gt;
 &lt;br /&gt;
 Je vous donnerais aussi les paramÃ¨tres de retour si la fonction en&lt;br /&gt;
 fournit et si ils peuvent Ãªtre utiles...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 TEXT:Permet l'â€šdition d'un texte Ã  des coordonnâ€šes (x,y)&lt;br /&gt;
 ----&lt;br /&gt;
 ParamÃ¨tres:&lt;br /&gt;
&lt;br /&gt;
 Opcode=8&lt;br /&gt;
 sptsin=1&lt;br /&gt;
 sintin=n&lt;br /&gt;
 handle=grhandle&lt;br /&gt;
 intin=la chaine de caractÃ¨re composâ€še de 'n' lettres   &lt;br /&gt;
 ptsin=x&lt;br /&gt;
 ptsin+2=y&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 NB:La chaine de caractÃ¨re doit se terminer par une valeur NULLE.&lt;br /&gt;
 --&lt;br /&gt;
&lt;br /&gt;
 GRAPHIC TEXT COLOR:Permet de selectionner la couleur d'un texte graph.&lt;br /&gt;
 ------------------&lt;br /&gt;
 ParamÃ¨tre:&lt;br /&gt;
&lt;br /&gt;
 opcode=22&lt;br /&gt;
 sptsin=0&lt;br /&gt;
 sintin=1&lt;br /&gt;
 handle=grhandle&lt;br /&gt;
 intin=couleur choisie&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 GRAPHIC TEXT SPECIAL EFFECTS:Permet de manipuler le type du texte graph.&lt;br /&gt;
 ----------------------------&lt;br /&gt;
 Le type du texte graphique est dâ€šposâ€š en 'intin' sous la forme d'un mot,&lt;br /&gt;
 seuls les bits 0 Ã  5 du mot sont utilisâ€šs et permettent de choisir:&lt;br /&gt;
&lt;br /&gt;
 nrÂ° BIT:          Effet sur TEXT&lt;br /&gt;
&lt;br /&gt;
 0                 caractÃ¨res gras&lt;br /&gt;
 1                 caractÃ¨res fins&lt;br /&gt;
 2                 caractÃ¨res italiques&lt;br /&gt;
 3                 caractÃ¨res soulignâ€šs&lt;br /&gt;
 4                 caractÃ¨res 'light'&lt;br /&gt;
 5                 caractÃ¨res 'outline'&lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 paramÃ¨tres:&lt;br /&gt;
&lt;br /&gt;
 opcode=106&lt;br /&gt;
 sptsin=0&lt;br /&gt;
 sintin=1&lt;br /&gt;
 handle=grhandle&lt;br /&gt;
 intin=vecteur bit&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 CONTOUR FILL:Permet de remplir une surface Ã  partir d'un point de dâ€špart&lt;br /&gt;
 ------------ de coordonnâ€šes (x,y)&lt;br /&gt;
&lt;br /&gt;
 ParamÃ¨tres:&lt;br /&gt;
&lt;br /&gt;
 opcode=103&lt;br /&gt;
 sptsin=1&lt;br /&gt;
 sintin=1&lt;br /&gt;
 handle=grhandle&lt;br /&gt;
 intin=couleur du remplissage&lt;br /&gt;
 ptsin=x&lt;br /&gt;
 ptsin+2=y&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 SET FILL COLOR INDEX:Dâ€štermine la couleur utilisâ€še pour les fonctions de&lt;br /&gt;
 -------------------- remplissage.&lt;br /&gt;
&lt;br /&gt;
 ParamÃ¨tres:&lt;br /&gt;
&lt;br /&gt;
 opcode=25&lt;br /&gt;
 sptsin=0&lt;br /&gt;
 sintin=1&lt;br /&gt;
 handle=grhandle&lt;br /&gt;
 intin=couleur de remplissage&lt;br /&gt;
&lt;br /&gt;
 ParamÃ¨tres de retour:&lt;br /&gt;
&lt;br /&gt;
 intout=couleur de remplissage&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 SET FILE INTERIOR:Permet de selectionner le type de remplissage pour &lt;br /&gt;
 ----------------- les fonctions de remplissage&lt;br /&gt;
&lt;br /&gt;
 Il existe 5 types de remplissages:&lt;br /&gt;
 &lt;br /&gt;
 0=pas de remplissage&lt;br /&gt;
 1=remplissage de type PLEIN avec la couleur selectionnâ€še&lt;br /&gt;
 2=remplissage avec des motifs prâ€šdâ€šfinis&lt;br /&gt;
 3=remplissage avec des HACHURES&lt;br /&gt;
 4=remplissage avec un motif redâ€šfini par le programmeur&lt;br /&gt;
&lt;br /&gt;
 ParamÃ¨tres:&lt;br /&gt;
&lt;br /&gt;
 opcode=23&lt;br /&gt;
 sptsin=0&lt;br /&gt;
 sintin=1&lt;br /&gt;
 handle=grhandle&lt;br /&gt;
 intin=type de remplissage (0-5)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 SET FILL STYLE:Permet de selectionner la matrice pour les fonctions de&lt;br /&gt;
 -------------- remplissage:36 motifs sont disponibles&lt;br /&gt;
&lt;br /&gt;
 La matrice est la trame utilisâ€še pour le remplissage de la surface:&lt;br /&gt;
 Elle peut Ã¨tre du type 3 (24 motifs) ou du type 2 (12 motifs) (voir&lt;br /&gt;
 la fonction SET FILL INTERIOR pour les 5 types disponibles)&lt;br /&gt;
&lt;br /&gt;
 ParamÃ¨tres:&lt;br /&gt;
&lt;br /&gt;
 opcode=24&lt;br /&gt;
 sptsin=0&lt;br /&gt;
 sintin=1&lt;br /&gt;
 handle=grhandle&lt;br /&gt;
 intin=nrÂ° motif (1-24) ou (1-12)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 SET WRITING MODE:Permet de selectionner le mode d'â€šcriture de toutes les&lt;br /&gt;
 ---------------- â€šditions graphiques.&lt;br /&gt;
&lt;br /&gt;
 En mode 1:mode AND, ce qui est en dessous est toujours effacâ€š. &lt;br /&gt;
 En mode 2:mode OR , on â€šcrit seulement lÃ  oâ€” il n'y a pas encore de &lt;br /&gt;
           points et les vides sont toujours reprâ€šsentâ€šs.&lt;br /&gt;
 En mode 3:mode XOR ,on ne place des points que lÃ  oâ€” il n'y en a pas&lt;br /&gt;
           encore et les points dâ€šjÃ  occupâ€šs sont â€šffacâ€šs&lt;br /&gt;
 En mode 4:mode transparent inverse, on ne place que des points lÃ  oâ€” il&lt;br /&gt;
           y en avait dâ€šjÃ  et seulement si ils ne possÃ¨dent pas de cou-&lt;br /&gt;
           leur (permet d'obtenir un NEGATIF de la trame destination).&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
 ParamÃ¨tres:&lt;br /&gt;
&lt;br /&gt;
 opcode=32&lt;br /&gt;
 sptsin=0&lt;br /&gt;
 sintin=1&lt;br /&gt;
 handle=grhandle&lt;br /&gt;
 intin=mode graphique (1-4)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 FILL RECTANGLE:Rempli un rectangle dâ€šfinit ainsi:coordonnâ€šes du coin&lt;br /&gt;
 -------------- supâ€šrieur gauche (x1,y1),coordonnâ€šes du coin infâ€šrieur&lt;br /&gt;
                droit (x2,y2)&lt;br /&gt;
&lt;br /&gt;
 ParamÃ¨tres:&lt;br /&gt;
 &lt;br /&gt;
 opcode=114&lt;br /&gt;
 sptsin=2&lt;br /&gt;
 sintin=0 &lt;br /&gt;
 handle=grhandle&lt;br /&gt;
 ptsin  =x1&lt;br /&gt;
 ptsin+2=y1&lt;br /&gt;
 ptsin+4=x2&lt;br /&gt;
 ptsin+6=y2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 CIRCLE:Permet de dessiner un cercle de coordonnâ€šes (x,y) et de rayon R&lt;br /&gt;
 ------ Ã  l'â€šcran.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 ParamÃ¨tres:&lt;br /&gt;
&lt;br /&gt;
 opcode=11&lt;br /&gt;
 sptsin=3&lt;br /&gt;
 sintin=0&lt;br /&gt;
 idsfct=5&lt;br /&gt;
 handle=grhandle&lt;br /&gt;
 &lt;br /&gt;
 ptsin  =x&lt;br /&gt;
 ptsin+2=y&lt;br /&gt;
 ptsin+4=0&lt;br /&gt;
 ptsin+6=0&lt;br /&gt;
 ptsin+8=R&lt;br /&gt;
 ptsin+10=0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 - VoilÃ  pour les fonctions du VDI, je n'ai bien sur pas prâ€šsentâ€š toutes&lt;br /&gt;
   les fonctions...&lt;br /&gt;
   Elles sont bien trop lentes et trop lourdes Ã  exploiter pour pouvoir&lt;br /&gt;
   vâ€šritablement Ãªtre dignes de votre attention...&lt;br /&gt;
   Je parlerais bientot des LINES_A, ce sont aussi des fonctions graphi-&lt;br /&gt;
   ques mais elles au moins sont trÃ¨s rapides.En attendant, vous pouvez&lt;br /&gt;
   regarder le listing d'un programme exemple qui illustre clairement&lt;br /&gt;
   l'utilisation des fonctions du VDI dâ€šcrites ci-dessus.&lt;br /&gt;
  &lt;br /&gt;
   .Listing   :fichier VDI.L&lt;br /&gt;
   .â€šxecutable:fichier VDI.PRG&lt;br /&gt;
&lt;br /&gt;
 NB:Si vous dâ€šsirez utiliser une fonction du VDI dans une boucle, il &lt;br /&gt;
 -- n'est pas nâ€šcessaire de râ€šinitialiser tous les paramÃ¨tres du tableau&lt;br /&gt;
    puisqu'ils ne sont pas effacâ€šs:il suffira donc de faire varier les&lt;br /&gt;
    paramÃ¨tres qui doivent changer dans votre boucle puis d'appeller le&lt;br /&gt;
    VDI. &lt;br /&gt;
&lt;br /&gt;
   Ceux qui dâ€šsirent malgrâ€š tout en savoir plus sur les fonctions du VDI&lt;br /&gt;
   ou de l'AES pourront se râ€šfÃ¨rer au livre:&lt;br /&gt;
   'LE LIVRE DU GEM' de Micro Application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
    PIECHOCKI   Laurent&lt;br /&gt;
    8, Impasse Bellevue                Suite dans le fichier LINEA.DOC&lt;br /&gt;
    57980     TENTELING                                      ---------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Back to [[ASM_Tutorial]]&lt;/div&gt;</summary>
		<author><name>&gt;Zorro 2</name></author>
	</entry>
</feed>