Added upstream from http://ftp.icm.edu.pl/pub/loglan/
[loglan.git] / examples / demos.pau / sort95 / sort.log
1 program TRI;\r
2 begin\r
3   pref iiuwgraph block\r
4 begin\r
5   pref mouse block\r
6 \r
7 (*************************************************************************)\r
8 (*                       PROGRAMME DE COMPARAISON                        *)\r
9 (*            DE DEUX METHODES DE TRIS SUR DES ELEMENTS DIFFERENTS       *)\r
10 (*************************************************************************)\r
11 (**************************************************************************)\r
12 (*               PROCEDURES DE GRAPHISMES                                 *)\r
13 (**************************************************************************)\r
14 UNIT RECTANGLE_PLEIN :  procedure(x_h,y_h,x_b,y_b,\r
15                         coul,contour:integer);\r
16 var \r
17   i  : integer ;\r
18 \r
19 BEGIN\r
20   call color (coul);\r
21   for i:= y_h to y_b \r
22   do\r
23         call move (x_h,i);\r
24         call hfill (x_b);\r
25   od;\r
26   call color (contour);\r
27   call move(x_h,y_h);\r
28   call draw(x_b,y_h);\r
29   call draw(x_b,y_b);\r
30   call draw(x_h,y_b);\r
31   call draw(x_h,y_h);\r
32  END RECTANGLE_PLEIN;\r
33 \r
34 UNIT RECTANGLE_HISTO :  procedure(x_h,y_h,x_b,y_b,\r
35                         coul:integer);\r
36 var \r
37   i  : integer ;\r
38 \r
39 BEGIN\r
40   call color (coul);\r
41   for i:= x_h to x_b \r
42   do\r
43         call move (i,y_h);\r
44         call vfill (y_b);\r
45   od;\r
46  END RECTANGLE_HISTO;\r
47 \r
48 UNIT RECTANGLE: procedure(x_h,y_h,x_b,y_b:integer);\r
49 BEGIN\r
50   call move(x_h,y_h);\r
51   call draw(x_b,y_h);\r
52   call draw(x_b,y_b);\r
53   call draw(x_h,y_b);\r
54   call draw(x_h,y_h);\r
55 END RECTANGLE;\r
56 \r
57 (************************************************************************)\r
58 (*               IMPLEMENTATION DE LA STRUCTURE DE DONNEES              *)\r
59 (*                     m\82thode utilis\82e : h\82ritage                      *)\r
60 (************************************************************************)\r
61 \r
62 (********************************************************)\r
63 (*                      CLASSE SUPERIEURE               *)\r
64 (********************************************************)\r
65 unit STR_ELEMENTS : class;\r
66                 unit virtual randomize : procedure;\r
67                 end randomize;\r
68 \r
69                 unit virtual trace : procedure (e,y : integer);\r
70                 end trace;\r
71 \r
72                 unit virtual echange : procedure (e1,e2,y : integer);\r
73                 end echange;\r
74 \r
75                 unit virtual compare : function (e1,e2 : integer) : integer;\r
76                 end compare;\r
77 \r
78                 unit virtual copie : procedure (T : STR_ELEMENTS);\r
79                 end copie;\r
80 \r
81                 unit virtual killtab : procedure;\r
82                 end killtab;\r
83 end STR_ELEMENTS;\r
84 \r
85 (********************************************************)\r
86 (*                CLASSE INFERIEURE                     *)\r
87 (********************************************************)\r
88 \r
89 (********************************************************)\r
90 (*                    CLASSE HISTOGRAMME                *)\r
91 (********************************************************)\r
92  unit HISTOGRAMMES     : STR_ELEMENTS class (nb_elements : integer);\r
93          unit  ENR_ELEMENTS :  class;\r
94            var\r
95                 couleur : integer,\r
96                 valeur  : integer;\r
97          end ENR_ELEMENTS;\r
98          var\r
99                 TAB : arrayof ENR_ELEMENTS,\r
100                 i   : integer             ;\r
101 \r
102                 unit virtual randomize : procedure;\r
103                 var i : integer;\r
104                 begin\r
105                         for i := 0 to nb_elements-1 do\r
106                                 TAB(i).valeur := (random*100)+1;\r
107                                 TAB(i).couleur := tab(i).valeur div 10+1;\r
108                                 if(TAB(i).couleur>=6)then \r
109                                        TAB(i).couleur:= TAB(i).couleur +3;\r
110                                 fi;\r
111                         od;\r
112                 end randomize;\r
113                 \r
114                 unit virtual trace : procedure (e,y : integer);\r
115                 var\r
116                        larg : integer;\r
117                 begin\r
118                 larg := 600 div nb_elements;\r
119                 call RECTANGLE_HISTO (15+e*larg,y-TAB(e).valeur,15+(e+1)*larg-2,y,\r
120                                         TAB(e).couleur); \r
121                 end trace;\r
122 \r
123                 unit virtual echange : procedure (e1,e2,y : integer);\r
124                 var\r
125                         tmp1,tmp2,coul1,h2,larg : integer;\r
126                 begin\r
127                 larg := 600 div nb_elements;\r
128                 call RECTANGLE_HISTO (15+e1*larg,y-100,15+(e1+1)*larg-2,y,7);              \r
129                 call RECTANGLE_HISTO (15+e2*larg,y-100,15+(e2+1)*larg-2,y,7);              \r
130                 h2 := TAB(e2).valeur;\r
131                   tmp1 := TAB(e1).valeur;\r
132                   tmp2 := TAB(e1).couleur;\r
133                   TAB(e1).valeur := TAB(e2).valeur;\r
134                   TAB(e1).couleur := TAB(e2).couleur;\r
135                   TAB(e2).valeur := tmp1;\r
136                   TAB(e2).couleur := tmp2;\r
137                   coul1 := TAB(e1).couleur;\r
138                   call RECTANGLE_HISTO (15+e1*larg,y-h2,15+(e1+1)*larg-2,y,\r
139                                         coul1);              \r
140                   call RECTANGLE_HISTO (15+e2*larg,y-tmp1,15+(e2+1)*larg-2,y,\r
141                                         tmp2);              \r
142                 end echange;\r
143                 \r
144                 unit virtual compare : function (e1,e2 : integer) : integer;\r
145                 begin\r
146                         if TAB(e1).valeur < TAB(e2).valeur then result := -1;\r
147                         else if  TAB(e1).valeur = TAB(e2).valeur then result := 0;\r
148                                 else result := 1;\r
149                                 fi;\r
150                         fi;\r
151                 end compare;\r
152 \r
153                 unit virtual copie : procedure ( T : HISTOGRAMMES);\r
154                 var\r
155                         i : integer;\r
156                 begin\r
157                         for i := 0 to nb_elements-1 do\r
158                                 TAB(i).valeur := T.tab(i).valeur;\r
159                                 TAB(i).couleur := T.tab(i).couleur;\r
160 \r
161                        od;\r
162                 end copie;\r
163 \r
164                 unit virtual killtab : procedure;\r
165                 var\r
166                         i : integer;\r
167                 begin\r
168                         for i:=0 to nb_elements-1 do\r
169                                 kill (TAB(i));\r
170                         od;\r
171                 end killtab;\r
172          begin\r
173          array TAB dim (0:nb_elements-1);\r
174          for i:=0 to nb_elements-1 do\r
175                 TAB(i) := new ENR_ELEMENTS;\r
176          od;\r
177  end HISTOGRAMMES;\r
178 \r
179 (********************************************************)\r
180 (*                   CLASSE SURFACES                    *)\r
181 (********************************************************)\r
182  unit SURFACES     : STR_ELEMENTS class (nb_elements : integer);\r
183          unit  ENR_ELEMENTS :  class;\r
184            var\r
185                 couleur : integer,\r
186                 longueur: integer,\r
187                 largeur : integer;\r
188 \r
189          end ENR_ELEMENTS;\r
190 \r
191          var\r
192                 TAB : arrayof ENR_ELEMENTS,\r
193                 i   : integer             ;\r
194 \r
195 \r
196                 unit virtual randomize : procedure;\r
197                 var i,largeur_max,surf_interne : integer;\r
198                 begin\r
199                         for i := 0 to nb_elements-1 \r
200                         do\r
201                            largeur_max := 25;\r
202                            TAB(i).longueur := (random*largeur_max)+1;\r
203                            TAB(i).largeur  := (random * largeur_max)+1;\r
204                            surf_interne := TAB(i).longueur * TAB(i).largeur;\r
205                            TAB(i).couleur := (surf_interne * 12) \r
206                                          div (largeur_max*largeur_max)+1;\r
207                            if(TAB(i).couleur>=6)then \r
208                                        TAB(i).couleur:= TAB(i).couleur +3;\r
209                            fi;\r
210                         od;\r
211                 end randomize;\r
212                 \r
213                 unit virtual trace : procedure (e,y : integer);\r
214                 var\r
215                        larg,xx,yy : integer;\r
216                 begin\r
217                 larg := 25;\r
218                 xx := (e mod 20)*30+30;\r
219                 yy := y - 90 + (e div 20 )*30;\r
220                 call RECTANGLE_HISTO (xx-(tab(e).largeur div 2),\r
221                                 yy-(tab(e).longueur div 2),\r
222                                 xx+((TAB(e).largeur+1) div 2),\r
223                                 yy+((TAB(e).longueur+1) div 2),TAB(e).couleur); \r
224                 end trace;\r
225 \r
226 \r
227                 unit virtual echange : procedure (e1,e2,y : integer);\r
228                 var\r
229                         xx1,yy1,xx2,yy2,tmp1,tmp2,tmp3,coul1,h2long,\r
230                                                 h2larg,larg : integer;\r
231                 begin\r
232 \r
233                 larg := 25;\r
234                 xx1 := (e1 mod 20)*30+30;\r
235                 yy1 := y - 90 + (e1 div 20 )*30;\r
236                 xx2 := (e2 mod 20)*30+30;\r
237                 yy2 := y - 90 + (e2 div 20 )*30;\r
238 \r
239                 call RECTANGLE_HISTO (xx1-(tab(e1).largeur div 2),\r
240                                 yy1-(tab(e1).longueur div 2),\r
241                               xx1+((TAB(e1).largeur+1) div 2),\r
242                            yy1+((TAB(e1).longueur+1) div 2),7); \r
243                 call RECTANGLE_HISTO (xx2-(tab(e2).largeur div 2),\r
244                                 yy2-(tab(e2).longueur div 2),\r
245                                xx2+((TAB(e2).largeur+1) div 2),\r
246                       yy2+((TAB(e2).longueur+1) div 2),7); \r
247                   h2larg := TAB(e2).largeur;\r
248                   h2long :=  TAB(e2).longueur;\r
249                   tmp1 := TAB(e1).largeur;\r
250                   tmp2 := TAB(e1).longueur;\r
251                   tmp3 := TAB(e1).couleur;\r
252                   TAB(e1).largeur := TAB(e2).largeur;\r
253                   TAB(e1).longueur := TAB(e2).longueur;\r
254                   TAB(e1).couleur := TAB(e2).couleur;\r
255                   TAB(e2).largeur := tmp1;    \r
256                   TAB(e2).longueur := tmp2;\r
257                   TAB(e2).couleur := tmp3;\r
258                   coul1 := TAB(e1).couleur;\r
259                   call RECTANGLE_HISTO (xx1-(h2larg div 2),\r
260                                         yy1-(h2long div 2),\r
261                                         xx1+((h2larg+1)  div 2),\r
262                                         yy1+((h2long+1) div 2),coul1);\r
263                   call RECTANGLE_HISTO (xx2-(tmp1 div 2),\r
264                                         yy2-(tmp2 div 2),\r
265                                         xx2+((tmp1+1)  div 2),\r
266                                         yy2+((tmp2+1) div 2),tmp3);\r
267                 end echange;\r
268                 \r
269                 unit virtual compare : function (e1,e2 : integer) : integer;\r
270                 var\r
271                 surf1,surf2 : integer;\r
272                 begin\r
273                 \r
274                         surf1 := TAB(e1).largeur * TAB(e1).longueur;\r
275                         surf2 := TAB(e2).largeur * TAB(e2).longueur;\r
276                         if surf1 < surf2 then result := -1;\r
277                         else if  surf1 = surf2 then result := 0;\r
278                                 else result := 1;\r
279                                 fi;\r
280                         fi;\r
281                 end compare;\r
282 \r
283                 unit virtual copie : procedure ( T : SURFACES);\r
284                 var\r
285                         i : integer;\r
286                 begin\r
287                         for i := 0 to nb_elements-1 do\r
288                                 TAB(i).largeur := T.tab(i).largeur;\r
289                                 TAB(i).longueur := T.tab(i).longueur;\r
290                                 TAB(i).couleur := T.tab(i).couleur;\r
291                        od;\r
292                 end copie;\r
293 \r
294                 unit virtual killtab : procedure;\r
295                 var\r
296                         i : integer;\r
297                 begin\r
298                         for i:=0 to nb_elements-1 do\r
299                                 kill (TAB(i));\r
300                         od;\r
301                 end killtab;\r
302          begin\r
303          array TAB dim (0:nb_elements-1);\r
304          for i:=0 to nb_elements-1 do\r
305                 TAB(i) := new ENR_ELEMENTS;\r
306          od;\r
307  end SURFACES;\r
308 \r
309 (********************************************************)\r
310 (*                 CLASSE POLYNOME                      *)\r
311 (********************************************************)\r
312  unit POLY     : STR_ELEMENTS class (nb_elements : integer);\r
313       unit  ENR_ELEMENTS :  class;\r
314          var\r
315                 coeff   : arrayof integer,\r
316                 degre   : integer;\r
317          end ENR_ELEMENTS;\r
318          var\r
319                 TAB : arrayof ENR_ELEMENTS,\r
320                 i   : integer             ,\r
321                 x   : integer             ;\r
322 \r
323 unit  CAL_POLYNOME : function (indice : integer): integer;\r
324          var\r
325          somme,i : integer;\r
326          begin\r
327              somme := TAB(indice).coeff(TAB(indice).degre);\r
328              i :=  TAB(indice).degre - 1;\r
329              while (i>=0) \r
330              do\r
331                 somme := somme * x +TAB(indice).coeff(i);\r
332                 i := i -1;\r
333              od;\r
334              result := somme;\r
335          end CAL_POLYNOME;\r
336 \r
337         unit virtual randomize : procedure;\r
338                 var \r
339                         i,j,deg,valeur,test     : integer;\r
340                 begin\r
341                         for i := 0 to nb_elements-1 \r
342                         do\r
343                            deg := (random * 5) + 1;\r
344                            x   := (random * 7) + 1;\r
345                            TAB(i).degre := deg;\r
346                            test := 0;\r
347                            while (test = 0)\r
348                            do\r
349                                 for j := 0 to deg\r
350                                 do\r
351                                         TAB(i).coeff(j) := random*9 - 4;\r
352                                         test :=  TAB(i).coeff(j) + test;\r
353                                 od;\r
354                            od;\r
355                         od;\r
356                         call AFFICHE_INFO;\r
357                 end randomize;\r
358                 \r
359                 unit affchar : procedure (n : integer);\r
360                 begin\r
361                         case n\r
362                                 when 0 : call outstring ("0");\r
363                                 when 1 : call outstring ("1");\r
364                                 when 2 : call outstring ("2");\r
365                                 when 3 : call outstring ("3");\r
366                                 when 4 : call outstring ("4");\r
367                                 when 5 : call outstring ("5");\r
368                                 when 6 : call outstring ("6");\r
369                                 when 7 : call outstring ("7");\r
370                                 when 8 : call outstring ("8");\r
371                                 when 9 : call outstring ("9");\r
372                         esac;\r
373                 end;\r
374 \r
375         unit AFFICHE_INFO : procedure ;\r
376         begin\r
377 \r
378                         call color (15);\r
379                         call move (520,160);\r
380                         call outstring ("VALEUR  X : ");\r
381                         call affchar(x);\r
382                         call move (520,335);\r
383                         call outstring  ("VALEUR  X : ");\r
384                         call affchar(x);\r
385                         call color (8);\r
386                         call move (521,161);\r
387                         call outstring ("VALEUR  X : ");\r
388                         call affchar(x);\r
389                         call move (521,336);\r
390                         call outstring  ("VALEUR  X : ");\r
391                         call affchar(x);\r
392 \r
393                         call color (4);\r
394                         call RECTANGLE (8,5,12,85);\r
395                         call move (8,85);\r
396                         call draw (4,85);\r
397                         call draw (10,90);\r
398                         call draw (16,85);\r
399                         call draw (12,85);\r
400                         call RECTANGLE (8,180,12,259);\r
401                         call move (8,259);\r
402                         call draw (4,259);\r
403                         call draw (10,264);\r
404                         call draw (16,259);\r
405                         call draw (12,259);\r
406         end ;\r
407 \r
408                 unit virtual trace : procedure (e,y : integer);\r
409                 var\r
410                         xx,yy,i,nbchar : integer,\r
411                         debut : boolean;\r
412                 begin\r
413                         xx := (e div 10)*320+20;\r
414                         yy := y-100+(e mod 10)*8;\r
415                         call move (xx,yy);\r
416                         nbchar := 0;\r
417                         debut := true;\r
418                         for i:=TAB(e).degre downto 0 do\r
419                            if tab(e).coeff(i)<>0 then  \r
420 \r
421                                 if TAB(e).coeff(i)<0 then\r
422                                         call outstring ("-");\r
423                                         nbchar := nbchar + 1;\r
424                                 else\r
425                                         if not debut then\r
426                                                 call outstring ("+");\r
427                                                 nbchar := nbchar + 1;\r
428                                         fi;\r
429                                 fi;\r
430                                 debut := false;\r
431                                 if ((tab(e).coeff(i)<>1) and \r
432                                     (tab(e).coeff(i)<>-1)) or (i=0) then\r
433                                         if tab(e).coeff(i)>=0 then\r
434                                         call affchar (TAB(e).coeff(i));\r
435                                         else\r
436                                         call affchar (-TAB(e).coeff(i));\r
437                                         fi;\r
438                                         nbchar := nbchar + 1;\r
439                                 fi;\r
440                                 if i<>0 then\r
441                                         call outstring ("X");\r
442                                         if i<>1 then\r
443                                                 call outstring ("^");\r
444                                                 call affchar (i);\r
445                                                 nbchar := nbchar + 2;\r
446                                         fi;\r
447                                         nbchar := nbchar + 1;\r
448                                 fi;\r
449                              fi;\r
450                         od;\r
451                         for i:=nbchar to 25 do\r
452                                 call outstring (" ");\r
453                         od;\r
454                 end trace;\r
455 \r
456                 unit virtual echange : procedure (e1,e2,y : integer);\r
457                 var\r
458                 i ,sauve_degre,sauve_coef : integer;\r
459 \r
460                 begin\r
461 \r
462                 sauve_degre := TAB(e2).degre;\r
463                 TAB(e2).degre := TAB(e1).degre;\r
464                 TAB(e1).degre := sauve_degre;\r
465 \r
466                 for i := 5 downto 0\r
467                 do\r
468                          sauve_coef := TAB(e2).coeff(i);\r
469                          TAB(e2).coeff(i) := TAB(e1).coeff(i);\r
470                          TAB(e1).coeff(i) := sauve_coef;\r
471                 od;\r
472 \r
473                 call trace (e1,y);\r
474                 call trace (e2,y);\r
475 \r
476                 end echange;\r
477                 \r
478                 unit virtual compare : function (e1,e2 : integer) : integer;\r
479                 var\r
480                 val1,val2 : integer;\r
481                 begin\r
482                         val1 := CAL_POLYNOME(e1);\r
483                         val2 := CAL_POLYNOME(e2);\r
484                         if val1<val2 then result := -1;\r
485                         else if val1 = val2 then result := 0;\r
486                                 else result := 1;\r
487                                 fi;\r
488                         fi;\r
489                 end compare;\r
490 \r
491                 unit virtual copie : procedure ( T : POLY);\r
492                 var\r
493                         i,j : integer;\r
494                 begin\r
495                         x := T.x;\r
496                         for i := 0 to nb_elements-1 do\r
497                                 TAB(i).degre := T.tab(i).degre;\r
498                                 for j := 0 to 5 do\r
499                                         TAB(i).coeff(j) := T.tab(i).coeff(j);\r
500                                 od;\r
501                        od;\r
502                 end copie;\r
503 \r
504                 unit virtual killtab : procedure;\r
505                 var\r
506                         i : integer;\r
507                 begin\r
508                         for i:=0 to nb_elements-1 do\r
509                                 kill (TAB(i));\r
510                         od;\r
511                 end killtab;\r
512          begin\r
513          array TAB dim (0:nb_elements-1);\r
514          for i:=0 to nb_elements-1 do\r
515                 TAB(i) := new ENR_ELEMENTS;\r
516                 array tab(i).coeff dim (0:5);\r
517          od;\r
518      end POLY;\r
519 \r
520 \r
521 begin\r
522 pref STR_ELEMENTS block\r
523 \r
524 unit EFFACE : procedure (x1,y1,x2,y2,c1,c2,c3 : integer);\r
525 var\r
526         i,j,k : integer;\r
527 begin\r
528         i := x2-x1;\r
529         j := y2-y1;\r
530         k := 0;\r
531         call color (c1);\r
532         while (k<=j) and (k<=i) do\r
533                 call RECTANGLE (x1+k,y1+k,x2-k,y2-k);\r
534                 i := i-1;\r
535                 j := j-1;\r
536                 k := k+1;\r
537         od;\r
538         call color (c2);\r
539         while (k>=0) do\r
540                 call RECTANGLE (x1+k,y1+k,x2-k,y2-k);\r
541                 i := i+1;\r
542                 j := j+1;\r
543                 k := k-1;\r
544         od;\r
545         call color (c3);\r
546         call RECTANGLE (x1,y1,x2,y2);\r
547 end EFFACE;\r
548 \r
549 \r
550 UNIT BOX_MESSAGE : function (chaine:string;x1,y1,x2,y2:integer): boolean ;\r
551 \r
552   VAR \r
553        succes,gauche,droit,centre : boolean,\r
554        x,y,p,i:integer;\r
555   BEGIN\r
556         succes := false;\r
557         call BOUTON (x1,y1,x2,y2,7,9,1);   \r
558         call move   (x1+20,y1+30);\r
559         call outstring (chaine);\r
560         call BOUTON (x1+80,y2-50,x1+150,y2-15,7,15,8);\r
561         call BOUTON (x1+200,y2-50,x1+270,y2-15,7,15,8);\r
562         call move (x1+94,y2-35);\r
563         call color (4);\r
564         call outstring ("O U I");\r
565         call move (x1+214,y2-35);\r
566         call outstring ("N O N ");\r
567         do\r
568         call showcursor;\r
569         call getpress (0,x,y,p,gauche,droit,centre);\r
570         if (gauche) then\r
571         call hidecursor;\r
572         if (x > (x1+80) and x < (x1 + 150) and y>(y2-50) and y<(y2-15)) then\r
573                         call BOUTON (x1+80,y2-50,x1+150,y2-15,7,8,15);\r
574                         call move (x1+90,y2-35);\r
575                         call color (8);\r
576                         call outstring ("O U I");\r
577                         call delai (2000);\r
578                         call move (x1+90,y2-35);\r
579                         call color (8);\r
580                         call outstring ("O U I");\r
581                         call BOUTON (x1+80,y2-50,x1+150,y2-15,7,15,8);\r
582                         call move (x1+90,y2-35);\r
583                         call color (8);\r
584                         call outstring ("O U I");\r
585                         succes := true;\r
586                         exit ;\r
587                 fi;\r
588            if (x>(x1+200) and x<(x1+270) and y>(y2-50) and y<(y2-15)) then\r
589                         call BOUTON (x1+200,y2-50,x1+270,y2-15,7,8,15);\r
590                         call color (8);\r
591                         call move (x1+210,y2-35);\r
592                         call outstring ("N O N ");\r
593                         call delai (2000);\r
594                         call move (x1+210,y2-35);\r
595                         call outstring ("N O N ");\r
596                         call BOUTON (x1+200,y2-50,x1+270,y2-15,7,15,8);\r
597                         call color (8);\r
598                         call move (x1+210,y2-35);\r
599                         call outstring ("N O N ");\r
600                         exit;\r
601                 fi;\r
602                 call showcursor;\r
603         fi;\r
604         od;\r
605         result := succes;\r
606 END BOX_MESSAGE;\r
607 \r
608 unit carre :  procedure (x,y : integer);\r
609  begin\r
610         call RECTANGLE_PLEIN (x,y,x+39,y+31,7,15);\r
611         call color (15);\r
612         call move (x,y+29);\r
613         call draw (x,y);\r
614         call draw (x+37,y);\r
615         call color (8);\r
616         call draw (x+37,y+29);\r
617         call draw (x+1,y+29);\r
618         call color (8);\r
619         call move (x+38,y+3);\r
620         call draw (x+38,y+30);\r
621         call draw (x+3,y+30);\r
622  end;\r
623 \r
624  unit eff_titre :  procedure;\r
625  var\r
626         f : file,\r
627         i,j : integer,\r
628         n : integer,\r
629         col : integer,\r
630         A : arrayof char,\r
631         map : arrayof integer,\r
632         c : char;\r
633          begin\r
634         for i:=5 to 10 do\r
635         for j:=0 to 1 do\r
636                 call carre (i*40,j*32);\r
637         od;\r
638         od;\r
639         \r
640  end eff_titre;\r
641 \r
642  unit tracev :  procedure (x,y2,y1 : integer);\r
643  begin\r
644         call move (x,y1);\r
645         call vfill (y2);\r
646  end tracev;\r
647 \r
648  unit dessinstat : procedure (x,y,c : integer);\r
649  begin\r
650         call color (c);\r
651         call tracev (3+x,16+y,13+y);    call tracev (3+x,33+y,32+y);\r
652         call tracev (4+x,18+y,8+y);     call tracev (4+x,34+y,32+y);\r
653         call tracev (5+x,20+y,7+y);     call tracev (5+x,35+y,32+y);\r
654         call tracev (6+x,21+y,6+y);     call tracev (6+x,36+y,33+y);\r
655         call tracev (7+x,22+y,5+y);     call tracev (7+x,36+y,34+y);\r
656         call tracev (8+x,23+y,4+y);     call tracev (8+x,37+y,34+y);\r
657         call tracev (9+x,24+y,3+y);     call tracev (9+x,37+y,35+y);\r
658         call tracev (10+x,24+y,3+y);    call tracev (10+x,38+y,35+y);\r
659         call tracev (11+x,25+y,2+y);    call tracev (11+x,38+y,36+y);\r
660         call tracev (12+x,26+y,2+y);    call tracev (12+x,38+y,36+y);\r
661         call tracev (13+x,26+y,2+y);    call tracev (13+x,38+y,36+y);\r
662         call tracev (14+x,27+y,2+y);    call tracev (14+x,39+y,36+y);\r
663         call tracev (15+x,28+y,2+y);    call tracev (15+x,39+y,36+y);\r
664         call tracev (16+x,29+y,2+y);    call tracev (16+x,39+y,35+y);\r
665         call tracev (17+x,29+y,2+y);    call tracev (17+x,39+y,35+y);\r
666         call tracev (18+x,39+y,2+y);    call tracev (19+x,8+y,2+y);\r
667         call tracev (19+x,39+y,10+y);   call tracev (20+x,6+y,2+y);\r
668         call tracev (20+x,38+y,11+y);   call tracev (21+x,5+y,2+y);\r
669         call tracev (21+x,38+y,12+y);   call tracev (22+x,4+y,2+y);\r
670         call tracev (22+x,38+y,13+y);   call tracev (23+x,4+y,2+y);\r
671         call tracev (23+x,38+y,14+y);   call tracev (24+x,4+y,2+y);\r
672         call tracev (24+x,38+y,14+y);   call tracev (25+x,4+y,2+y);\r
673         call tracev (25+x,38+y,15+y);   call tracev (26+x,4+y,2+y);\r
674         call tracev (26+x,37+y,15+y);   call tracev (27+x,5+y,2+y);\r
675         call tracev (27+x,37+y,16+y);   call tracev (28+x,5+y,3+y);\r
676         call tracev (28+x,36+y,17+y);   call tracev (29+x,6+y,3+y);\r
677         call tracev (29+x,36+y,18+y);   call tracev (30+x,8+y,4+y);\r
678         call tracev (30+x,35+y,19+y);   call tracev (31+x,4+y,2+y);\r
679         call tracev (31+x,9+y,5+y);     call tracev (31+x,34+y,20+y);\r
680         call tracev (32+x,4+y,2+y);     call tracev (32+x,9+y,6+y);\r
681         call tracev (32+x,33+y,22+y);   call tracev (33+x,4+y,2+y);\r
682         call tracev (33+x,9+y,8+y);     call tracev (33+x,30+y,25+y);\r
683         call tracev (34+x,4+y,2+y);     call tracev (35+x,4+y,2+y);\r
684         call tracev (36+x,4+y,2+y);     call tracev (37+x,4+y,2+y);\r
685         call tracev (38+x,4+y,2+y);     call tracev (39+x,4+y,2+y);\r
686         call tracev (40+x,4+y,2+y);     call tracev (41+x,4+y,2+y);\r
687         call tracev (42+x,38+y,2+y);    call tracev (43+x,38+y,2+y);\r
688         call tracev (44+x,38+y,2+y);    call tracev (45+x,38+y,2+y);\r
689         call tracev (46+x,38+y,2+y);    call tracev (47+x,38+y,2+y);\r
690         call tracev (48+x,38+y,2+y);    call tracev (49+x,38+y,2+y);\r
691         call tracev (50+x,38+y,2+y);    call tracev (51+x,38+y,2+y);\r
692         call tracev (52+x,38+y,2+y);    call tracev (53+x,38+y,2+y);\r
693         call tracev (54+x,38+y,2+y);    call tracev (55+x,38+y,2+y);\r
694         call tracev (56+x,38+y,2+y);    call tracev (57+x,38+y,2+y);\r
695         call tracev (58+x,38+y,2+y);    call tracev (59+x,38+y,2+y);\r
696         call tracev (60+x,38+y,2+y);    call tracev (61+x,4+y,2+y);\r
697         call tracev (61+x,38+y,37+y);   call tracev (62+x,4+y,2+y);\r
698         call tracev (62+x,38+y,35+y);   call tracev (63+x,4+y,2+y);\r
699         call tracev (63+x,38+y,33+y);   call tracev (64+x,4+y,2+y);\r
700         call tracev (64+x,37+y,31+y);   call tracev (65+x,4+y,2+y);\r
701         call tracev (65+x,35+y,29+y);   call tracev (66+x,4+y,2+y);\r
702         call tracev (66+x,34+y,27+y);   call tracev (67+x,4+y,2+y);\r
703         call tracev (67+x,34+y,25+y);   call tracev (68+x,4+y,2+y);\r
704         call tracev (68+x,29+y,23+y);   call tracev (68+x,34+y,31+y);\r
705         call tracev (69+x,4+y,2+y);     call tracev (69+x,27+y,21+y);\r
706         call tracev (69+x,34+y,31+y);   call tracev (70+x,4+y,2+y);\r
707         call tracev (70+x,25+y,19+y);   call tracev (70+x,34+y,31+y);\r
708         call tracev (71+x,23+y,17+y);   call tracev (71+x,34+y,31+y);\r
709         call tracev (72+x,25+y,15+y);   call tracev (72+x,34+y,31+y);\r
710         call tracev (73+x,27+y,13+y);   call tracev (73+x,34+y,31+y);\r
711         call tracev (74+x,29+y,11+y);   call tracev (74+x,34+y,31+y);\r
712         call tracev (75+x,34+y,9+y);    call tracev (76+x,34+y,7+y);\r
713         call tracev (77+x,35+y,5+y);    call tracev (78+x,37+y,3+y);\r
714         call tracev (79+x,38+y,2+y);    call tracev (80+x,38+y,3+y);\r
715         call tracev (81+x,38+y,5+y);    call tracev (82+x,38+y,7+y);\r
716         call tracev (83+x,38+y,9+y);    call tracev (84+x,38+y,11+y);\r
717         call tracev (85+x,38+y,13+y);   call tracev (86+x,38+y,15+y);\r
718         call tracev (87+x,38+y,17+y);   call tracev (88+x,38+y,19+y);\r
719         call tracev (89+x,4+y,2+y);     call tracev (89+x,38+y,21+y);\r
720         call tracev (90+x,4+y,2+y);     call tracev (90+x,38+y,23+y);\r
721         call tracev (91+x,4+y,2+y);     call tracev (91+x,38+y,25+y);\r
722         call tracev (92+x,4+y,2+y);     call tracev (92+x,38+y,27+y);\r
723         call tracev (93+x,4+y,2+y);     call tracev (93+x,38+y,29+y);\r
724         call tracev (94+x,4+y,2+y);     call tracev (94+x,38+y,31+y);\r
725         call tracev (95+x,4+y,2+y);     call tracev (95+x,38+y,33+y);\r
726         call tracev (96+x,4+y,2+y);     call tracev (96+x,38+y,35+y);\r
727         call tracev (97+x,4+y,2+y);     call tracev (97+x,38+y,37+y);\r
728         call tracev (98+x,4+y,2+y);     call tracev (99+x,38+y,2+y);\r
729         call tracev (100+x,38+y,2+y);   call tracev (101+x,38+y,2+y);\r
730         call tracev (102+x,38+y,2+y);   call tracev (103+x,38+y,2+y);\r
731         call tracev (104+x,38+y,2+y);   call tracev (105+x,38+y,2+y);\r
732         call tracev (106+x,38+y,2+y);   call tracev (107+x,38+y,2+y);\r
733         call tracev (108+x,38+y,2+y);   call tracev (109+x,38+y,2+y);\r
734         call tracev (110+x,38+y,2+y);   call tracev (111+x,38+y,2+y);\r
735         call tracev (112+x,38+y,2+y);   call tracev (113+x,38+y,2+y);\r
736         call tracev (114+x,38+y,2+y);   call tracev (115+x,38+y,2+y);\r
737         call tracev (116+x,38+y,2+y);   call tracev (117+x,38+y,2+y);\r
738         call tracev (118+x,4+y,2+y);    call tracev (119+x,4+y,2+y);\r
739         call tracev (120+x,4+y,2+y);    call tracev (121+x,4+y,2+y);\r
740         call tracev (122+x,4+y,2+y);    call tracev (123+x,4+y,2+y);\r
741         call tracev (124+x,4+y,2+y);    call tracev (124+x,16+y,10+y);\r
742         call tracev (124+x,34+y,32+y);  call tracev (125+x,4+y,2+y);\r
743         call tracev (125+x,19+y,8+y);   call tracev (125+x,35+y,32+y);\r
744         call tracev (126+x,4+y,2+y);    call tracev (126+x,21+y,6+y);\r
745         call tracev (126+x,35+y,32+y);  call tracev (127+x,4+y,2+y);\r
746         call tracev (127+x,22+y,5+y);   call tracev (127+x,36+y,33+y);\r
747         call tracev (128+x,22+y,5+y);   call tracev (128+x,36+y,34+y);\r
748         call tracev (129+x,23+y,4+y);   call tracev (129+x,37+y,34+y);\r
749         call tracev (130+x,24+y,3+y);   call tracev (130+x,38+y,35+y);\r
750         call tracev (131+x,25+y,2+y);   call tracev (131+x,38+y,36+y);\r
751         call tracev (132+x,26+y,2+y);   call tracev (132+x,38+y,36+y);\r
752         call tracev (133+x,26+y,2+y);   call tracev (133+x,38+y,36+y);\r
753         call tracev (134+x,27+y,2+y);   call tracev (134+x,39+y,36+y);\r
754         call tracev (135+x,28+y,2+y);   call tracev (135+x,39+y,36+y);\r
755         call tracev (136+x,29+y,2+y);   call tracev (136+x,39+y,36+y);\r
756         call tracev (137+x,29+y,2+y);   call tracev (137+x,39+y,35+y);\r
757         call tracev (138+x,31+y,2+y);   call tracev (138+x,39+y,33+y);\r
758         call tracev (139+x,39+y,2+y);   call tracev (140+x,6+y,2+y);\r
759         call tracev (140+x,39+y,11+y);  call tracev (141+x,5+y,2+y);\r
760         call tracev (141+x,38+y,12+y);  call tracev (142+x,5+y,2+y);\r
761         call tracev (142+x,38+y,13+y);  call tracev (143+x,4+y,2+y);\r
762         call tracev (143+x,38+y,14+y);  call tracev (144+x,4+y,2+y);\r
763         call tracev (144+x,38+y,14+y);  call tracev (145+x,4+y,2+y);\r
764         call tracev (145+x,38+y,15+y);  call tracev (146+x,4+y,2+y);\r
765         call tracev (146+x,38+y,15+y);  call tracev (147+x,4+y,2+y);\r
766         call tracev (147+x,37+y,16+y);  call tracev (148+x,5+y,2+y);\r
767         call tracev (148+x,37+y,16+y);  call tracev (149+x,5+y,3+y);\r
768         call tracev (149+x,36+y,17+y);  call tracev (150+x,6+y,3+y);\r
769         call tracev (150+x,36+y,18+y);  call tracev (151+x,8+y,4+y);\r
770         call tracev (151+x,35+y,20+y);  call tracev (152+x,9+y,6+y);\r
771         call tracev (152+x,33+y,21+y);  call tracev (153+x,9+y,7+y);\r
772         call tracev (153+x,32+y,22+y);\r
773         call tracev (154+x,9+y,8+y);\r
774         call tracev (154+x,28+y,25+y);\r
775 end dessinstat;\r
776 \r
777  unit dessinmenu : procedure (x,y,c : integer);\r
778  begin\r
779         call color (c);\r
780         call tracev (8+x,47+y,45+y);    call tracev (9+x,47+y,43+y);\r
781         call tracev (10+x,45+y,40+y);   call tracev (11+x,43+y,38+y);\r
782         call tracev (12+x,41+y,35+y);   call tracev (13+x,38+y,32+y);\r
783         call tracev (14+x,36+y,30+y);   call tracev (15+x,37+y,27+y);\r
784         call tracev (16+x,38+y,25+y);   call tracev (17+x,40+y,22+y);\r
785         call tracev (18+x,41+y,20+y);   call tracev (19+x,43+y,17+y);\r
786         call tracev (20+x,44+y,14+y);   call tracev (21+x,46+y,12+y);\r
787         call tracev (22+x,47+y,10+y);   call tracev (23+x,46+y,11+y);\r
788         call tracev (24+x,44+y,13+y);   call tracev (25+x,43+y,14+y);\r
789         call tracev (26+x,41+y,16+y);   call tracev (27+x,40+y,17+y);\r
790         call tracev (28+x,38+y,19+y);   call tracev (29+x,37+y,20+y);\r
791         call tracev (30+x,36+y,22+y);   call tracev (31+x,38+y,20+y);\r
792         call tracev (32+x,41+y,19+y);   call tracev (33+x,43+y,17+y);\r
793         call tracev (34+x,45+y,16+y);   call tracev (35+x,47+y,14+y);\r
794         call tracev (36+x,47+y,13+y);   call tracev (37+x,47+y,11+y);\r
795         call tracev (38+x,47+y,10+y);   call tracev (39+x,47+y,12+y);\r
796         call tracev (40+x,47+y,14+y);   call tracev (41+x,47+y,17+y);\r
797         call tracev (42+x,47+y,19+y);   call tracev (43+x,47+y,21+y);\r
798         call tracev (44+x,47+y,24+y);   call tracev (45+x,47+y,26+y);\r
799         call tracev (46+x,47+y,29+y);   call tracev (47+x,47+y,31+y);\r
800         call tracev (48+x,47+y,33+y);   call tracev (49+x,47+y,36+y);\r
801         call tracev (50+x,47+y,38+y);   call tracev (51+x,47+y,41+y);\r
802         call tracev (52+x,47+y,43+y);   call tracev (53+x,47+y,45+y);\r
803         call tracev (55+x,47+y,10+y);   call tracev (56+x,47+y,10+y);\r
804         call tracev (57+x,47+y,10+y);   call tracev (58+x,47+y,10+y);\r
805         call tracev (59+x,47+y,10+y);   call tracev (60+x,47+y,10+y);\r
806         call tracev (61+x,47+y,10+y);   call tracev (62+x,47+y,10+y);\r
807         call tracev (63+x,47+y,10+y);   call tracev (64+x,47+y,10+y);\r
808         call tracev (65+x,47+y,10+y);   call tracev (66+x,47+y,10+y);\r
809         call tracev (67+x,47+y,10+y);   call tracev (68+x,47+y,10+y);\r
810         call tracev (69+x,47+y,10+y);   call tracev (70+x,47+y,10+y);\r
811         call tracev (71+x,47+y,10+y);   call tracev (72+x,47+y,10+y);\r
812         call tracev (73+x,13+y,10+y);   call tracev (73+x,23+y,21+y);\r
813         call tracev (73+x,47+y,44+y);   call tracev (74+x,13+y,10+y);\r
814         call tracev (74+x,23+y,21+y);   call tracev (74+x,47+y,44+y);\r
815         call tracev (75+x,13+y,10+y);   call tracev (75+x,23+y,21+y);\r
816         call tracev (75+x,47+y,44+y);   call tracev (76+x,13+y,10+y);\r
817         call tracev (76+x,23+y,21+y);   call tracev (76+x,47+y,44+y);\r
818         call tracev (77+x,13+y,10+y);   call tracev (77+x,23+y,21+y);\r
819         call tracev (77+x,47+y,44+y);   call tracev (78+x,13+y,10+y);\r
820         call tracev (78+x,23+y,21+y);   call tracev (78+x,47+y,44+y);\r
821         call tracev (79+x,13+y,10+y);   call tracev (79+x,23+y,21+y);\r
822         call tracev (79+x,47+y,44+y);   call tracev (80+x,13+y,10+y);\r
823         call tracev (80+x,23+y,21+y);   call tracev (80+x,47+y,44+y);\r
824         call tracev (81+x,13+y,10+y);   call tracev (81+x,23+y,21+y);\r
825         call tracev (81+x,47+y,44+y);   call tracev (82+x,13+y,10+y);\r
826         call tracev (82+x,23+y,21+y);   call tracev (82+x,47+y,44+y);\r
827         call tracev (83+x,13+y,10+y);   call tracev (83+x,23+y,21+y);\r
828         call tracev (83+x,47+y,44+y);   call tracev (84+x,13+y,10+y);\r
829         call tracev (84+x,23+y,21+y);   call tracev (84+x,47+y,44+y);\r
830         call tracev (85+x,13+y,10+y);   call tracev (85+x,23+y,21+y);\r
831         call tracev (85+x,47+y,44+y);   call tracev (86+x,13+y,10+y);\r
832         call tracev (86+x,23+y,21+y);   call tracev (86+x,47+y,44+y);\r
833         call tracev (87+x,13+y,10+y);   call tracev (87+x,23+y,21+y);\r
834         call tracev (87+x,47+y,44+y);   call tracev (88+x,23+y,21+y);\r
835         call tracev (88+x,47+y,44+y);   call tracev (89+x,23+y,21+y);\r
836         call tracev (89+x,47+y,44+y);   call tracev (90+x,47+y,44+y);\r
837         call tracev (92+x,47+y,10+y);   call tracev (93+x,47+y,11+y);\r
838         call tracev (94+x,30+y,11+y);   call tracev (95+x,30+y,12+y);\r
839         call tracev (96+x,31+y,12+y);   call tracev (97+x,31+y,13+y);\r
840         call tracev (98+x,32+y,14+y);   call tracev (99+x,32+y,14+y);\r
841         call tracev (100+x,33+y,15+y);  call tracev (101+x,33+y,16+y);\r
842         call tracev (102+x,34+y,16+y);  call tracev (103+x,35+y,17+y);\r
843         call tracev (104+x,35+y,17+y);  call tracev (105+x,36+y,18+y);\r
844         call tracev (106+x,36+y,19+y);  call tracev (107+x,37+y,19+y);\r
845         call tracev (108+x,37+y,20+y);  call tracev (109+x,38+y,20+y);\r
846         call tracev (110+x,39+y,21+y);  call tracev (111+x,39+y,22+y);\r
847         call tracev (112+x,40+y,22+y);  call tracev (113+x,40+y,23+y);\r
848         call tracev (114+x,41+y,23+y);  call tracev (115+x,41+y,24+y);\r
849         call tracev (116+x,42+y,25+y);  call tracev (117+x,42+y,25+y);\r
850         call tracev (118+x,43+y,26+y);  call tracev (119+x,44+y,27+y);\r
851         call tracev (120+x,44+y,27+y);  call tracev (121+x,45+y,28+y);\r
852         call tracev (122+x,45+y,28+y);  call tracev (123+x,46+y,10+y);\r
853         call tracev (124+x,46+y,10+y);  call tracev (125+x,47+y,10+y);\r
854         call tracev (127+x,37+y,10+y);  call tracev (128+x,39+y,10+y);\r
855         call tracev (129+x,41+y,10+y);  call tracev (130+x,42+y,10+y);\r
856         call tracev (131+x,43+y,10+y);  call tracev (132+x,44+y,10+y);\r
857         call tracev (133+x,45+y,10+y);  call tracev (134+x,46+y,10+y);\r
858         call tracev (135+x,46+y,10+y);  call tracev (136+x,47+y,10+y);\r
859         call tracev (137+x,47+y,10+y);  call tracev (138+x,47+y,10+y);\r
860         call tracev (139+x,47+y,10+y);  call tracev (140+x,48+y,10+y);\r
861         call tracev (141+x,48+y,10+y);  call tracev (142+x,48+y,10+y);\r
862         call tracev (143+x,48+y,10+y);  call tracev (144+x,48+y,10+y);\r
863         call tracev (145+x,48+y,45+y);  call tracev (146+x,48+y,45+y);\r
864         call tracev (147+x,48+y,45+y);  call tracev (148+x,47+y,45+y);\r
865         call tracev (149+x,47+y,45+y);  call tracev (150+x,47+y,45+y);\r
866         call tracev (151+x,47+y,44+y);  call tracev (152+x,47+y,44+y);\r
867         call tracev (153+x,47+y,43+y);  call tracev (154+x,46+y,43+y);\r
868         call tracev (155+x,46+y,42+y);  call tracev (156+x,45+y,42+y);\r
869         call tracev (157+x,44+y,41+y);  call tracev (158+x,43+y,41+y);\r
870         call tracev (159+x,43+y,39+y);  call tracev (160+x,42+y,37+y);\r
871         call tracev (161+x,41+y,10+y);  call tracev (162+x,39+y,10+y);\r
872  end dessinmenu;\r
873 \r
874  unit dessinelem : procedure (x,y,c : integer);\r
875  begin\r
876         call color (c);\r
877         call tracev (41+x,3+y,1+y);     call tracev (42+x,3+y,1+y);\r
878         call tracev (43+x,3+y,1+y);     call tracev (44+x,3+y,1+y);\r
879         call tracev (45+x,3+y,1+y);     call tracev (46+x,3+y,1+y);\r
880         call tracev (47+x,3+y,1+y);     call tracev (48+x,3+y,1+y);\r
881         call tracev (49+x,3+y,1+y);     call tracev (50+x,3+y,1+y);\r
882         call tracev (51+x,3+y,1+y);     call tracev (52+x,37+y,1+y);\r
883         call tracev (53+x,37+y,1+y);    call tracev (54+x,37+y,1+y);\r
884         call tracev (55+x,37+y,1+y);    call tracev (56+x,37+y,1+y);\r
885         call tracev (57+x,37+y,1+y);    call tracev (58+x,37+y,1+y);\r
886         call tracev (59+x,37+y,1+y);    call tracev (60+x,37+y,1+y);\r
887         call tracev (61+x,37+y,1+y);    call tracev (62+x,37+y,1+y);\r
888         call tracev (63+x,37+y,1+y);    call tracev (64+x,37+y,1+y);\r
889         call tracev (65+x,37+y,1+y);    call tracev (66+x,37+y,1+y);\r
890         call tracev (67+x,37+y,1+y);    call tracev (68+x,37+y,1+y);\r
891         call tracev (69+x,37+y,1+y);    call tracev (70+x,37+y,1+y);\r
892         call tracev (71+x,3+y,1+y);     call tracev (72+x,3+y,1+y);\r
893         call tracev (73+x,3+y,1+y);     call tracev (74+x,3+y,1+y);\r
894         call tracev (75+x,3+y,1+y);     call tracev (76+x,3+y,1+y);\r
895         call tracev (77+x,3+y,1+y);     call tracev (78+x,3+y,1+y);\r
896         call tracev (79+x,3+y,1+y);     call tracev (80+x,3+y,1+y);\r
897         call tracev (82+x,2+y,1+y);     call tracev (83+x,4+y,1+y);\r
898         call tracev (84+x,6+y,1+y);     call tracev (85+x,8+y,1+y);\r
899         call tracev (86+x,10+y,1+y);    call tracev (87+x,12+y,1+y);\r
900         call tracev (88+x,14+y,1+y);    call tracev (89+x,16+y,1+y);\r
901         call tracev (90+x,18+y,1+y);    call tracev (91+x,20+y,1+y);\r
902         call tracev (92+x,22+y,1+y);    call tracev (93+x,24+y,1+y);\r
903         call tracev (94+x,26+y,1+y);    call tracev (94+x,37+y,36+y);\r
904         call tracev (95+x,28+y,1+y);    call tracev (95+x,37+y,34+y);\r
905         call tracev (96+x,30+y,1+y);    call tracev (96+x,36+y,32+y);\r
906         call tracev (97+x,34+y,1+y);    call tracev (98+x,32+y,1+y);\r
907         call tracev (99+x,30+y,1+y);    call tracev (100+x,28+y,2+y);\r
908         call tracev (101+x,26+y,4+y);   call tracev (102+x,24+y,6+y);\r
909         call tracev (103+x,22+y,8+y);   call tracev (104+x,20+y,10+y);\r
910         call tracev (105+x,18+y,12+y);  call tracev (106+x,16+y,10+y);\r
911         call tracev (107+x,14+y,8+y);   call tracev (108+x,12+y,6+y);\r
912         call tracev (109+x,10+y,4+y);   call tracev (110+x,8+y,2+y);\r
913         call tracev (111+x,6+y,1+y);    call tracev (112+x,4+y,1+y);\r
914         call tracev (113+x,2+y,1+y);    call tracev (115+x,37+y,1+y);\r
915         call tracev (116+x,37+y,1+y);   call tracev (117+x,37+y,1+y);\r
916         call tracev (118+x,37+y,1+y);   call tracev (119+x,37+y,1+y);\r
917         call tracev (120+x,37+y,1+y);   call tracev (121+x,37+y,1+y);\r
918         call tracev (122+x,37+y,1+y);   call tracev (123+x,37+y,1+y);\r
919         call tracev (124+x,37+y,1+y);   call tracev (125+x,37+y,1+y);\r
920         call tracev (126+x,37+y,1+y);   call tracev (127+x,37+y,1+y);\r
921         call tracev (128+x,37+y,1+y);   call tracev (129+x,37+y,1+y);\r
922         call tracev (130+x,37+y,1+y);   call tracev (131+x,37+y,1+y);\r
923         call tracev (132+x,37+y,1+y);   call tracev (133+x,3+y,1+y);\r
924         call tracev (133+x,27+y,25+y);  call tracev (134+x,3+y,1+y);\r
925         call tracev (134+x,27+y,25+y);  call tracev (135+x,3+y,1+y);\r
926         call tracev (135+x,28+y,26+y);  call tracev (136+x,3+y,1+y);\r
927         call tracev (136+x,28+y,26+y);  call tracev (137+x,3+y,1+y);\r
928         call tracev (137+x,28+y,26+y);  call tracev (138+x,4+y,1+y);\r
929         call tracev (138+x,28+y,25+y);  call tracev (139+x,4+y,1+y);\r
930         call tracev (139+x,28+y,25+y);  call tracev (140+x,4+y,1+y);\r
931         call tracev (140+x,28+y,25+y);  call tracev (141+x,4+y,1+y);\r
932         call tracev (141+x,28+y,25+y);  call tracev (142+x,4+y,2+y);\r
933         call tracev (142+x,27+y,25+y);  call tracev (143+x,5+y,2+y);\r
934         call tracev (143+x,27+y,24+y);  call tracev (144+x,6+y,3+y);\r
935         call tracev (144+x,26+y,23+y);  call tracev (145+x,6+y,4+y);\r
936         call tracev (145+x,25+y,22+y);  call tracev (146+x,8+y,5+y);\r
937         call tracev (146+x,24+y,22+y);  call tracev (147+x,10+y,5+y);\r
938         call tracev (147+x,23+y,19+y);  call tracev (148+x,14+y,6+y);\r
939         call tracev (148+x,22+y,17+y);  call tracev (149+x,21+y,8+y);\r
940         call tracev (150+x,20+y,10+y);  call tracev (152+x,37+y,1+y);\r
941         call tracev (153+x,37+y,1+y);   call tracev (154+x,37+y,1+y);\r
942         call tracev (155+x,37+y,1+y);   call tracev (156+x,37+y,1+y);\r
943         call tracev (157+x,37+y,1+y);   call tracev (158+x,37+y,1+y);\r
944         call tracev (159+x,37+y,1+y);   call tracev (160+x,37+y,1+y);\r
945         call tracev (161+x,37+y,1+y);   call tracev (162+x,37+y,1+y);\r
946         call tracev (163+x,37+y,1+y);   call tracev (164+x,37+y,1+y);\r
947         call tracev (165+x,37+y,1+y);   call tracev (166+x,37+y,1+y);\r
948         call tracev (167+x,37+y,1+y);   call tracev (168+x,37+y,1+y);\r
949         call tracev (169+x,37+y,1+y);   call tracev (170+x,37+y,1+y);\r
950         call tracev (171+x,3+y,1+y);    call tracev (171+x,13+y,11+y);\r
951         call tracev (171+x,37+y,35+y);  call tracev (172+x,3+y,1+y);\r
952         call tracev (172+x,13+y,11+y);  call tracev (172+x,37+y,35+y);\r
953         call tracev (173+x,3+y,1+y);    call tracev (173+x,13+y,11+y);\r
954         call tracev (173+x,37+y,35+y);  call tracev (174+x,3+y,1+y);\r
955         call tracev (174+x,13+y,11+y);  call tracev (174+x,37+y,35+y);\r
956         call tracev (175+x,3+y,1+y);    call tracev (175+x,13+y,11+y);\r
957         call tracev (175+x,37+y,35+y);  call tracev (176+x,3+y,1+y);\r
958         call tracev (176+x,13+y,11+y);  call tracev (176+x,37+y,35+y);\r
959         call tracev (177+x,3+y,1+y);    call tracev (177+x,13+y,11+y);\r
960         call tracev (177+x,37+y,35+y);  call tracev (178+x,3+y,1+y);\r
961         call tracev (178+x,13+y,11+y);  call tracev (178+x,37+y,35+y);\r
962         call tracev (179+x,3+y,1+y);    call tracev (179+x,13+y,11+y);\r
963         call tracev (179+x,37+y,35+y);  call tracev (180+x,3+y,1+y);\r
964         call tracev (180+x,13+y,11+y);  call tracev (180+x,37+y,35+y);\r
965         call tracev (181+x,3+y,1+y);    call tracev (181+x,13+y,11+y);\r
966         call tracev (181+x,37+y,35+y);  call tracev (182+x,3+y,1+y);\r
967         call tracev (182+x,13+y,11+y);  call tracev (182+x,37+y,35+y);\r
968         call tracev (183+x,3+y,1+y);    call tracev (183+x,13+y,11+y);\r
969         call tracev (183+x,37+y,35+y);  call tracev (184+x,3+y,1+y);\r
970         call tracev (184+x,13+y,11+y);  call tracev (184+x,37+y,35+y);\r
971         call tracev (185+x,3+y,1+y);    call tracev (185+x,13+y,11+y);\r
972         call tracev (185+x,37+y,35+y);  call tracev (186+x,13+y,11+y);\r
973         call tracev (186+x,37+y,35+y);  call tracev (187+x,37+y,35+y);\r
974         call tracev (188+x,37+y,35+y);\r
975  end dessinelem;\r
976 \r
977  unit dessinrand : procedure (x,y,c : integer);\r
978  begin\r
979         call color (c);\r
980         call tracev (0+x,39+y,2+y);     call tracev (1+x,39+y,2+y);\r
981         call tracev (2+x,39+y,2+y);     call tracev (3+x,39+y,2+y);\r
982         call tracev (4+x,39+y,2+y);     call tracev (5+x,39+y,2+y);\r
983         call tracev (6+x,39+y,2+y);     call tracev (7+x,39+y,2+y);\r
984         call tracev (8+x,39+y,2+y);     call tracev (9+x,39+y,2+y);\r
985         call tracev (10+x,39+y,2+y);    call tracev (11+x,39+y,2+y);\r
986         call tracev (12+x,39+y,2+y);    call tracev (13+x,39+y,2+y);\r
987         call tracev (14+x,39+y,2+y);    call tracev (15+x,39+y,2+y);\r
988         call tracev (16+x,39+y,2+y);    call tracev (17+x,39+y,2+y);\r
989         call tracev (18+x,39+y,2+y);    call tracev (19+x,5+y,2+y);\r
990         call tracev (19+x,31+y,27+y);   call tracev (20+x,5+y,2+y);\r
991         call tracev (20+x,32+y,27+y);   call tracev (21+x,5+y,2+y);\r
992         call tracev (21+x,29+y,27+y);   call tracev (21+x,33+y,30+y);\r
993         call tracev (22+x,5+y,2+y);     call tracev (22+x,29+y,27+y);\r
994         call tracev (22+x,34+y,31+y);   call tracev (23+x,5+y,2+y);\r
995         call tracev (23+x,29+y,27+y);   call tracev (23+x,34+y,32+y);\r
996         call tracev (24+x,5+y,3+y);     call tracev (24+x,29+y,27+y);\r
997         call tracev (24+x,35+y,32+y);   call tracev (25+x,5+y,3+y);\r
998         call tracev (25+x,29+y,27+y);   call tracev (25+x,35+y,33+y);\r
999         call tracev (26+x,5+y,3+y);     call tracev (26+x,29+y,27+y);\r
1000         call tracev (26+x,36+y,33+y);   call tracev (27+x,6+y,3+y);\r
1001         call tracev (27+x,29+y,26+y);   call tracev (27+x,36+y,34+y);\r
1002         call tracev (28+x,6+y,4+y);     call tracev (28+x,28+y,26+y);\r
1003         call tracev (28+x,36+y,34+y);   call tracev (29+x,7+y,4+y);\r
1004         call tracev (29+x,28+y,25+y);   call tracev (29+x,37+y,35+y);\r
1005         call tracev (30+x,7+y,4+y);     call tracev (30+x,27+y,25+y);\r
1006         call tracev (30+x,37+y,35+y);   call tracev (31+x,8+y,5+y);\r
1007         call tracev (31+x,27+y,24+y);   call tracev (31+x,38+y,36+y);\r
1008         call tracev (32+x,10+y,6+y);    call tracev (32+x,26+y,23+y);\r
1009         call tracev (32+x,38+y,36+y);   call tracev (33+x,12+y,7+y);\r
1010         call tracev (33+x,25+y,21+y);   call tracev (33+x,39+y,36+y);\r
1011         call tracev (34+x,24+y,8+y);    call tracev (34+x,39+y,36+y);\r
1012         call tracev (35+x,23+y,10+y);   call tracev (35+x,39+y,36+y);\r
1013         call tracev (36+x,21+y,12+y);   call tracev (36+x,39+y,36+y);\r
1014         call tracev (38+x,39+y,37+y);   call tracev (39+x,39+y,35+y);\r
1015         call tracev (40+x,38+y,33+y);   call tracev (41+x,36+y,31+y);\r
1016         call tracev (42+x,35+y,29+y);   call tracev (43+x,35+y,27+y);\r
1017         call tracev (44+x,30+y,25+y);   call tracev (44+x,35+y,32+y);\r
1018         call tracev (45+x,28+y,23+y);   call tracev (45+x,35+y,32+y);\r
1019         call tracev (46+x,26+y,21+y);   call tracev (46+x,35+y,32+y);\r
1020         call tracev (47+x,24+y,18+y);   call tracev (47+x,35+y,32+y);\r
1021         call tracev (48+x,25+y,16+y);   call tracev (48+x,35+y,32+y);\r
1022         call tracev (49+x,27+y,14+y);   call tracev (49+x,35+y,32+y);\r
1023         call tracev (50+x,28+y,12+y);   call tracev (50+x,35+y,32+y);\r
1024         call tracev (51+x,30+y,10+y);   call tracev (51+x,35+y,32+y);\r
1025         call tracev (52+x,35+y,8+y);    call tracev (53+x,36+y,6+y);\r
1026         call tracev (54+x,38+y,4+y);    call tracev (55+x,39+y,2+y);\r
1027         call tracev (56+x,39+y,4+y);    call tracev (57+x,39+y,6+y);\r
1028         call tracev (58+x,39+y,8+y);    call tracev (59+x,39+y,10+y);\r
1029         call tracev (60+x,39+y,12+y);   call tracev (61+x,39+y,14+y);\r
1030         call tracev (62+x,39+y,16+y);   call tracev (63+x,39+y,18+y);\r
1031         call tracev (64+x,39+y,20+y);   call tracev (65+x,39+y,22+y);\r
1032         call tracev (66+x,39+y,24+y);   call tracev (67+x,39+y,26+y);\r
1033         call tracev (68+x,39+y,28+y);   call tracev (69+x,39+y,30+y);\r
1034         call tracev (70+x,39+y,32+y);   call tracev (71+x,39+y,34+y);\r
1035         call tracev (72+x,39+y,36+y);   call tracev (73+x,39+y,38+y);\r
1036         call tracev (75+x,39+y,2+y);    call tracev (76+x,39+y,3+y);\r
1037         call tracev (77+x,22+y,3+y);    call tracev (78+x,22+y,4+y);\r
1038         call tracev (79+x,23+y,4+y);    call tracev (80+x,23+y,5+y);\r
1039         call tracev (81+x,24+y,6+y);    call tracev (82+x,24+y,6+y);\r
1040         call tracev (83+x,25+y,7+y);    call tracev (84+x,25+y,8+y);\r
1041         call tracev (85+x,26+y,8+y);    call tracev (86+x,27+y,9+y);\r
1042         call tracev (87+x,27+y,9+y);    call tracev (88+x,28+y,10+y);\r
1043         call tracev (89+x,28+y,11+y);   call tracev (90+x,29+y,11+y);\r
1044         call tracev (91+x,29+y,12+y);   call tracev (92+x,30+y,12+y);\r
1045         call tracev (93+x,31+y,13+y);   call tracev (94+x,31+y,14+y);\r
1046         call tracev (95+x,32+y,14+y);   call tracev (96+x,32+y,15+y);\r
1047         call tracev (97+x,33+y,15+y);   call tracev (98+x,33+y,16+y);\r
1048         call tracev (99+x,34+y,17+y);   call tracev (100+x,34+y,17+y);\r
1049         call tracev (101+x,35+y,18+y);  call tracev (102+x,36+y,19+y);\r
1050         call tracev (103+x,36+y,19+y);  call tracev (104+x,37+y,20+y);\r
1051         call tracev (105+x,37+y,20+y);  call tracev (106+x,38+y,2+y);\r
1052         call tracev (107+x,38+y,2+y);   call tracev (108+x,39+y,2+y);\r
1053         call tracev (111+x,39+y,2+y);   call tracev (112+x,39+y,2+y);\r
1054         call tracev (113+x,39+y,2+y);   call tracev (114+x,39+y,2+y);\r
1055         call tracev (115+x,39+y,2+y);   call tracev (116+x,39+y,2+y);\r
1056         call tracev (117+x,39+y,2+y);   call tracev (118+x,39+y,2+y);\r
1057         call tracev (119+x,39+y,2+y);   call tracev (120+x,39+y,2+y);\r
1058         call tracev (121+x,39+y,2+y);   call tracev (122+x,39+y,2+y);\r
1059         call tracev (123+x,39+y,2+y);   call tracev (124+x,39+y,2+y);\r
1060         call tracev (125+x,39+y,2+y);   call tracev (126+x,39+y,2+y);\r
1061         call tracev (127+x,39+y,2+y);   call tracev (128+x,39+y,2+y);\r
1062         call tracev (129+x,39+y,2+y);   call tracev (130+x,5+y,2+y);\r
1063         call tracev (130+x,39+y,36+y);  call tracev (131+x,5+y,2+y);\r
1064         call tracev (131+x,39+y,36+y);  call tracev (132+x,5+y,2+y);\r
1065         call tracev (132+x,38+y,36+y);  call tracev (133+x,5+y,2+y);\r
1066         call tracev (133+x,38+y,36+y);  call tracev (134+x,5+y,2+y);\r
1067         call tracev (134+x,38+y,36+y);  call tracev (135+x,5+y,2+y);\r
1068         call tracev (135+x,38+y,36+y);  call tracev (136+x,6+y,2+y);\r
1069         call tracev (136+x,37+y,35+y);  call tracev (137+x,6+y,3+y);\r
1070         call tracev (137+x,37+y,35+y);  call tracev (138+x,6+y,3+y);\r
1071         call tracev (138+x,37+y,35+y);  call tracev (139+x,7+y,4+y);\r
1072         call tracev (139+x,36+y,34+y);  call tracev (140+x,7+y,4+y);\r
1073         call tracev (140+x,36+y,34+y);  call tracev (141+x,8+y,5+y);\r
1074         call tracev (141+x,35+y,33+y);  call tracev (142+x,9+y,6+y);\r
1075         call tracev (142+x,35+y,32+y);  call tracev (143+x,11+y,7+y);\r
1076         call tracev (143+x,34+y,30+y);  call tracev (144+x,13+y,8+y);\r
1077         call tracev (144+x,33+y,28+y);  call tracev (145+x,16+y,10+y);\r
1078         call tracev (145+x,31+y,25+y);  call tracev (146+x,19+y,11+y);\r
1079         call tracev (146+x,30+y,22+y);  call tracev (147+x,28+y,13+y);\r
1080         call tracev (148+x,26+y,15+y);  call tracev (150+x,27+y,15+y);\r
1081         call tracev (151+x,29+y,13+y);  call tracev (152+x,31+y,11+y);\r
1082         call tracev (153+x,32+y,10+y);  call tracev (154+x,34+y,8+y);\r
1083         call tracev (155+x,35+y,7+y);   call tracev (156+x,36+y,6+y);\r
1084         call tracev (157+x,36+y,6+y);   call tracev (158+x,37+y,5+y);\r
1085         call tracev (159+x,37+y,4+y);   call tracev (160+x,38+y,4+y);\r
1086         call tracev (161+x,38+y,3+y);   call tracev (162+x,38+y,3+y);\r
1087         call tracev (163+x,39+y,2+y);   call tracev (164+x,39+y,2+y);\r
1088         call tracev (165+x,39+y,2+y);   call tracev (166+x,39+y,2+y);\r
1089         call tracev (167+x,40+y,2+y);   call tracev (168+x,40+y,2+y);\r
1090         call tracev (169+x,5+y,2+y);    call tracev (169+x,40+y,37+y);\r
1091         call tracev (170+x,5+y,2+y);    call tracev (170+x,40+y,37+y);\r
1092         call tracev (171+x,5+y,2+y);    call tracev (171+x,39+y,37+y);\r
1093         call tracev (172+x,5+y,2+y);    call tracev (172+x,39+y,37+y);\r
1094         call tracev (173+x,5+y,2+y);    call tracev (173+x,39+y,37+y);\r
1095         call tracev (174+x,5+y,2+y);    call tracev (174+x,39+y,37+y);\r
1096         call tracev (175+x,6+y,2+y);    call tracev (175+x,38+y,36+y);\r
1097         call tracev (176+x,6+y,3+y);    call tracev (176+x,38+y,36+y);\r
1098         call tracev (177+x,6+y,3+y);    call tracev (177+x,38+y,35+y);\r
1099         call tracev (178+x,7+y,4+y);    call tracev (178+x,37+y,35+y);\r
1100         call tracev (179+x,7+y,4+y);    call tracev (179+x,37+y,34+y);\r
1101         call tracev (180+x,8+y,5+y);    call tracev (180+x,36+y,33+y);\r
1102         call tracev (181+x,9+y,6+y);    call tracev (181+x,36+y,32+y);\r
1103         call tracev (182+x,11+y,7+y);   call tracev (182+x,35+y,31+y);\r
1104         call tracev (183+x,13+y,8+y);   call tracev (183+x,34+y,29+y);\r
1105         call tracev (184+x,16+y,10+y);  call tracev (184+x,32+y,26+y);\r
1106         call tracev (184+x,39+y,37+y);  call tracev (185+x,19+y,11+y);\r
1107         call tracev (185+x,31+y,23+y);  call tracev (185+x,39+y,35+y);\r
1108         call tracev (186+x,29+y,13+y);  call tracev (186+x,37+y,32+y);\r
1109         call tracev (187+x,27+y,15+y);  call tracev (187+x,35+y,30+y);\r
1110         call tracev (188+x,33+y,27+y);  call tracev (189+x,30+y,24+y);\r
1111         call tracev (190+x,28+y,22+y);  call tracev (191+x,29+y,19+y);\r
1112         call tracev (192+x,30+y,17+y);  call tracev (193+x,32+y,14+y);\r
1113         call tracev (194+x,33+y,12+y);  call tracev (195+x,35+y,9+y);\r
1114         call tracev (196+x,36+y,6+y);   call tracev (197+x,38+y,4+y);\r
1115         call tracev (198+x,39+y,2+y);   call tracev (199+x,38+y,3+y);\r
1116         call tracev (200+x,36+y,5+y);   call tracev (201+x,35+y,6+y);\r
1117         call tracev (202+x,33+y,8+y);   call tracev (203+x,32+y,9+y);\r
1118         call tracev (204+x,30+y,11+y);  call tracev (205+x,29+y,12+y);\r
1119         call tracev (206+x,28+y,14+y);  call tracev (207+x,30+y,12+y);\r
1120         call tracev (208+x,33+y,11+y);  call tracev (209+x,35+y,9+y);\r
1121         call tracev (210+x,37+y,8+y);   call tracev (211+x,39+y,6+y);\r
1122         call tracev (212+x,39+y,5+y);   call tracev (213+x,39+y,3+y);\r
1123         call tracev (214+x,39+y,2+y);   call tracev (215+x,39+y,4+y);\r
1124         call tracev (216+x,39+y,6+y);   call tracev (217+x,39+y,9+y);\r
1125         call tracev (218+x,39+y,11+y);  call tracev (219+x,39+y,13+y);\r
1126         call tracev (220+x,39+y,16+y);  call tracev (221+x,39+y,18+y);\r
1127         call tracev (222+x,39+y,21+y);  call tracev (223+x,39+y,23+y);\r
1128         call tracev (224+x,39+y,25+y);  call tracev (225+x,39+y,28+y);\r
1129         call tracev (226+x,39+y,30+y);  call tracev (227+x,39+y,33+y);\r
1130         call tracev (228+x,39+y,35+y);  call tracev (229+x,39+y,37+y);\r
1131  end dessinrand;\r
1132  \r
1133  \r
1134  unit dessinquick : procedure (x,y,c : integer);\r
1135  begin\r
1136         call color (c);\r
1137         call tracev (30+x,26+y,14+y);   call tracev (31+x,28+y,12+y);\r
1138         call tracev (32+x,30+y,10+y);   call tracev (33+x,31+y,9+y);\r
1139         call tracev (34+x,33+y,7+y);    call tracev (35+x,34+y,6+y);\r
1140         call tracev (36+x,35+y,5+y);    call tracev (37+x,36+y,4+y);\r
1141         call tracev (38+x,36+y,3+y);    call tracev (39+x,37+y,3+y);\r
1142         call tracev (40+x,37+y,2+y);    call tracev (41+x,37+y,2+y);\r
1143         call tracev (42+x,37+y,1+y);    call tracev (43+x,38+y,1+y);\r
1144         call tracev (44+x,38+y,1+y);    call tracev (45+x,38+y,1+y);\r
1145         call tracev (46+x,39+y,1+y);    call tracev (47+x,39+y,1+y);\r
1146         call tracev (48+x,4+y,1+y);     call tracev (48+x,39+y,36+y);\r
1147         call tracev (49+x,4+y,1+y);     call tracev (49+x,39+y,36+y);\r
1148         call tracev (50+x,4+y,1+y);     call tracev (50+x,38+y,36+y);\r
1149         call tracev (51+x,4+y,1+y);     call tracev (51+x,38+y,36+y);\r
1150         call tracev (52+x,4+y,1+y);     call tracev (52+x,38+y,36+y);\r
1151         call tracev (53+x,4+y,1+y);     call tracev (53+x,38+y,35+y);\r
1152         call tracev (54+x,4+y,1+y);     call tracev (54+x,31+y,30+y);\r
1153         call tracev (54+x,38+y,35+y);   call tracev (55+x,5+y,2+y);\r
1154         call tracev (55+x,31+y,28+y);   call tracev (55+x,37+y,34+y);\r
1155         call tracev (56+x,5+y,2+y);     call tracev (56+x,32+y,29+y);\r
1156         call tracev (56+x,37+y,34+y);   call tracev (57+x,5+y,3+y);\r
1157         call tracev (57+x,36+y,30+y);   call tracev (58+x,6+y,3+y);\r
1158         call tracev (58+x,36+y,31+y);   call tracev (59+x,7+y,4+y);\r
1159         call tracev (59+x,36+y,32+y);   call tracev (60+x,7+y,5+y);\r
1160         call tracev (60+x,36+y,33+y);   call tracev (61+x,8+y,5+y);\r
1161         call tracev (61+x,36+y,31+y);   call tracev (62+x,10+y,6+y);\r
1162         call tracev (62+x,33+y,29+y);   call tracev (62+x,37+y,34+y);\r
1163         call tracev (63+x,12+y,7+y);    call tracev (63+x,32+y,28+y);\r
1164         call tracev (63+x,38+y,35+y);   call tracev (64+x,15+y,9+y);\r
1165         call tracev (64+x,31+y,27+y);   call tracev (64+x,38+y,35+y);\r
1166         call tracev (65+x,29+y,11+y);   call tracev (65+x,38+y,36+y);\r
1167         call tracev (66+x,27+y,14+y);   call tracev (66+x,38+y,36+y);\r
1168         call tracev (67+x,21+y,18+y);   call tracev (67+x,39+y,36+y);\r
1169         call tracev (69+x,28+y,1+y);    call tracev (70+x,30+y,1+y);\r
1170         call tracev (71+x,32+y,1+y);    call tracev (72+x,33+y,1+y);\r
1171         call tracev (73+x,34+y,1+y);    call tracev (74+x,35+y,1+y);\r
1172         call tracev (75+x,36+y,1+y);    call tracev (76+x,37+y,1+y);\r
1173         call tracev (77+x,37+y,1+y);    call tracev (78+x,38+y,1+y);\r
1174         call tracev (79+x,38+y,1+y);    call tracev (80+x,38+y,1+y);\r
1175         call tracev (81+x,38+y,1+y);    call tracev (82+x,39+y,1+y);\r
1176         call tracev (83+x,39+y,1+y);    call tracev (84+x,39+y,1+y);\r
1177         call tracev (85+x,39+y,1+y);    call tracev (86+x,39+y,1+y);\r
1178         call tracev (87+x,39+y,36+y);   call tracev (88+x,39+y,36+y);\r
1179         call tracev (89+x,39+y,36+y);   call tracev (90+x,38+y,36+y);\r
1180         call tracev (91+x,38+y,36+y);   call tracev (92+x,38+y,36+y);\r
1181         call tracev (93+x,38+y,35+y);   call tracev (94+x,38+y,35+y);\r
1182         call tracev (95+x,38+y,34+y);   call tracev (96+x,37+y,34+y);\r
1183         call tracev (97+x,37+y,33+y);   call tracev (98+x,36+y,33+y);\r
1184         call tracev (99+x,35+y,32+y);   call tracev (100+x,34+y,32+y);\r
1185         call tracev (101+x,34+y,30+y);  call tracev (102+x,33+y,28+y);\r
1186         call tracev (103+x,32+y,1+y);   call tracev (104+x,30+y,1+y);\r
1187         call tracev (107+x,38+y,1+y);   call tracev (108+x,38+y,1+y);\r
1188         call tracev (109+x,38+y,1+y);   call tracev (110+x,38+y,1+y);\r
1189         call tracev (111+x,38+y,1+y);   call tracev (112+x,38+y,1+y);\r
1190         call tracev (113+x,38+y,1+y);   call tracev (114+x,38+y,1+y);\r
1191         call tracev (115+x,38+y,1+y);   call tracev (116+x,38+y,1+y);\r
1192         call tracev (117+x,38+y,1+y);   call tracev (118+x,38+y,1+y);\r
1193         call tracev (119+x,38+y,1+y);   call tracev (120+x,38+y,1+y);\r
1194         call tracev (121+x,38+y,1+y);   call tracev (122+x,38+y,1+y);\r
1195         call tracev (123+x,38+y,1+y);   call tracev (124+x,38+y,1+y);\r
1196         call tracev (126+x,22+y,18+y);  call tracev (127+x,26+y,14+y);\r
1197         call tracev (128+x,29+y,11+y);  call tracev (129+x,31+y,9+y);\r
1198         call tracev (130+x,33+y,7+y);   call tracev (131+x,34+y,6+y);\r
1199         call tracev (132+x,35+y,5+y);   call tracev (133+x,35+y,5+y);\r
1200         call tracev (134+x,36+y,4+y);   call tracev (135+x,36+y,3+y);\r
1201         call tracev (136+x,37+y,3+y);   call tracev (137+x,37+y,2+y);\r
1202         call tracev (138+x,37+y,2+y);   call tracev (139+x,38+y,1+y);\r
1203         call tracev (140+x,38+y,1+y);   call tracev (141+x,38+y,1+y);\r
1204         call tracev (142+x,38+y,1+y);   call tracev (143+x,39+y,1+y);\r
1205         call tracev (144+x,39+y,1+y);   call tracev (145+x,4+y,1+y);\r
1206         call tracev (145+x,39+y,36+y);  call tracev (146+x,4+y,1+y);\r
1207         call tracev (146+x,39+y,36+y);  call tracev (147+x,4+y,1+y);\r
1208         call tracev (147+x,39+y,36+y);  call tracev (148+x,4+y,1+y);\r
1209         call tracev (148+x,38+y,36+y);  call tracev (149+x,4+y,1+y);\r
1210         call tracev (149+x,38+y,36+y);  call tracev (150+x,4+y,1+y);\r
1211         call tracev (150+x,38+y,36+y);  call tracev (151+x,4+y,2+y);\r
1212         call tracev (151+x,38+y,36+y);  call tracev (152+x,4+y,2+y);\r
1213         call tracev (152+x,38+y,35+y);  call tracev (153+x,5+y,2+y);\r
1214         call tracev (153+x,37+y,35+y);  call tracev (154+x,5+y,2+y);\r
1215         call tracev (154+x,37+y,34+y);  call tracev (155+x,6+y,3+y);\r
1216         call tracev (155+x,36+y,34+y);  call tracev (156+x,6+y,4+y);\r
1217         call tracev (156+x,36+y,33+y);  call tracev (157+x,7+y,4+y);\r
1218         call tracev (157+x,35+y,33+y);  call tracev (158+x,8+y,5+y);\r
1219         call tracev (158+x,35+y,32+y);  call tracev (159+x,10+y,5+y);\r
1220         call tracev (159+x,34+y,30+y);  call tracev (160+x,11+y,6+y);\r
1221         call tracev (160+x,33+y,29+y);  call tracev (161+x,11+y,8+y);\r
1222         call tracev (161+x,32+y,29+y);  call tracev (162+x,11+y,10+y);\r
1223         call tracev (162+x,31+y,29+y);  call tracev (164+x,38+y,1+y);\r
1224         call tracev (165+x,38+y,1+y);   call tracev (166+x,38+y,1+y);\r
1225         call tracev (167+x,38+y,1+y);   call tracev (168+x,38+y,1+y);\r
1226         call tracev (169+x,38+y,1+y);   call tracev (170+x,38+y,1+y);\r
1227         call tracev (171+x,38+y,1+y);   call tracev (172+x,38+y,1+y);\r
1228         call tracev (173+x,38+y,1+y);   call tracev (174+x,38+y,1+y);\r
1229         call tracev (175+x,38+y,1+y);   call tracev (176+x,38+y,1+y);\r
1230         call tracev (177+x,38+y,1+y);   call tracev (178+x,38+y,1+y);\r
1231         call tracev (179+x,38+y,1+y);   call tracev (180+x,38+y,1+y);\r
1232         call tracev (181+x,38+y,1+y);   call tracev (182+x,38+y,1+y);\r
1233         call tracev (183+x,13+y,11+y);  call tracev (184+x,13+y,11+y);\r
1234         call tracev (185+x,13+y,10+y);  call tracev (186+x,15+y,9+y);\r
1235         call tracev (187+x,11+y,9+y);   call tracev (187+x,17+y,12+y);\r
1236         call tracev (188+x,11+y,8+y);   call tracev (188+x,19+y,14+y);\r
1237         call tracev (189+x,10+y,7+y);   call tracev (189+x,21+y,16+y);\r
1238         call tracev (190+x,9+y,6+y);    call tracev (190+x,23+y,18+y);\r
1239         call tracev (191+x,9+y,6+y);    call tracev (191+x,25+y,20+y);\r
1240         call tracev (192+x,8+y,5+y);    call tracev (192+x,27+y,22+y);\r
1241         call tracev (193+x,7+y,4+y);    call tracev (193+x,29+y,24+y);\r
1242         call tracev (194+x,7+y,4+y);    call tracev (194+x,31+y,25+y);\r
1243         call tracev (195+x,6+y,3+y);    call tracev (195+x,33+y,27+y);\r
1244         call tracev (196+x,5+y,2+y);    call tracev (196+x,35+y,29+y);\r
1245         call tracev (197+x,5+y,2+y);    call tracev (197+x,37+y,31+y);\r
1246         call tracev (198+x,4+y,1+y);    call tracev (198+x,38+y,33+y);\r
1247         call tracev (199+x,38+y,35+y);  call tracev (200+x,38+y,37+y);\r
1248  end dessinquick;\r
1249 \r
1250  unit dessinbubble : procedure (x,y,c : integer);\r
1251  begin\r
1252         call color (c);\r
1253         call tracev (4+x,39+y,3+y);     call tracev (5+x,39+y,3+y);\r
1254         call tracev (6+x,39+y,3+y);     call tracev (7+x,39+y,3+y);\r
1255         call tracev (8+x,39+y,3+y);     call tracev (9+x,39+y,3+y);\r
1256         call tracev (10+x,39+y,3+y);    call tracev (11+x,39+y,3+y);\r
1257         call tracev (12+x,39+y,3+y);    call tracev (13+x,39+y,3+y);\r
1258         call tracev (14+x,39+y,3+y);    call tracev (15+x,39+y,3+y);\r
1259         call tracev (16+x,39+y,3+y);    call tracev (17+x,39+y,3+y);\r
1260         call tracev (18+x,39+y,3+y);    call tracev (19+x,39+y,3+y);\r
1261         call tracev (20+x,39+y,3+y);    call tracev (21+x,39+y,3+y);\r
1262         call tracev (22+x,5+y,3+y);     call tracev (22+x,39+y,37+y);\r
1263         call tracev (23+x,5+y,3+y);     call tracev (23+x,22+y,21+y);\r
1264         call tracev (23+x,39+y,37+y);   call tracev (24+x,5+y,3+y);\r
1265         call tracev (24+x,23+y,19+y);   call tracev (24+x,39+y,37+y);\r
1266         call tracev (25+x,5+y,3+y);     call tracev (25+x,23+y,19+y);\r
1267         call tracev (25+x,39+y,37+y);   call tracev (26+x,5+y,3+y);\r
1268         call tracev (26+x,23+y,19+y);   call tracev (26+x,39+y,37+y);\r
1269         call tracev (27+x,6+y,3+y);     call tracev (27+x,23+y,19+y);\r
1270         call tracev (27+x,39+y,37+y);   call tracev (28+x,6+y,3+y);\r
1271         call tracev (28+x,23+y,20+y);   call tracev (28+x,39+y,37+y);\r
1272         call tracev (29+x,6+y,3+y);     call tracev (29+x,23+y,20+y);\r
1273         call tracev (29+x,39+y,37+y);   call tracev (30+x,6+y,3+y);\r
1274         call tracev (30+x,23+y,20+y);   call tracev (30+x,39+y,36+y);\r
1275         call tracev (31+x,6+y,4+y);     call tracev (31+x,23+y,20+y);\r
1276         call tracev (31+x,39+y,36+y);   call tracev (32+x,6+y,4+y);\r
1277         call tracev (32+x,23+y,20+y);   call tracev (32+x,39+y,36+y);\r
1278         call tracev (33+x,7+y,4+y);     call tracev (33+x,23+y,19+y);\r
1279         call tracev (33+x,38+y,36+y);   call tracev (34+x,7+y,5+y);\r
1280         call tracev (34+x,24+y,19+y);   call tracev (34+x,38+y,35+y);\r
1281         call tracev (35+x,8+y,5+y);     call tracev (35+x,21+y,18+y);\r
1282         call tracev (35+x,26+y,22+y);   call tracev (35+x,38+y,35+y);\r
1283         call tracev (36+x,10+y,6+y);    call tracev (36+x,21+y,18+y);\r
1284         call tracev (36+x,28+y,23+y);   call tracev (36+x,37+y,34+y);\r
1285         call tracev (37+x,12+y,6+y);    call tracev (37+x,20+y,14+y);\r
1286         call tracev (37+x,30+y,24+y);   call tracev (37+x,37+y,32+y);\r
1287         call tracev (38+x,20+y,7+y);    call tracev (38+x,36+y,26+y);\r
1288         call tracev (39+x,19+y,9+y);    call tracev (39+x,34+y,28+y);\r
1289         call tracev (42+x,29+y,3+y);    call tracev (43+x,32+y,3+y);\r
1290         call tracev (44+x,34+y,3+y);    call tracev (45+x,35+y,3+y);\r
1291         call tracev (46+x,36+y,3+y);    call tracev (47+x,37+y,3+y);\r
1292         call tracev (48+x,38+y,3+y);    call tracev (49+x,39+y,3+y);\r
1293         call tracev (50+x,39+y,3+y);    call tracev (51+x,40+y,3+y);\r
1294         call tracev (52+x,40+y,3+y);    call tracev (53+x,40+y,3+y);\r
1295         call tracev (54+x,40+y,3+y);    call tracev (55+x,40+y,3+y);\r
1296         call tracev (56+x,40+y,3+y);    call tracev (57+x,40+y,3+y);\r
1297         call tracev (58+x,40+y,3+y);    call tracev (59+x,40+y,3+y);\r
1298         call tracev (60+x,40+y,38+y);   call tracev (61+x,40+y,38+y);\r
1299         call tracev (62+x,40+y,38+y);   call tracev (63+x,40+y,37+y);\r
1300         call tracev (64+x,40+y,37+y);   call tracev (65+x,40+y,37+y);\r
1301         call tracev (66+x,39+y,37+y);   call tracev (67+x,39+y,37+y);\r
1302         call tracev (68+x,39+y,36+y);   call tracev (69+x,38+y,36+y);\r
1303         call tracev (70+x,38+y,35+y);   call tracev (71+x,37+y,35+y);\r
1304         call tracev (72+x,37+y,34+y);   call tracev (73+x,36+y,33+y);\r
1305         call tracev (74+x,35+y,32+y);   call tracev (75+x,34+y,29+y);\r
1306         call tracev (76+x,33+y,3+y);    call tracev (77+x,32+y,3+y);\r
1307         call tracev (79+x,39+y,3+y);    call tracev (80+x,39+y,3+y);\r
1308         call tracev (81+x,39+y,3+y);    call tracev (82+x,39+y,3+y);\r
1309         call tracev (83+x,39+y,3+y);    call tracev (84+x,39+y,3+y);\r
1310         call tracev (85+x,39+y,3+y);    call tracev (86+x,39+y,3+y);\r
1311         call tracev (87+x,39+y,3+y);    call tracev (88+x,39+y,3+y);\r
1312         call tracev (89+x,39+y,3+y);    call tracev (90+x,39+y,3+y);\r
1313         call tracev (91+x,39+y,3+y);    call tracev (92+x,39+y,3+y);\r
1314         call tracev (93+x,39+y,3+y);    call tracev (94+x,39+y,3+y);\r
1315         call tracev (95+x,39+y,3+y);    call tracev (96+x,39+y,3+y);\r
1316         call tracev (97+x,39+y,3+y);    call tracev (98+x,5+y,3+y);\r
1317         call tracev (98+x,39+y,37+y);   call tracev (99+x,5+y,3+y);\r
1318         call tracev (99+x,22+y,20+y);   call tracev (99+x,39+y,37+y);\r
1319         call tracev (100+x,5+y,3+y);    call tracev (100+x,23+y,19+y);\r
1320         call tracev (100+x,39+y,37+y);  call tracev (101+x,5+y,3+y);\r
1321         call tracev (101+x,23+y,19+y);  call tracev (101+x,39+y,37+y);\r
1322         call tracev (102+x,5+y,3+y);    call tracev (102+x,23+y,19+y);\r
1323         call tracev (102+x,39+y,37+y);  call tracev (103+x,6+y,3+y);\r
1324         call tracev (103+x,23+y,19+y);  call tracev (103+x,39+y,37+y);\r
1325         call tracev (104+x,6+y,3+y);    call tracev (104+x,23+y,20+y);\r
1326         call tracev (104+x,39+y,37+y);  call tracev (105+x,6+y,3+y);\r
1327         call tracev (105+x,23+y,20+y);  call tracev (105+x,39+y,37+y);\r
1328         call tracev (106+x,6+y,4+y);    call tracev (106+x,23+y,20+y);\r
1329         call tracev (106+x,39+y,36+y);  call tracev (107+x,6+y,4+y);\r
1330         call tracev (107+x,23+y,20+y);  call tracev (107+x,39+y,36+y);\r
1331         call tracev (108+x,7+y,4+y);    call tracev (108+x,23+y,19+y);\r
1332         call tracev (108+x,39+y,36+y);  call tracev (109+x,7+y,5+y);\r
1333         call tracev (109+x,24+y,19+y);  call tracev (109+x,38+y,36+y);\r
1334         call tracev (110+x,7+y,5+y);    call tracev (110+x,24+y,18+y);\r
1335         call tracev (110+x,38+y,35+y);  call tracev (111+x,8+y,5+y);\r
1336         call tracev (111+x,21+y,18+y);  call tracev (111+x,26+y,23+y);\r
1337         call tracev (111+x,37+y,35+y);  call tracev (112+x,10+y,6+y);\r
1338         call tracev (112+x,21+y,17+y);  call tracev (112+x,28+y,23+y);\r
1339         call tracev (112+x,37+y,33+y);  call tracev (113+x,20+y,6+y);\r
1340         call tracev (113+x,36+y,24+y);  call tracev (114+x,19+y,7+y);\r
1341         call tracev (114+x,35+y,26+y);  call tracev (115+x,17+y,9+y);\r
1342         call tracev (115+x,34+y,28+y);  call tracev (117+x,39+y,3+y);\r
1343         call tracev (118+x,39+y,3+y);   call tracev (119+x,39+y,3+y);\r
1344         call tracev (120+x,39+y,3+y);   call tracev (121+x,39+y,3+y);\r
1345         call tracev (122+x,39+y,3+y);   call tracev (123+x,39+y,3+y);\r
1346         call tracev (124+x,39+y,3+y);   call tracev (125+x,39+y,3+y);\r
1347         call tracev (126+x,39+y,3+y);   call tracev (127+x,39+y,3+y);\r
1348         call tracev (128+x,39+y,3+y);   call tracev (129+x,39+y,3+y);\r
1349         call tracev (130+x,39+y,3+y);   call tracev (131+x,39+y,3+y);\r
1350         call tracev (132+x,39+y,3+y);   call tracev (133+x,39+y,3+y);\r
1351         call tracev (134+x,39+y,3+y);   call tracev (135+x,39+y,3+y);\r
1352         call tracev (136+x,5+y,3+y);    call tracev (136+x,39+y,37+y);\r
1353         call tracev (137+x,5+y,3+y);    call tracev (137+x,22+y,20+y);\r
1354         call tracev (137+x,39+y,37+y);  call tracev (138+x,5+y,3+y);\r
1355         call tracev (138+x,23+y,19+y);  call tracev (138+x,39+y,37+y);\r
1356         call tracev (139+x,5+y,3+y);    call tracev (139+x,23+y,19+y);\r
1357         call tracev (139+x,39+y,37+y);  call tracev (140+x,5+y,3+y);\r
1358         call tracev (140+x,23+y,19+y);  call tracev (140+x,39+y,37+y);\r
1359         call tracev (141+x,6+y,3+y);    call tracev (141+x,23+y,19+y);\r
1360         call tracev (141+x,39+y,37+y);  call tracev (142+x,6+y,3+y);\r
1361         call tracev (142+x,23+y,20+y);  call tracev (142+x,39+y,37+y);\r
1362         call tracev (143+x,6+y,3+y);    call tracev (143+x,23+y,20+y);\r
1363         call tracev (143+x,39+y,37+y);  call tracev (144+x,6+y,4+y);\r
1364         call tracev (144+x,23+y,20+y);  call tracev (144+x,39+y,36+y);\r
1365         call tracev (145+x,6+y,4+y);    call tracev (145+x,23+y,20+y);\r
1366         call tracev (145+x,39+y,36+y);  call tracev (146+x,7+y,4+y);\r
1367         call tracev (146+x,23+y,19+y);  call tracev (146+x,39+y,36+y);\r
1368         call tracev (147+x,7+y,5+y);    call tracev (147+x,24+y,19+y);\r
1369         call tracev (147+x,38+y,36+y);  call tracev (148+x,7+y,5+y);\r
1370         call tracev (148+x,24+y,18+y);  call tracev (148+x,38+y,35+y);\r
1371         call tracev (149+x,8+y,5+y);    call tracev (149+x,21+y,18+y);\r
1372         call tracev (149+x,26+y,23+y);  call tracev (149+x,37+y,35+y);\r
1373         call tracev (150+x,10+y,6+y);   call tracev (150+x,21+y,17+y);\r
1374         call tracev (150+x,28+y,23+y);  call tracev (150+x,37+y,33+y);\r
1375         call tracev (151+x,20+y,6+y);   call tracev (151+x,36+y,24+y);\r
1376         call tracev (152+x,19+y,7+y);   call tracev (152+x,35+y,26+y);\r
1377         call tracev (153+x,17+y,9+y);   call tracev (153+x,34+y,28+y);\r
1378         call tracev (155+x,39+y,3+y);   call tracev (156+x,39+y,3+y);\r
1379         call tracev (157+x,39+y,3+y);   call tracev (158+x,39+y,3+y);\r
1380         call tracev (159+x,39+y,3+y);   call tracev (160+x,39+y,3+y);\r
1381         call tracev (161+x,39+y,3+y);   call tracev (162+x,39+y,3+y);\r
1382         call tracev (163+x,39+y,3+y);   call tracev (164+x,39+y,3+y);\r
1383         call tracev (165+x,39+y,3+y);   call tracev (166+x,39+y,3+y);\r
1384         call tracev (167+x,39+y,3+y);   call tracev (168+x,39+y,3+y);\r
1385         call tracev (169+x,39+y,3+y);   call tracev (170+x,39+y,3+y);\r
1386         call tracev (171+x,39+y,3+y);   call tracev (172+x,39+y,3+y);\r
1387         call tracev (173+x,39+y,3+y);   call tracev (174+x,39+y,37+y);\r
1388         call tracev (175+x,39+y,37+y);  call tracev (176+x,39+y,37+y);\r
1389         call tracev (177+x,39+y,37+y);  call tracev (178+x,39+y,37+y);\r
1390         call tracev (179+x,39+y,37+y);  call tracev (180+x,39+y,37+y);\r
1391         call tracev (181+x,39+y,37+y);  call tracev (182+x,39+y,37+y);\r
1392         call tracev (183+x,39+y,37+y);  call tracev (184+x,39+y,37+y);\r
1393         call tracev (185+x,39+y,37+y);  call tracev (186+x,39+y,37+y);\r
1394         call tracev (187+x,39+y,37+y);  call tracev (188+x,39+y,37+y);\r
1395         call tracev (190+x,39+y,3+y);   call tracev (191+x,39+y,3+y);\r
1396         call tracev (192+x,39+y,3+y);   call tracev (193+x,39+y,3+y);\r
1397         call tracev (194+x,39+y,3+y);   call tracev (195+x,39+y,3+y);\r
1398         call tracev (196+x,39+y,3+y);   call tracev (197+x,39+y,3+y);\r
1399         call tracev (198+x,39+y,3+y);   call tracev (199+x,39+y,3+y);\r
1400         call tracev (200+x,39+y,3+y);   call tracev (201+x,39+y,3+y);\r
1401         call tracev (202+x,39+y,3+y);   call tracev (203+x,39+y,3+y);\r
1402         call tracev (204+x,39+y,3+y);   call tracev (205+x,39+y,3+y);\r
1403         call tracev (206+x,39+y,3+y);   call tracev (207+x,39+y,3+y);\r
1404         call tracev (208+x,39+y,3+y);   call tracev (209+x,5+y,3+y);\r
1405         call tracev (209+x,16+y,13+y);  call tracev (209+x,39+y,37+y);\r
1406         call tracev (210+x,5+y,3+y);    call tracev (210+x,16+y,13+y);\r
1407         call tracev (210+x,39+y,37+y);  call tracev (211+x,5+y,3+y);\r
1408         call tracev (211+x,16+y,13+y);  call tracev (211+x,39+y,37+y);\r
1409         call tracev (212+x,5+y,3+y);    call tracev (212+x,16+y,13+y);\r
1410         call tracev (212+x,39+y,37+y);  call tracev (213+x,5+y,3+y);\r
1411         call tracev (213+x,16+y,13+y);  call tracev (213+x,39+y,37+y);\r
1412         call tracev (214+x,5+y,3+y);    call tracev (214+x,16+y,13+y);\r
1413         call tracev (214+x,39+y,37+y);  call tracev (215+x,5+y,3+y);\r
1414         call tracev (215+x,16+y,13+y);  call tracev (215+x,39+y,37+y);\r
1415         call tracev (216+x,5+y,3+y);    call tracev (216+x,16+y,13+y);\r
1416         call tracev (216+x,39+y,37+y);  call tracev (217+x,5+y,3+y);\r
1417         call tracev (217+x,16+y,13+y);  call tracev (217+x,39+y,37+y);\r
1418         call tracev (218+x,5+y,3+y);    call tracev (218+x,16+y,13+y);\r
1419         call tracev (218+x,39+y,37+y);  call tracev (219+x,5+y,3+y);\r
1420         call tracev (219+x,16+y,13+y);  call tracev (219+x,39+y,37+y);\r
1421         call tracev (220+x,5+y,3+y);    call tracev (220+x,16+y,13+y);\r
1422         call tracev (220+x,39+y,37+y);  call tracev (221+x,5+y,3+y);\r
1423         call tracev (221+x,16+y,13+y);  call tracev (221+x,39+y,37+y);\r
1424         call tracev (222+x,5+y,3+y);    call tracev (222+x,16+y,13+y);\r
1425         call tracev (222+x,39+y,37+y);  call tracev (223+x,16+y,13+y);\r
1426         call tracev (223+x,39+y,37+y);  call tracev (224+x,16+y,13+y);\r
1427         call tracev (224+x,39+y,37+y);  call tracev (225+x,39+y,37+y);\r
1428  end dessinbubble;\r
1429 \r
1430  unit dessinsort : procedure (x,y,c : integer);\r
1431  begin\r
1432         call color (c);\r
1433         call tracev (45+x,19+y,11+y);   call tracev (45+x,35+y,33+y);\r
1434         call tracev (46+x,21+y,9+y);    call tracev (46+x,36+y,33+y);\r
1435         call tracev (47+x,22+y,7+y);    call tracev (47+x,37+y,33+y);\r
1436         call tracev (48+x,23+y,6+y);    call tracev (48+x,37+y,34+y);\r
1437         call tracev (49+x,24+y,6+y);    call tracev (49+x,38+y,35+y);\r
1438         call tracev (50+x,25+y,5+y);    call tracev (50+x,38+y,36+y);\r
1439         call tracev (51+x,25+y,4+y);    call tracev (51+x,39+y,36+y);\r
1440         call tracev (52+x,26+y,3+y);    call tracev (52+x,39+y,37+y);\r
1441         call tracev (53+x,27+y,3+y);    call tracev (53+x,39+y,37+y);\r
1442         call tracev (54+x,27+y,3+y);    call tracev (54+x,39+y,37+y);\r
1443         call tracev (55+x,28+y,3+y);    call tracev (55+x,40+y,37+y);\r
1444         call tracev (56+x,29+y,3+y);    call tracev (56+x,40+y,37+y);\r
1445         call tracev (57+x,30+y,3+y);    call tracev (57+x,40+y,37+y);\r
1446         call tracev (58+x,30+y,2+y);    call tracev (58+x,40+y,36+y);\r
1447         call tracev (59+x,32+y,2+y);    call tracev (59+x,40+y,34+y);\r
1448         call tracev (60+x,40+y,2+y);    call tracev (61+x,6+y,2+y);\r
1449         call tracev (61+x,40+y,12+y);   call tracev (62+x,6+y,2+y);\r
1450         call tracev (62+x,39+y,13+y);   call tracev (63+x,5+y,2+y);\r
1451         call tracev (63+x,39+y,13+y);   call tracev (64+x,5+y,2+y);\r
1452         call tracev (64+x,39+y,14+y);   call tracev (65+x,5+y,2+y);\r
1453         call tracev (65+x,39+y,15+y);   call tracev (66+x,5+y,3+y);\r
1454         call tracev (66+x,39+y,15+y);   call tracev (67+x,5+y,3+y);\r
1455         call tracev (67+x,38+y,16+y);   call tracev (68+x,5+y,3+y);\r
1456         call tracev (68+x,38+y,17+y);   call tracev (69+x,6+y,3+y);\r
1457         call tracev (69+x,38+y,17+y);   call tracev (70+x,7+y,4+y);\r
1458         call tracev (70+x,37+y,18+y);   call tracev (71+x,8+y,4+y);\r
1459         call tracev (71+x,37+y,19+y);   call tracev (72+x,9+y,5+y);\r
1460         call tracev (72+x,36+y,21+y);   call tracev (73+x,9+y,6+y);\r
1461         call tracev (73+x,34+y,22+y);   call tracev (74+x,9+y,8+y);\r
1462         call tracev (74+x,31+y,23+y);   call tracev (75+x,24+y,20+y);\r
1463         call tracev (76+x,27+y,16+y);   call tracev (77+x,30+y,12+y);\r
1464         call tracev (78+x,32+y,10+y);   call tracev (79+x,34+y,8+y);\r
1465         call tracev (80+x,35+y,7+y);    call tracev (81+x,36+y,6+y);\r
1466         call tracev (82+x,36+y,6+y);    call tracev (83+x,37+y,5+y);\r
1467         call tracev (84+x,37+y,5+y);    call tracev (85+x,38+y,4+y);\r
1468         call tracev (86+x,38+y,4+y);    call tracev (87+x,38+y,4+y);\r
1469         call tracev (88+x,39+y,3+y);    call tracev (89+x,39+y,3+y);\r
1470         call tracev (90+x,39+y,3+y);    call tracev (91+x,39+y,2+y);\r
1471         call tracev (92+x,40+y,2+y);    call tracev (93+x,40+y,2+y);\r
1472         call tracev (94+x,5+y,2+y);     call tracev (94+x,40+y,37+y);\r
1473         call tracev (95+x,5+y,2+y);     call tracev (95+x,40+y,37+y);\r
1474         call tracev (96+x,5+y,2+y);     call tracev (96+x,40+y,37+y);\r
1475         call tracev (97+x,5+y,3+y);     call tracev (97+x,39+y,37+y);\r
1476         call tracev (98+x,5+y,3+y);     call tracev (98+x,39+y,37+y);\r
1477         call tracev (99+x,5+y,3+y);     call tracev (99+x,39+y,37+y);\r
1478         call tracev (100+x,6+y,3+y);    call tracev (100+x,38+y,36+y);\r
1479         call tracev (101+x,6+y,4+y);    call tracev (101+x,38+y,36+y);\r
1480         call tracev (102+x,7+y,4+y);    call tracev (102+x,38+y,36+y);\r
1481         call tracev (103+x,7+y,4+y);    call tracev (103+x,38+y,35+y);\r
1482         call tracev (104+x,8+y,5+y);    call tracev (104+x,37+y,35+y);\r
1483         call tracev (105+x,9+y,5+y);    call tracev (105+x,37+y,34+y);\r
1484         call tracev (106+x,10+y,6+y);   call tracev (106+x,36+y,33+y);\r
1485         call tracev (107+x,11+y,6+y);   call tracev (107+x,35+y,31+y);\r
1486         call tracev (108+x,12+y,7+y);   call tracev (108+x,34+y,30+y);\r
1487         call tracev (109+x,14+y,8+y);   call tracev (109+x,32+y,28+y);\r
1488         call tracev (110+x,16+y,10+y);  call tracev (110+x,31+y,26+y);\r
1489         call tracev (111+x,29+y,12+y);  call tracev (112+x,27+y,16+y);\r
1490         call tracev (114+x,39+y,2+y);   call tracev (115+x,39+y,2+y);\r
1491         call tracev (116+x,39+y,2+y);   call tracev (117+x,39+y,2+y);\r
1492         call tracev (118+x,39+y,2+y);   call tracev (119+x,39+y,2+y);\r
1493         call tracev (120+x,39+y,2+y);   call tracev (121+x,39+y,2+y);\r
1494         call tracev (122+x,39+y,2+y);   call tracev (123+x,39+y,2+y);\r
1495         call tracev (124+x,39+y,2+y);   call tracev (125+x,39+y,2+y);\r
1496         call tracev (126+x,39+y,2+y);   call tracev (127+x,39+y,2+y);\r
1497         call tracev (128+x,39+y,2+y);   call tracev (129+x,39+y,2+y);\r
1498         call tracev (130+x,39+y,2+y);   call tracev (131+x,39+y,2+y);\r
1499         call tracev (132+x,39+y,2+y);   call tracev (133+x,5+y,2+y);\r
1500         call tracev (133+x,31+y,27+y);  call tracev (134+x,5+y,2+y);\r
1501         call tracev (134+x,32+y,27+y);  call tracev (135+x,5+y,3+y);\r
1502         call tracev (135+x,29+y,27+y);  call tracev (135+x,33+y,30+y);\r
1503         call tracev (136+x,5+y,3+y);    call tracev (136+x,30+y,27+y);\r
1504         call tracev (136+x,34+y,31+y);  call tracev (137+x,5+y,3+y);\r
1505         call tracev (137+x,30+y,27+y);  call tracev (137+x,34+y,32+y);\r
1506         call tracev (138+x,6+y,3+y);    call tracev (138+x,30+y,27+y);\r
1507         call tracev (138+x,35+y,32+y);  call tracev (139+x,6+y,3+y);\r
1508         call tracev (139+x,29+y,27+y);  call tracev (139+x,36+y,33+y);\r
1509         call tracev (140+x,6+y,3+y);    call tracev (140+x,29+y,27+y);\r
1510         call tracev (140+x,36+y,34+y);  call tracev (141+x,6+y,3+y);\r
1511         call tracev (141+x,29+y,27+y);  call tracev (141+x,37+y,35+y);\r
1512         call tracev (142+x,6+y,4+y);    call tracev (142+x,29+y,27+y);\r
1513         call tracev (142+x,37+y,35+y);  call tracev (143+x,7+y,4+y);\r
1514         call tracev (143+x,29+y,26+y);  call tracev (143+x,38+y,35+y);\r
1515         call tracev (144+x,7+y,4+y);    call tracev (144+x,28+y,25+y);\r
1516         call tracev (144+x,38+y,35+y);  call tracev (145+x,8+y,5+y);\r
1517         call tracev (145+x,27+y,24+y);  call tracev (145+x,38+y,36+y);\r
1518         call tracev (146+x,5+y,2+y);    call tracev (146+x,10+y,6+y);\r
1519         call tracev (146+x,26+y,24+y);  call tracev (146+x,38+y,36+y);\r
1520         call tracev (147+x,5+y,2+y);    call tracev (147+x,12+y,7+y);\r
1521         call tracev (147+x,25+y,21+y);  call tracev (147+x,39+y,37+y);\r
1522         call tracev (148+x,5+y,2+y);    call tracev (148+x,24+y,8+y);\r
1523         call tracev (148+x,39+y,37+y);  call tracev (149+x,5+y,2+y);\r
1524         call tracev (149+x,23+y,10+y);  call tracev (149+x,39+y,37+y);\r
1525         call tracev (150+x,5+y,2+y);    call tracev (150+x,21+y,12+y);\r
1526         call tracev (150+x,39+y,37+y);  call tracev (151+x,5+y,2+y);\r
1527         call tracev (152+x,5+y,2+y);    call tracev (153+x,5+y,2+y);\r
1528         call tracev (154+x,5+y,2+y);    call tracev (155+x,5+y,2+y);\r
1529         call tracev (156+x,39+y,2+y);   call tracev (157+x,39+y,2+y);\r
1530         call tracev (158+x,39+y,2+y);   call tracev (159+x,39+y,2+y);\r
1531         call tracev (160+x,39+y,2+y);   call tracev (161+x,39+y,2+y);\r
1532         call tracev (162+x,39+y,2+y);   call tracev (163+x,39+y,2+y);\r
1533         call tracev (164+x,39+y,2+y);   call tracev (165+x,39+y,2+y);\r
1534         call tracev (166+x,39+y,2+y);   call tracev (167+x,39+y,2+y);\r
1535         call tracev (168+x,39+y,2+y);   call tracev (169+x,39+y,2+y);\r
1536         call tracev (170+x,39+y,2+y);   call tracev (171+x,39+y,2+y);\r
1537         call tracev (172+x,39+y,2+y);   call tracev (173+x,39+y,2+y);\r
1538         call tracev (174+x,39+y,2+y);   call tracev (175+x,5+y,2+y);\r
1539         call tracev (176+x,5+y,2+y);    call tracev (177+x,5+y,2+y);\r
1540         call tracev (178+x,5+y,2+y);    call tracev (179+x,5+y,2+y);\r
1541         call tracev (180+x,5+y,2+y);    call tracev (181+x,5+y,2+y);\r
1542         call tracev (182+x,5+y,2+y);    call tracev (183+x,5+y,2+y);\r
1543         call tracev (184+x,5+y,2+y);\r
1544  end dessinsort;\r
1545 \r
1546 unit BOUTON : procedure(x,y,x2,y2,col_font,col1,col2:integer);\r
1547 var\r
1548         i : integer;\r
1549 begin\r
1550         call RECTANGLE_PLEIN (x+2,y+2,x2-2,y2-2,col_font,col_font);\r
1551         for i:= 0 to 2  \r
1552         do\r
1553                 call color (col1);\r
1554                 call move (x+i,y);\r
1555                 call draw (x+i,y2-i);\r
1556                 call move (x,y+i);\r
1557                 call draw (x2-i,y+i);\r
1558                 call color (col2);\r
1559                 call move (x2,y2-i);\r
1560                 call draw (x+i,y2-i);\r
1561                 call move (x2-i,y2);\r
1562                 call draw (x2-i,y+i);\r
1563         od;\r
1564         call color (7);\r
1565         call RECTANGLE (x-1,y-1,x2+1,y2+1);\r
1566         call color (7);\r
1567         call  move (x2,y2);\r
1568         call draw (x2-2,y2-2);\r
1569         call color (col2);\r
1570         call move (x+3,y+3);\r
1571         call draw (x2-3,y+3);\r
1572         call move (x+3,y+3);\r
1573         call draw (x+3,y2-3);\r
1574         call color (col1);\r
1575         call move (x2-3,y2-3);\r
1576         call draw (x+4,y2-3);\r
1577         call move (x2-3,y2-3);\r
1578         call draw (x2-3,y+4);\r
1579 end BOUTON;\r
1580 \r
1581 UNIT RECTANGLE_PLEINV :  procedure(x_h,y_h,x_b,y_b,\r
1582                         coul,contour:integer);\r
1583 var \r
1584   i  : integer ;\r
1585 \r
1586 BEGIN\r
1587   call color (coul);\r
1588   for i:= y_h to y_b \r
1589   do\r
1590         call move (x_h,i);\r
1591         call hfill (x_b);\r
1592   od;\r
1593   call color (contour);\r
1594   call move(x_h,y_h);\r
1595   call draw(x_b,y_h);\r
1596   call draw(x_b,y_b);\r
1597   call draw(x_h,y_b);\r
1598   call draw(x_h,y_h);\r
1599  END RECTANGLE_PLEINV;\r
1600 \r
1601 \r
1602  unit aff_nb :  procedure (x,y,nb,dec,c : integer);\r
1603  var\r
1604         i,k : integer\r
1605  begin\r
1606         k := 1;\r
1607         call rectangle_plein (x-2,y-2,x+dec*8+9,y+8,0,15);\r
1608         call color (c);\r
1609         for i := 0 to dec do\r
1610                 call move (x+(dec-i)*8,y);                \r
1611                 call hascii (48+ (nb div k) mod 10);\r
1612                 k := k*10;\r
1613         od;\r
1614  end aff_nb;\r
1615  \r
1616  unit CHARGE_FOND :  procedure;\r
1617  var\r
1618         i,j,n : integer,\r
1619         col : integer,\r
1620         c : char;\r
1621  begin\r
1622         call color (15);\r
1623         for i:=0 to 10 do\r
1624                 call move (0,i*32);\r
1625                 call hfill (639);\r
1626         od;\r
1627         for i:=0 to 15 do\r
1628                 call move (i*40,0);\r
1629                 call vfill (349);\r
1630         od;\r
1631 \r
1632         call color (8);\r
1633         for i:=0 to 10 do\r
1634                 call move (0,i*32+29);\r
1635                 call hfill (639);\r
1636                 call move (0,i*32+30);\r
1637                 call hfill (639);\r
1638         od;\r
1639         for i:=0 to 15 do\r
1640                 call move (i*40+37,0);\r
1641                 call vfill (349);\r
1642                 call move (i*40+38,0);\r
1643                 call vfill (349);\r
1644         od;\r
1645         call color (7);\r
1646         for i:=0 to 10 do\r
1647                 call move (0,i*32+31);\r
1648                 call hfill (639);\r
1649         od;\r
1650         for i:=0 to 15 do\r
1651                 call move (i*40+39,0);\r
1652                 call vfill (349);\r
1653         od;\r
1654         call color (15);\r
1655         for i:=0 to 10 do\r
1656                 call move (0,i*32);\r
1657                 call hfill (639);\r
1658         od;\r
1659         for i:=0 to 15 do\r
1660                 call move (i*40,0);\r
1661                 call vfill (349);\r
1662         od;\r
1663         call RECTANGLE_PLEIN (70,80,570,300,1,1);\r
1664         call RECTANGLE_PLEIN (105,301,581,309,8,8);\r
1665         call RECTANGLE_PLEIN (570,105,581,301,8,8);\r
1666  end CHARGE_FOND;\r
1667 \r
1668 unit AFF_OPTIONS : procedure;\r
1669 begin\r
1670 \r
1671         (* definition des boutons *)\r
1672         call BOUTON (150,100,190,125,7,15,8);\r
1673         call BOUTON (150,155,190,180,7,15,8);\r
1674         call BOUTON (150,210,190,235,7,15,8);\r
1675         call BOUTON (150,265,190,290,7,15,8);\r
1676         (* definition des barres de textes*)\r
1677         call RECTANGLE_PLEIN (230,100,500,125,7,15);\r
1678         call RECTANGLE_PLEIN (230,155,500,180,7,15);\r
1679         call RECTANGLE_PLEIN (230,210,500,235,7,15);\r
1680         call RECTANGLE_PLEIN (230,265,500,290,7,15);\r
1681         (* texte *)\r
1682         call pallet (7);\r
1683         call color (15);\r
1684         call move (249,110);\r
1685         call outstring ("CHOIX DES ELEMENTS A TRIER");\r
1686         call move (249,165);\r
1687         call outstring ("GENERER DES NOUVELLES VALEURS");\r
1688         call move (249,220);\r
1689         call outstring ("TRI DES ELEMENTS ");\r
1690         call move (249,275);\r
1691         call outstring ("QUITTER LE PROGRAMME");\r
1692         call color (8);\r
1693         call move (251,111);\r
1694         call outstring ("CHOIX DES ELEMENTS A TRIER");\r
1695         call move (251,166);\r
1696         call outstring ("GENERER DES NOUVELLES VALEURS");\r
1697         call move (251,221);\r
1698         call outstring ("TRI DES ELEMENTS ");\r
1699         call move (251,276);\r
1700         call outstring ("QUITTER LE PROGRAMME");\r
1701 end AFF_OPTIONS;\r
1702 \r
1703 unit DELAI : procedure ( n : integer);\r
1704 var\r
1705         i : integer;\r
1706 begin\r
1707         for i := 1 to n do od;\r
1708 end DELAI;\r
1709 \r
1710 unit CHOIX_UTIL : procedure ;\r
1711 begin\r
1712 \r
1713         pref STR_ELEMENTS block\r
1714 var\r
1715         x,y,p,choix_courant,nbelems : integer,\r
1716         gauche,droit,centre : boolean;\r
1717    BEGIN\r
1718         call dessinmenu (250,10,8);\r
1719         call dessinmenu (247,7,4);\r
1720 \r
1721         call AFF_OPTIONS;\r
1722         choix_courant := 1;\r
1723         nbelems      := 100;\r
1724    do\r
1725 \r
1726         call showcursor;\r
1727         call setwindow (70,570,80,300);\r
1728 \r
1729         call getpress (0,x,y,p,gauche,droit,centre);\r
1730             if (gauche) then\r
1731                 call hidecursor;\r
1732                 if (x>150 and x<190) then\r
1733                  if (y>100 and y<125) then\r
1734                         call BOUTON (150,100,190,125,7,8,15);\r
1735                         call DELAI (2000);\r
1736                         call BOUTON (150,100,190,125,7,15,8);\r
1737                         call CHOIX_ELEM(choix_courant,nbelems);\r
1738                         call AFF_OPTIONS;\r
1739         call eff_titre;\r
1740         call dessinmenu (250,10,8);\r
1741         call dessinmenu (247,7,4);\r
1742                  fi;\r
1743                  if (y>155 and y<180) then\r
1744                         call BOUTON (150,155,190,180,7,8,15);\r
1745                         call DELAI (2000);\r
1746                         call BOUTON (150,155,190,180,7,15,8);\r
1747                         call CHOIX_NB_ELEM(nbelems,choix_courant);\r
1748                         call AFF_OPTIONS;\r
1749         call eff_titre;\r
1750         call dessinmenu (250,10,8);\r
1751         call dessinmenu (247,7,4);\r
1752                  fi;\r
1753                  if (y>210 and y<235) then\r
1754                         call BOUTON (150,210,190,235,7,8,15);\r
1755                         call DELAI (2000);\r
1756                         call BOUTON (150,210,190,235,7,15,8);\r
1757                         call AFF_TRI(choix_courant,nbelems);\r
1758                         call CHARGE_FOND;\r
1759                         call AFF_OPTIONS;\r
1760         call eff_titre;\r
1761         call dessinmenu (250,10,8);\r
1762         call dessinmenu (247,7,4);\r
1763                  fi;\r
1764                  if (y>265 and y<290) then\r
1765                         call BOUTON (150,265,190,290,7,8,15);\r
1766                         call DELAI (2000);\r
1767                         call BOUTON (150,265,190,290,7,15,8);\r
1768                         exit ;\r
1769                  fi;\r
1770                 fi;\r
1771         fi;\r
1772    od;\r
1773    end;\r
1774 end CHOIX_UTIL;\r
1775 \r
1776 unit AFF_CONTOUR_CHOIX : procedure (choix_courant,coul : integer);\r
1777 begin\r
1778         call color (coul);\r
1779         case choix_courant \r
1780         when 1: call RECTANGLE (229,89,501,146);\r
1781                 call RECTANGLE (228,88,502,147);\r
1782                 call RECTANGLE (227,87,503,148);\r
1783         when 2: call RECTANGLE (229,159,501,216);\r
1784                 call RECTANGLE (228,158,502,217);\r
1785                 call RECTANGLE (227,157,503,218);\r
1786         when 3: call RECTANGLE (229,229,501,286);\r
1787                 call RECTANGLE (228,228,502,287);\r
1788                 call RECTANGLE (227,227,503,288);\r
1789         esac;\r
1790 end AFF_CONTOUR_CHOIX;\r
1791 \r
1792 unit GRAPH_ELEM : procedure ;\r
1793 begin\r
1794         (* histogrammes *)\r
1795         call BOUTON (150,105,190,130,7,15,8);\r
1796         call RECTANGLE_PLEIN (230,90,500,132,7,8);\r
1797         call RECTANGLE_PLEIN (250,100,270,130,4,4);\r
1798         call RECTANGLE_PLEIN (280,120,300,130,2,2);\r
1799         call RECTANGLE_PLEIN (310,110,330,130,13,13);\r
1800         call RECTANGLE_PLEIN (340,95,360,130,9,9);\r
1801         call RECTANGLE_PLEIN (370,105,390,130,1,1);\r
1802         call RECTANGLE_PLEIN (400,108,420,130,12,12);\r
1803         call RECTANGLE_PLEIN (430,115,450,130,10,10);\r
1804         call RECTANGLE_PLEIN (460,100,480,130,11,11);\r
1805         call RECTANGLE_PLEIN (230,132,500,145,7,8);\r
1806         call color (15);\r
1807         call move (270,136);\r
1808         call outstring ("H I S T O G R A M M E S");\r
1809         call color (8);\r
1810         call move (271,137);\r
1811         call outstring ("H I S T O G R A M M E S");\r
1812         (* polynomes *)\r
1813         call BOUTON (150,175,190,200,7,15,8);\r
1814         call RECTANGLE_PLEIN (230,160,500,202,7,8);\r
1815         call RECTANGLE_PLEIN (230,202,500,215,7,8);\r
1816         call color (1);\r
1817         call move (240,170);\r
1818         call outstring ("X^2+3");\r
1819         call color (4);\r
1820         call move (270,185);\r
1821         call outstring ("-4X^5+5X^4-2X^3+6");\r
1822         call color (2);\r
1823         call move (300,165);\r
1824         call outstring ("6X+5");\r
1825         call color (11);\r
1826         call move (405,175);\r
1827         call outstring ("-X^2+2X-3");\r
1828         call color (15);\r
1829         call move (295,206);\r
1830         call outstring ("P O L Y N O M E S");\r
1831         call color (8);\r
1832         call move (296,207);\r
1833         call outstring ("P O L Y N O M E S");\r
1834         (* rectangles *)\r
1835         call RECTANGLE_PLEIN (230,230,500,272,7,8);\r
1836         call BOUTON (150,245,190,270,7,15,8);\r
1837         call RECTANGLE_PLEIN (250,235,290,267,13,13);\r
1838         call RECTANGLE_PLEIN (300,255,330,270,12,12);\r
1839         call RECTANGLE_PLEIN (340,240,400,272,10,10);\r
1840         call RECTANGLE_PLEIN (410,232,430,265,9,9);\r
1841         call RECTANGLE_PLEIN (440,243,480,260,4,4);\r
1842         call RECTANGLE_PLEIN (230,272,500,285,7,8);\r
1843         call color (15);\r
1844         call move (305,276);\r
1845         call outstring ("S U R F A C E S");\r
1846         call color (8);\r
1847         call move (306,277);\r
1848         call outstring ("S U R F A C E S");\r
1849 end GRAPH_ELEM;\r
1850 \r
1851 unit CHOIX_ELEM  : procedure(inout choix_courant,nbelems : integer);\r
1852 var\r
1853 x,y,p : integer,\r
1854 choix : char,\r
1855 gauche,droit,centre : boolean;\r
1856 begin        \r
1857         call EFFACE (70,80,570,300,9,1,15);\r
1858         call eff_titre;\r
1859         call dessinelem (206,20,8);\r
1860         call dessinelem (203,17,4);\r
1861         call GRAPH_ELEM;\r
1862         call AFF_CONTOUR_CHOIX(choix_courant,15);\r
1863         call BOUTON (80,175,130,200,7,15,8);\r
1864         call move (92,185);\r
1865         call color (4);\r
1866         call outstring ("O K");\r
1867         call showcursor;\r
1868         do\r
1869         call getpress (0,x,y,p,gauche,droit,centre);\r
1870             if (gauche) then\r
1871                 call hidecursor;\r
1872                 if ( x >150 and x <190 and y>105 and y<130)  then\r
1873                     call BOUTON (150,105,190,130,7,8,15);\r
1874                     call DELAI (2000);\r
1875                     call BOUTON (150,105,190,130,7,15,8);\r
1876                     call AFF_CONTOUR_CHOIX(1,15);\r
1877                     call AFF_CONTOUR_CHOIX(2,1);\r
1878                     call AFF_CONTOUR_CHOIX(3,1);\r
1879                     choix_courant := 1;\r
1880                     nbelems := 100;\r
1881                     \r
1882                 fi;\r
1883                 if ( x >150 and x <190 and y>175 and y<200)  then\r
1884                     call BOUTON (150,175,190,200,7,8,15);\r
1885                     call DELAI (2000);\r
1886                     call BOUTON (150,175,190,200,7,15,8);\r
1887                     call AFF_CONTOUR_CHOIX(2,15);\r
1888                     call AFF_CONTOUR_CHOIX(1,1);\r
1889                     call AFF_CONTOUR_CHOIX(3,1);\r
1890                     choix_courant := 2;\r
1891                     nbelems := 10;\r
1892                 fi;\r
1893                 if ( x >150 and x <190 and y>245 and y<270) then\r
1894                     call BOUTON (150,245,190,270,7,8,15);\r
1895                     call DELAI (2000);\r
1896                     call BOUTON (150,245,190,270,7,15,8);\r
1897                     call AFF_CONTOUR_CHOIX(1,1);\r
1898                     call AFF_CONTOUR_CHOIX(2,1);\r
1899                     call AFF_CONTOUR_CHOIX(3,15);\r
1900                     choix_courant := 3;\r
1901                     nbelems := 25;\r
1902                 fi;\r
1903                 if (x>80 and x<130 and y>130 and y<200) then\r
1904                         call BOUTON (80,175,130,200,7,8,15);\r
1905                         call move (92,185);\r
1906                         call color (8);\r
1907                         call outstring ("O K");\r
1908                         call DELAI (2000);  \r
1909                         call BOUTON (80,175,130,200,7,15,8);\r
1910                         call EFFACE(70,80,570,300,9,1,15);\r
1911                         exit;\r
1912                 fi;\r
1913                call showcursor ; \r
1914             fi;\r
1915         od;\r
1916 end CHOIX_ELEM;\r
1917 \r
1918 unit AFF_C : procedure (coul,nb_bouton : integer);\r
1919 \r
1920 begin\r
1921 call color (coul);\r
1922           case nb_bouton\r
1923                                 when 1 :  \r
1924                                 call RECTANGLE (199,159,241,186);\r
1925                                 call RECTANGLE (198,158,242,187);\r
1926                                 call RECTANGLE (197,157,243,188);\r
1927                                 when 2 :                      \r
1928                                 call RECTANGLE (299,159,341,186);\r
1929                                 call RECTANGLE (298,158,342,187);\r
1930                                 call RECTANGLE (297,157,343,188);\r
1931                                 when 3 :\r
1932                                 call RECTANGLE (399,159,441,186);\r
1933                                 call RECTANGLE (398,158,442,187);\r
1934                                 call RECTANGLE (397,157,443,188);\r
1935                          esac;\r
1936 end AFF_C;\r
1937 \r
1938 unit GERE_CHOIX_NB : procedure (choix_courant :integer\r
1939                                 ;inout nbelems : integer);\r
1940 var\r
1941         x,y,p : integer,\r
1942         gauche,droit,centre : boolean;\r
1943 begin\r
1944         call showcursor;\r
1945         call setwindow (70,570,80,300);\r
1946         do\r
1947         call getpress (0,x,y,p,gauche,droit,centre);\r
1948             if (gauche) then\r
1949                 call hidecursor;\r
1950                 if ( x >200 and x <240 and y>200 and y<225)  then\r
1951                     call BOUTON (200,200,240,225,7,8,15);\r
1952                     call DELAI (2000);\r
1953                     call BOUTON (200,200,240,225,7,15,8);\r
1954                     case choix_courant\r
1955                         when 1 : nbelems := 30;\r
1956                         when 2 : nbelems := 5;\r
1957                         when 3 : nbelems := 15;\r
1958                     esac;\r
1959                     call AFF_C(15,1);\r
1960                     call AFF_C(1,2);\r
1961                     call AFF_C(1,3);\r
1962                 fi;\r
1963                 if ( x >300 and x <340 and y>200 and y<225)  then\r
1964                     call BOUTON (300,200,340,225,7,8,15);\r
1965                     call DELAI (2000);\r
1966                     call BOUTON (300,200,340,225,7,15,8);\r
1967                     case choix_courant \r
1968                         when 1 : nbelems := 100;\r
1969                         when 2 : nbelems := 10;\r
1970                         when 3 : nbelems  := 25;\r
1971                     esac;\r
1972                     call AFF_C(1,1);\r
1973                     call AFF_C(15,2);\r
1974                     call AFF_C(1,3);\r
1975                 fi;\r
1976                 if ( x >400 and x <440 and y>200 and y<225)  then\r
1977                     call BOUTON (400,200,440,225,7,8,15);\r
1978                     call DELAI (2000);\r
1979                     call BOUTON (400,200,440,225,7,15,8);\r
1980                     case choix_courant\r
1981                         when 1 : nbelems := 150 ;\r
1982                         when 2 : nbelems := 20;\r
1983                         when 3 : nbelems := 50;\r
1984                     esac;\r
1985                     call AFF_C(1,1);\r
1986                     call AFF_C(1,2);\r
1987                     call AFF_C(15,3);\r
1988                 fi;\r
1989                 if ( x >265 and x <365 and y>250 and y<280)  then\r
1990                     call BOUTON (265,250,365,280,7,8,15);\r
1991                     call DELAI (2000);\r
1992                     call BOUTON (265,250,365,280,7,15,8);\r
1993                     exit ;\r
1994                 fi;\r
1995                 call showcursor;\r
1996                 call setwindow (70,570,80,300);\r
1997            fi;\r
1998          od;\r
1999 end GERE_CHOIX_NB;\r
2000 \r
2001 unit CHOIX_NB_ELEM : procedure (inout nbelems :integer;\r
2002                                         choix_courant  : integer);\r
2003 var\r
2004 coul,nbbouton : integer,\r
2005 choix : char ;\r
2006 begin\r
2007         call EFFACE (70,80,570,300,9,1,15);\r
2008         call eff_titre;\r
2009         call dessinrand (206,20,8);\r
2010         call dessinrand (203,17,4); \r
2011         call RECTANGLE_PLEIN(150,100,490,150,7,15);\r
2012         call RECTANGLE_PLEIN (200,160,240,185,7,15);\r
2013         call BOUTON (200,200,240,225,7,15,8);\r
2014         call RECTANGLE_PLEIN (300,160,340,185,7,15);\r
2015         call BOUTON (300,200,340,225,7,15,8);\r
2016         call RECTANGLE_PLEIN (400,160,440,185,7,15);\r
2017         call BOUTON (400,200,440,225,7,15,8);\r
2018         call BOUTON (265,250,365,280,7,15,8);\r
2019         call color (4);\r
2020         case choix_courant \r
2021         when 1 : \r
2022                 call move (250,120);\r
2023                 call outstring ("H I S T O G R A M M E S");\r
2024                 call move (209,167);\r
2025                 call outstring ("30");\r
2026                 call move (309,167);\r
2027                 call outstring ("100");\r
2028                 call move (405,167);\r
2029                 call outstring ("150");\r
2030         when 2 : \r
2031                 call move (250,120);\r
2032                 call outstring (" P O L Y N O M E S");\r
2033                 call move (209,167);\r
2034                 call outstring ("5");\r
2035                 call move (309,167);\r
2036                 call outstring ("10");\r
2037                 call move (405,167);\r
2038                 call outstring ("20");\r
2039         when 3 : \r
2040                 call move (255,120);\r
2041                 call outstring ("S U R F A C E S");\r
2042                 call move (209,167);\r
2043                 call outstring ("15");\r
2044                 call move (309,167);\r
2045                 call outstring ("25");\r
2046                 call move (405,167);\r
2047                 call outstring ("50");\r
2048         esac;\r
2049         coul := 15;\r
2050         if (nbelems=30 or nbelems =5 or nbelems =15) then\r
2051                 call AFF_C(15,1);\r
2052         else\r
2053             if (nbelems = 100 or nbelems = 10 or nbelems = 25) then\r
2054                 call AFF_C(15,2);\r
2055                 else\r
2056                        call  AFF_C(15,3);\r
2057             fi;\r
2058         fi;\r
2059         call GERE_CHOIX_NB (choix_courant,nbelems);\r
2060         call EFFACE (70,80,570,300,9,1,15);\r
2061 end CHOIX_NB_ELEM;\r
2062 \r
2063 unit AFF_RENS : procedure ;\r
2064 begin\r
2065                 call color (15);\r
2066                 call move (0,174);\r
2067                 call draw (639,174);\r
2068                 call move (0,110);\r
2069                 call draw (639,110);\r
2070                 call move (0,285);\r
2071                 call draw (639,285);\r
2072                 call move (0,284);\r
2073                 call draw (639,284);\r
2074                 call dessinquick (-23+3,123+3,8);\r
2075                 call dessinsort (220+3,123+3,8);\r
2076                 call dessinquick (-23,123,9);\r
2077                 call dessinsort (220,123,9);\r
2078                 call dessinbubble (0+3,300+3,8);\r
2079                 call dessinsort (220+3,300+3,8);\r
2080                 call dessinbubble (0,300,14);\r
2081                 call dessinsort (220,300,14);\r
2082                 call RECTANGLE_PLEIN (415,115,520,130,7,15);\r
2083                 call RECTANGLE_PLEIN (415,135,520,150,7,15);\r
2084                 call color (4);\r
2085                 call move (420,120);\r
2086                 call outstring ("PERMUTATIONS");\r
2087                 call move (420,140);\r
2088                 call outstring ("COMPARAISONS");\r
2089                 call move (420,160);\r
2090                 call color (4);\r
2091                 call outstring ("en cours ...");\r
2092                 call RECTANGLE_PLEIN (415,290,520,305,7,15);\r
2093                 call RECTANGLE_PLEIN (415,310,520,325,7,15);\r
2094                 call color (4);\r
2095                 call move (420,295);\r
2096                 call outstring ("PERMUTATIONS");\r
2097                 call move (420,315);\r
2098                 call outstring ("COMPARAISONS");\r
2099                 call move (420,335);\r
2100                 call color (4);\r
2101                 call outstring ("en attente ");\r
2102 end AFF_RENS;\r
2103 \r
2104 unit AFF_RENS_FIN : procedure;\r
2105 begin\r
2106                 call RECTANGLE_PLEIN (415,155,520,170,7,7);\r
2107                 call RECTANGLE_PLEIN (415,330,520,345,7,7);\r
2108                 call color (4);\r
2109                 call move (420,160);\r
2110                 call outstring ("tri fini.");\r
2111                 call move (420,335);\r
2112                 call outstring ("en cours ...");\r
2113 end AFF_RENS_FIN;\r
2114 \r
2115 unit AFF_RENS_FIN2 : procedure;\r
2116 begin\r
2117                 call RECTANGLE_PLEIN (415,330,520,345,7,7);\r
2118                 call color (4);\r
2119                 call move (420,335);\r
2120                 call outstring ("tri fini.");\r
2121 end AFF_RENS_FIN2;\r
2122 \r
2123 unit STATS: procedure(nb_iterationsq,nb_iterationsb,nbelems:integer);\r
2124 var\r
2125         trouve : boolean,\r
2126         chaine1,chaine2 : string,\r
2127         choix : char,\r
2128         i,x1,x2,x3,x4,itermax,ind_perfb,\r
2129         calcule_cmq,calcule_cmb,cout_maxb,cout_maxq,\r
2130         ind_perfq,marque : integer,\r
2131         sauve_valq,sauve_valb ,\r
2132         pas_q,pas_b,facteur : real;\r
2133 begin\r
2134         trouve := true;\r
2135         call pallet(0);\r
2136         call RECTANGLE_PLEIN(0,0,639,349,0,15);\r
2137        call dessinstat(235+3,10+3,8);\r
2138         call dessinstat(235,10,9);\r
2139         call move (115,90); \r
2140         call color (8);\r
2141         call outstring ("INDICE DE RAPIDITE (calcul\82 sur la base des comparaisons)");\r
2142         call move (114,89);\r
2143         call color (15);\r
2144         call outstring ("INDICE DE RAPIDITE (calcul\82 sur la base des comparaisons)");\r
2145         call move (5,107);\r
2146         call color (9);\r
2147         call outstring ("QUICK SORT");\r
2148         call move (5,157);\r
2149         call outstring ("BUBBLE SORT");\r
2150         call RECTANGLE_PLEIN(99,100,551,130,8,15);\r
2151         call RECTANGLE_PLEIN(99,150,551,180,8,15);\r
2152         call aff_nb (570,115,nb_iterationsq,4,15);        \r
2153         call aff_nb (570,165,nb_iterationsb,4,15);        \r
2154         facteur := nb_iterationsq / 100;\r
2155         pas_q := facteur * 450 / nb_iterationsq ;\r
2156         pas_b := facteur * 450 / nb_iterationsb ;\r
2157         call color (4);\r
2158         if nb_iterationsq>nb_iterationsb then itermax := nb_iterationsq;\r
2159                 else itermax := nb_iterationsb;\r
2160         fi;\r
2161         itermax := entier (itermax / facteur);\r
2162         for i := 0 to itermax\r
2163         do\r
2164                 x1 := entier(i*pas_q);\r
2165                 x2 := entier(i*pas_b);\r
2166                 x3 := entier ((i+1)*pas_q);\r
2167                 x4 := entier ((i+1)*pas_b);\r
2168                 sauve_valq := 100 + x1 ;\r
2169                 sauve_valb := 100 + x2 ;\r
2170              if (x3 <= 450) then\r
2171                 call RECTANGLE_PLEIN(sauve_valq,101,100+x3,129,4,4);\r
2172              else\r
2173                 if trouve then\r
2174                         call color (15);\r
2175                         trouve := false;\r
2176                         call move (sauve_valb,140);\r
2177                         call outstring ("³");\r
2178                 fi;\r
2179              fi;\r
2180           if (x4 <= 450) then\r
2181                 call RECTANGLE_PLEIN(sauve_valb,151,100+x4,179,4,4);\r
2182           fi;\r
2183         od;\r
2184         cout_maxb := entier((nbelems*(nbelems-1)) / 2);\r
2185         cout_maxq := entier((((nbelems+1)*(nbelems+2)/2)-3));\r
2186         ind_perfb := 100 - ((nb_iterationsb*100)/cout_maxb);\r
2187         ind_perfq := 100 -((nb_iterationsq*100)/cout_maxq);\r
2188         chaine1 := "QUICK SORT";\r
2189         chaine2 := "BUBBLE SORT";\r
2190         call move (180,190);\r
2191         call color (8);\r
2192         call outstring ("W I N N E R :");\r
2193         call move (178,188);\r
2194         call color (14);\r
2195         call outstring ("W I N N E R :");\r
2196 \r
2197         call color (9);\r
2198         if (nb_iterationsq < nb_iterationsb) then\r
2199                 call move (290,190);\r
2200                 call outstring(chaine1);\r
2201         else\r
2202                 call move (290,190);\r
2203                 call outstring (chaine2);\r
2204        fi;\r
2205        call RECTANGLE_PLEIN  (20,210,620,330,0,15);\r
2206        call color (15);\r
2207        call move (20,250);\r
2208        call draw (620,250);\r
2209        call move (20,290);\r
2210        call draw (620,290);\r
2211        call move (140,210);\r
2212        call draw (140,330);\r
2213        call move (260,210);\r
2214        call draw (260,330);\r
2215        call move (380,210);\r
2216        call draw (380,330);\r
2217        call move (500,210);\r
2218        call draw (500,330);\r
2219        call move (40,220);\r
2220        call color (2);\r
2221        call outstring ("METHODES");\r
2222        call move (152,220);\r
2223        call outstring ("NB ELEMENTS");\r
2224        call move (280,220);\r
2225        call outstring ("COUT MOYEN");\r
2226        call move (390,220);\r
2227        call outstring ("COUT MAXIMUM");\r
2228        call move (510,220);\r
2229        call outstring ("PERFORMANCE");\r
2230        call move (522,230);\r
2231        call outstring ("en %");\r
2232        call aff_nb(160,260,nbelems,3,15);\r
2233        call aff_nb(160,300,nbelems,3,15);\r
2234        calcule_cmb := entier((nbelems*(nbelems-1)) / 2);\r
2235        calcule_cmq := entier(2*(ln (nbelems) / ln (10))*nbelems);\r
2236        call aff_nb(550,300,ind_perfb,2,15);\r
2237        call aff_nb(550,260,ind_perfq,2,15);\r
2238        call aff_nb(290,300,calcule_cmb,4,15);\r
2239        call aff_nb(290,260,calcule_cmq,3,15);\r
2240        call aff_nb(410,260,cout_maxq,3,15);\r
2241        call aff_nb(410,300,calcule_cmb,4,15);\r
2242        call color (2);\r
2243        call move (35,260);\r
2244        call outstring ("QUICK SORT");\r
2245        call move (35,300);\r
2246        call outstring ("BUBBLE SORT");\r
2247         read (choix);\r
2248         call EFFACE (0,0,639,349,9,7,15);\r
2249 end;\r
2250 \r
2251 unit AFF_TRI : procedure(choix_courant,nbelems: integer);\r
2252 begin\r
2253 pref STR_ELEMENTS block\r
2254 var \r
2255         CONTINUE : boolean,\r
2256         choix : char,\r
2257         TAB1,TAB2 : STR_ELEMENTS,\r
2258         i,rand,det_coul,essai,\r
2259         nb_perm,nb_iterationsq,nb_iterationsb : integer;\r
2260 begin\r
2261         nb_perm := 0;\r
2262         nb_iterationsq := 0;\r
2263         nb_iterationsb := 0;\r
2264         CONTINUE := false;\r
2265         call EFFACE (0,0,639,349,9,7,15);\r
2266         case    choix_courant\r
2267         when 1:\r
2268                 TAB1 := new HISTOGRAMMES (nbelems);\r
2269                 TAB2 := new HISTOGRAMMES (nbelems);\r
2270         when 2:\r
2271                 TAB1 := new POLY (nbelems);\r
2272                 TAB2 := new POLY (nbelems);\r
2273         when 3 :\r
2274                 TAB1 := new SURFACES (nbelems);\r
2275                 TAB2 := new SURFACES (nbelems);\r
2276          esac;\r
2277                 call AFF_RENS;\r
2278                 call TAB1.randomize;\r
2279                 call TAB2.copie(TAB1);\r
2280                 for i := 0 to  nbelems-1\r
2281                 do\r
2282                         call TAB1.trace (i,105);\r
2283                         call TAB2.trace (i,280);\r
2284                 od;\r
2285                 \r
2286                 call QUICK_SORT (0,nbelems-1,TAB1,nb_perm,nb_iterationsq);\r
2287                 call AFF_RENS_FIN;\r
2288                 nb_perm := 0;\r
2289                 call TAB1.killtab;\r
2290                 kill (TAB1);\r
2291                 call bubble_sort(nbelems-1,TAB2,nb_perm,nb_iterationsb);\r
2292                 call AFF_RENS_FIN2;\r
2293                 call TAB2.killtab;\r
2294                 kill (TAB2);\r
2295                 read (choix);\r
2296                 CONTINUE:=BOX_MESSAGE("Voulez-vous les statistiques des tris ?",\r
2297                         150,75,500,200);\r
2298                 if ( CONTINUE) then \r
2299                         call EFFACE (0,0,639,349,9,7,15);\r
2300                         call STATS(nb_iterationsq,nb_iterationsb,nbelems);\r
2301                 else\r
2302                         call EFFACE (0,0,639,349,9,7,15);\r
2303                         exit;\r
2304                 fi;\r
2305     end;\r
2306 end AFF_TRI;\r
2307 unit SWAP : procedure (indice1 , indice2 : integer ; \r
2308                         inout T2 : STR_ELEMENTS;inout nb_perm : integer);\r
2309 begin\r
2310 \r
2311 pref STR_ELEMENTS block\r
2312 var\r
2313 temp1,temp2,coul1,coul2,hauteur1,hauteur2 : integer;\r
2314 \r
2315    begin\r
2316         nb_perm := nb_perm + 1;\r
2317         call aff_nb (560,120,nb_perm,4,1);\r
2318         call T2.echange (indice1,indice2,105);\r
2319 end;\r
2320 end SWAP;\r
2321 \r
2322 \r
2323 unit QUICK_SORT : procedure (gauche,droite : integer ; inout T : STR_ELEMENTS;\r
2324                         inout nb_perm,nb_iterations :integer);\r
2325 \r
2326 begin\r
2327 pref STR_ELEMENTS block\r
2328 var\r
2329     moy,ibas,ihaut : integer ;\r
2330 begin\r
2331    (* initialisation des indices bas et haut *)\r
2332    ibas := gauche;                  \r
2333    ihaut := droite;\r
2334    (* choix d'une valeur mediane *) \r
2335    moy := (gauche + droite) div 2;\r
2336    (* echange pour que valeurs gauches <= pivot <= valeurs droites *)\r
2337    do\r
2338         (* recherche de la premiere valeur de gauche mal placee *)\r
2339         while (T.compare (ibas,moy)=-1)\r
2340         do\r
2341                 ibas := ibas + 1;\r
2342                 nb_iterations := nb_iterations + 1;\r
2343         od;\r
2344         (* recherche de la premiere valeur de droite mal placee *)\r
2345         while (T.compare (moy,ihaut)=-1)\r
2346         do\r
2347                 ihaut := ihaut - 1;\r
2348                 nb_iterations := nb_iterations + 1;\r
2349         od;\r
2350         call aff_nb(560,140,nb_iterations,4,1);\r
2351         (* echange eventuel de 2 valeurs mal classees *)\r
2352         if ibas <= ihaut then\r
2353                 call SWAP (ibas,ihaut,T,nb_perm);\r
2354                 if ibas = moy then\r
2355                         moy := ihaut;\r
2356                 else if ihaut = moy then\r
2357                         moy := ibas;\r
2358                      fi;\r
2359                 fi;\r
2360                 ibas := ibas + 1;\r
2361                 ihaut := ihaut - 1;\r
2362         fi;\r
2363         if ibas > ihaut then exit;\r
2364         fi;\r
2365    od;\r
2366    (* recursion si les sous-intervalles ne sont pas d\82j\85 tri\82s *)\r
2367    if ihaut > gauche then\r
2368         call QUICK_SORT (gauche,ihaut,T,nb_perm,nb_iterations);\r
2369    fi;\r
2370    if ibas < droite then\r
2371         call QUICK_SORT (ibas,droite,T,nb_perm,nb_iterations);\r
2372    fi;\r
2373 \r
2374 end;\r
2375 end QUICK_SORT;\r
2376 \r
2377 unit bubble_sort : procedure (n : integer;inout T : STR_ELEMENTS;\r
2378                                 inout nb_perm,nb_iterations : integer);\r
2379 var\r
2380         i,j : integer,\r
2381         triok : boolean;\r
2382         begin\r
2383                 i:=n;\r
2384                 (* tant que le tableau n'est pas enti\8arement tri\82 *)\r
2385                 while (i>=0) and not triok\r
2386                 do\r
2387                    triok := true;\r
2388                    (* tri du sous-tableau *)\r
2389                    for j := 0 to i-1 \r
2390                    do\r
2391                        nb_iterations := nb_iterations + 1;\r
2392                        call aff_nb (560,315,nb_iterations,4,1);\r
2393                        (* ordonner 2 \82l\82ments *)\r
2394                        if T.compare(j,j+1) = 1 then\r
2395                                 nb_perm := nb_perm + 1;\r
2396                                 call aff_nb (560,295,nb_perm,4,1);\r
2397                                 call T.echange(j,j+1,280);\r
2398                                 triok := false;\r
2399                        fi;\r
2400                    od;\r
2401                    i := i-1;\r
2402                 od;\r
2403       end bubble_sort;\r
2404 \r
2405 begin\r
2406         pref STR_ELEMENTS block\r
2407 (********************************************************************)\r
2408 (*                      PROGRAMME      PRINCIPAL                    *)\r
2409 (********************************************************************)\r
2410 \r
2411 begin\r
2412         call gron(NOCARD);     (* installation du pilote graphique *)\r
2413         call rectangle_plein (0,0,639,349,7,7);\r
2414         call pallet (7);\r
2415         call CHARGE_FOND;\r
2416         call CHOIX_UTIL ;\r
2417         call EFFACE (0,0,639,349,9,7,15);\r
2418         call groff;\r
2419 end;\r
2420 end;\r
2421 end;\r
2422 end;\r
2423 end TRI;\r