home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 17 / CD_ASCQ_17_101194.iso / dos / prg / mos / docs / mos.txt < prev    next >
Text File  |  1994-09-17  |  170KB  |  2,742 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.                          M.O.S (Master Operating System)
  8.                                 Interface v1.0
  9.  
  10.                               (C)1994 F.Cheveau.
  11.  
  12.  
  13.  
  14.  
  15.  
  16.    MOS est un ensemble d'unités Turbo Pascal permettant de créer rapidement
  17. ses propres interfaces en mode texte ou graphique.
  18. Il peut servir de support au développement de vos programmes et propose
  19. de nombreuses fonctions inédites qui font défaut au Turbo Pascal.
  20.  
  21. MOS permet entre autre de gérer:
  22.  - La Souris,
  23.  - Les Fenêtres (et le multifenetrage),
  24.  - Les Menus,
  25.  - Les Gadgets,
  26.  - Les Requesters (de fichiers, de dialogues ...),
  27.  - La Mémoire XMS,
  28.  - et bien d'autres choses encore.
  29.  
  30. De nombreux exemples (exécutables et sources) sont fournis de manière à vous
  31. permettre de progresser rapidement dans le développement de vos programmes.
  32.  
  33. Si vous désirez me contacter, écrivez-moi à l'adresse suivante:
  34.  
  35.  CHEVEAU Frédéric,
  36.  8 Passage des grillons,
  37.  66000 Perpignan,
  38.  FRANCE.
  39.  
  40.  Ou bien pour ceux qui possèdent un minitel,
  41.  faites le 36.14, Code "RTEL1" (aprés 10 heures 30 le soir, se serveur
  42.  ne coûte que 12 centimes la minute, donc ca ne vous ruinera pas !).
  43.  Et laissez-moi un message dans ma boite au lettre "BouFFtou".
  44.  
  45.  
  46. ------------------------------------------------------------------------------
  47.  
  48.         
  49.         SOMMAIRE
  50.  
  51.  1 - Convention d'enregistrement
  52.  2 - Pourquoi payer la licence de MOS ?
  53.  3 - Présentation générale
  54.  4 - Contenu de l'archive "MOS.EXE"
  55.  5 - Version future de MOS
  56.  6 - Description des unitées de l'interface Texte
  57.  7 - Description des unitées de l'interface Graphique
  58.  8 - Un exemple de logiciel développé avec MOS: Disk Speed v1.0
  59.  
  60.  
  61.                          CONVENTION D'ENREGISTREMENT
  62.                          ---------------------------
  63.  
  64. Les personnes désirant s'enregistrer pour MOS Interface doivent prendre
  65. connaissance de la convention d'enregistrement suivante:
  66.  
  67. 1 - Ce présent programme ne peut être diffusé qu'en respectant l'intégrité
  68. de l'oeuvre originale tant sur le nombre de fichiers, que sur les mentions
  69. légales  et  copyright,  que  sur  le code  ou le  contenu informatif  des
  70. fichiers.
  71.  
  72. 2 - En aucun cas ce dit programme  ne peut  être distribué  par une  firme,
  73. établissement  à  caractère  commercial  dans  le  but  d'en  retirer   un
  74. quelconque profit si l'auteur ne l'y a pas autorisé par écrit.
  75.  
  76. 3 - La diffusion par un tiers  autre qu'en  2* est  autorisée par  l'auteur
  77. dans le respect du point 1*. Cette diffusion se doit  d'être gratuite.  Le
  78. diffuseur ne pouvant prétendre qu'à un  éventuel dédommagement  pécuniaire
  79. au titre de frais de copie et de  support. Cet  éventuel dédommagement  ne
  80. pourra en aucun cas être supérieur a 30 FF.
  81.  
  82. 4 - L'auteur est  seul habilité  à percevoir  la contribution  à titre  de
  83. Shareware. Cette rémunération ne peut en aucun cas être  collectée par  un
  84. tiers à quelque titre que ce soit.
  85.  
  86. 5 - L'auteur  est  seul habilité  à dispenser  les licences  d'utilisation
  87. provisoires et définitives.
  88.  
  89. 6 - Aucune  restriction  territoriale de  diffusion de  ce logiciel  n'est
  90. formulée par l'auteur.
  91.  
  92. 7 - Aucune restriction  de diffusion  dans le  temps de  ce logiciel  n'est
  93. formulée par l'auteur.
  94.  
  95. 8 - L'auteur ne peut être tenu responsable des  dommages pouvant survenir
  96. sur la  machine  de  l'utilisateur,  ni  de  l'usage  illicite,  détourné
  97. ou frauduleux dont ce logiciel pourrait faire l'objet, soit par
  98. l'utilisateur lui-même, soit par un tiers.
  99.  
  100. 9 - Passé le délai de libre-éssai de 21 Jours, si vous  souhaitez obtenir
  101. une licence définitive d'utilisateur il vous suffira de remplir le formulaire
  102. ci-dessous, ou d'imprimer le fichier order.doc, de le dater, le signer, et
  103. le retourner à l'auteur accompagné de votre contribution calculée selon le
  104. barème suivant. Toute utilisation de ce logiciel sans licence  définitive,
  105. passé ce délai, serait irrégulière.
  106. La licence  définitive vous  donnera droit  à diffuser  les programmes  de
  107. votre  réalisation  utilisant  le  logiciel  MOS Interface v1.0.
  108.  
  109. La  licence définitive  est nominative,  elle ne  peut en  aucun cas  être
  110. l'objet d'une cession, transmission ou vente.
  111.  
  112.  
  113. --------------------------------------------------------------------------
  114.                      FORMULAIRE D'ENREGISTREMENT pour MOS
  115. --------------------------------------------------------------------------
  116. Formulaire à retourner complété et signé à l'auteur de MOS Interface:
  117.  
  118. Frédéric CHEVEAU,
  119. 8 Passage des grillons,
  120. 66000 PERPIGNAN,
  121. FRANCE.
  122. --------------------------------------------------------------------------
  123.  
  124. Je soussigné(e),
  125.  
  126. Nom/Prénom ou
  127. Raison Sociale :...........................................
  128. Service/Responsable :......................................
  129.  
  130. Adresse :..................................................
  131.          ..................................................
  132.  
  133. Code postal :...........
  134. Ville :..............................
  135. Pays :...............................
  136.  
  137. désire devenir utilisateur officiel de MOS Interface, et fait pour cela
  138. une demande de licence définitive.
  139.  
  140. Téléphone :..........................
  141. Fax       :..........................
  142. Autre     :..........................
  143.            ..........................
  144.  
  145. Age       :.........
  146. Sexe      O Masculin
  147.           O Féminin
  148.  
  149. Machine utilisée:            Fréquence processeur:
  150. O Power PC                    O 25 Mhz
  151. O PC Pentium                  O 33 Mhz
  152. O PC 486                      O 40 Mhz
  153. O PC 386                      O 50 Mhz
  154. O Autre ..........            O 66 Mhz
  155.                               O 75 Mhz
  156.                               O Autre : ..........
  157.  
  158. Systeme d'exploitation:...........................
  159. Affichage (VGA, SVGA 256c, SVGA 16Mc...)..........
  160.  
  161. Mémoire vidéo:.....................              
  162. Ecran        :.....................
  163.  
  164. Périphériques:.....................
  165.  
  166. Intérets     O Programmation
  167.              O Jeux
  168.              O Utilitaires
  169.              O Musique
  170.              O Autres : ...........
  171.  
  172. Suggestions :................................................
  173. .............................................................
  174. .............................................................
  175. .............................................................
  176. .............................................................
  177.  
  178. Je joins à ce formulaire ma contribution fixée selon le barème à savoir :
  179.  
  180.  
  181. LICENCE POUR UN EXEMPLAIRE
  182.  
  183.                 QUANTITE         TOTAL
  184. Entreprises,
  185. Administrations,
  186. Ecoles,
  187. Collectivités,     150 X..=.....,..FF
  188.  
  189. Particuliers        80 X..=.....,..FF
  190.  
  191.  
  192. LICENCE MULTI-POSTES,
  193.  
  194.                 QUANTITE         TOTAL
  195.  
  196. Entreprises,
  197. Administrations,
  198. Ecoles,
  199. Collectivités,     300 X..=.....,..FF
  200.  
  201. Particuliers       160 X..=.....,..FF
  202.  
  203.                                -----------
  204.                    TOTAL :     .....,..FF
  205.                                -----------
  206. DOCUMENTATION IMPRIMEE (30,00FF) .........
  207.                                -----------
  208.                    TOTAL :     .....,..FF
  209.  
  210. Ci-joint ma contribution de ......,..FF
  211. par O Espèces
  212.     O Mandat
  213.     O Chèque N*.... sur la ..........
  214.  
  215. Le  versement  de  cette contribution  implique mon  entière adhésion  aux
  216. articles de la licence provisoire en ma possession.
  217.  
  218.                 Fait à ..............
  219.                 Le...................
  220.  
  221.                 Signature,
  222.  
  223.  
  224. ------------------------------------------------------------------------------
  225.  
  226.                       POURQUOI PAYER LA LICENCE DE MOS ?
  227.                       ----------------------------------
  228.  
  229.     Ou pourquoi devenir un utilisateur enregistré de MOS.
  230.     "Why to become a registered user" (Pour nos amis Anglophones) !!!
  231.  
  232. Devenir un "Utilisateur Enregistré" vous confère les droits et
  233. privilèges suivants:
  234.  
  235.   - Etre tenu au courant des nouvelles versions de MOS.
  236.  
  237.   - Recevoir Chez soi la derniere version de MOS à un prix défiant
  238.     toute concurence: 0 Frs !!! (Normal non ?).
  239.  
  240.   - Avoir l'insigne honneur de faire partie de la grande famille des
  241.     utilisateurs de MOS (Pour l'instant je suis tout seul !!! Sniff...).
  242.  
  243.   - Rentrer dans le livre "Guiness des Records" pour être le premier
  244.     Français à avoir payer un SHAREWARE (Si Si !!!).
  245.  
  246.   - Faire gagner 3,50 F à la poste par l'envoi de la disquette de MOS.
  247.  
  248.   - La satisfaction d'avoir accompli une bonne action (Faites des heureux
  249.     parmis vos amis..... Offrez-leur MOS à Noël !!!).
  250.  
  251.  
  252.     Et puis c'est tout !!! et c'est deja pas mal non ???
  253.  
  254.  
  255.  
  256. ------------------------ I - PRESENTATION GENERALE ---------------------------
  257.  
  258.    
  259.    MOS (Master Operating System) est un ensemble d'unités Turbo Pascal
  260. Permettant de créer rapidement ses propres interfaces en mode texte
  261. ou graphique.
  262. Il peut servir de support au développement de vos programmes et propose
  263. de nombreuses fonctions inédites qui font défaut au Turbo Pascal.
  264.  
  265. MOS permet entre autre de gérer:
  266.  - La Souris,
  267.  - Les Fenêtres (et le multifenetrage),
  268.  - Les Menus,
  269.  - Les Gadgets,
  270.  - Les Requesters (de fichiers, de dialogues ...),
  271.  - La Mémoire XMS,
  272.  - et bien d'autres choses encore.
  273.  
  274. De nombreux exemples (exécutables et sources) sont fournis de manière à vous
  275. permettre de progresser rapidement dans le développement de vos programmes.
  276. J'ai d'ailleurs volontairement insisté sur des exemples détaillés, plutôt
  277. que sur une documentation longue et fastidieuse. C'est pourquoi, vous ne
  278. trouverez dans cette documentation, que le strict minimum quant-à 
  279. l'utilisation des fonctions de MOS, le mieux étant encore de se reporter
  280. aux sources d'exemples données. Elles sont simples, commentées, et ne 
  281. traitent chacune que d'un seul sujet de manière à en faciliter la 
  282. compréhention. 
  283.  
  284. Si toutefois, vous ne parvenez pas à comprendre certaines fonctions de MOS,
  285. vous pouvez me contacter à mon adresse, ou sur minitel (mes coordonées
  286. sont données au début de cette documentation).
  287.  
  288.  
  289. Cette documentation a été subdivisée en deux partie:
  290. - La première partie traitant de l'interface texte,
  291. - La seconde de l'interface graphique.
  292.  
  293.  
  294. Pour vous prouver l'efficacité de MOS, j'ai inclu dans l'archive un
  295. logiciel dont l'interface a été programmée avec MOS (ils se trouve dans
  296. le répertoire EXEMPLES\SOFTS). Ces interfaces ont étés réalisées en moins de
  297. trois jours (pour le plus gros logiciel "DISK-SPEED").
  298.  
  299. De plus, j'ai fais en sorte que MOS soit facile d'emploi.
  300. Nul besoin d'être programmeur chevronné pour l'utiliser, un niveau moyen est
  301. parfaitement suffisant.
  302.  
  303. Pour chaque point important traitant d'une fonction particulière de MOS,
  304. j'ai donné un exemple (Source + Exécutable) se trouvant dans le répertoire
  305. "EXEMPLES" et dans les sous-répertoires "SRC_TXT" pour les sources de 
  306. l'interface texte, et "SRC_GFX" pour les sources de l'interface graphique.
  307.  
  308. Je tiens également à préciser que MOS n'a pas été programmé orienté objet,
  309. qu'il n'y a pas un seul pointeur, ni aucune liste chaînée, ou quoi-que 
  310. ce soit du même genre, et pourtant, il marche parfaitement bien, 
  311. n'est pas buggué (à la différence de certains logiciels que je ne nomerais
  312. pas, mais du style Windows), et ne prend quasiment pas de place sur disque et
  313. en mémoire pour fonctionner.
  314.  
  315. Ma devise étant bien évidement "Pourquoi faire compliqué quand on peu faire
  316. simple" (bien que, j'aurais pu dire aussi "Pourquoi programmer objet lorsqu'on
  317. peut programmer sans !!!), j'ai donc codé MOS sans que cela devienne un
  318. casse-tête pour moi (pas de structures à la con et totalement inutiles 
  319. du genre héritage abusif et polymorphisme).
  320.  
  321. Mais non, mais non, je ne fais pas de l'anti-programmation objet primaire,
  322. je suis seulement réaliste. Essayez, et vous verrez !!!
  323.  
  324. Bon.... passons aux choses sérieuse.
  325.  
  326. ----------------------- II - CONTENU DE L'ARCHIVE MOS ------------------------
  327.  
  328. Voici ce que vous devriez normalement trouver dans l'archive de MOS:
  329.  
  330. TPU_TXT             <DIR>
  331.    ZUUL_BAS.TPU                         Definition variables
  332.    ZUUL_ASM.TPU                         Traficotage des interruptions
  333.    ZUUL_COL.TPU                         Gestion des couleurs
  334.    ZUUL_TXT.TPU                         Gestion et affichage du texte
  335.    ZUUL_TOO.TPU                         Outils pour l'affichage
  336.    ZUUL_SWA.TPU                         Rafraichissement de l'écran
  337.    ZUUL_MSE.TPU                         Gestion de la Souris
  338.    ZUUL_GAD.TPU                         Gestion des gadgets
  339.    ZUUL_DIR.TPU                         Gestion des disques
  340.    ZUUL_REQ.TPU                         Gestion des requesters
  341.    ZUUL_MEN.TPU                         Gestion des menus
  342.  
  343. TPU_GFX             <DIR>
  344.    ZUUL_BAS.TPU                         Définition variables
  345.    ZUUL_ASM.TPU                         Traficotage des interruptions
  346.    ZUUL_COL.TPU                         Gestion des couleurs
  347.    ZUUL_TXT.TPU                         Gestion et affichage du texte
  348.    ZUUL_TOO.TPU                         Outils pour l'affichage
  349.    ZUUL_SWA.TPU                         Rafraichissement de l'écran
  350.    ZUUL_MSE.TPU                         Gestion de la Souris
  351.    ZUUL_XMS.TPU                         Gestion de la mémoire XMS
  352.    ZUUL_GAD.TPU                         Gestion des gadgets
  353.    ZUUL_WIN.TPU                         Gestion des fenêtres
  354.    ZUUL_DIR.TPU                         Gestion des disques
  355.    ZUUL_REQ.TPU                         Gestion des requesters
  356.  
  357. EXEMPLES            <DIR>
  358.    GFX_SRC          <DIR>
  359.       RADIO   .PAS                      Exemple de "Boutons Radios"
  360.       SELECTOR.PAS                      Utilisation du sélecteur de fichiers
  361.       LIGH_BOX.PAS                      Création d'une light-box
  362.       GADGETS .PAS                      Utilisation de quelques gadgets
  363.       FLAG_WIN.PAS                      Définition des flags d'une fenêtre
  364.       STRING  .PAS                      Utilisation d'un "String Requester"
  365.       EZ_REQUE.PAS                      Utilisation des requesters "EZ"
  366.       PALETTE .PAS                      Utilisation du requester palette
  367.       PROGRESS.PAS                      Exemple de "Progress Requester"
  368.       POINTER .PAS                      Modification de la forme du pointeur
  369.       DIALOGUE.PAS                      Création d'une boite de dialogue   
  370.       SYSTEME .PAS                      Configuration du système MOS
  371.       HARDWARE.PAS                      Affichage configuration hardware
  372.       MEMORY  .PAS                      Affichage configuration mémoire
  373.  
  374.    GFX_EXE          <DIR>
  375.       RADIO   .EXE                      
  376.       SELECTOR.PAS
  377.       LIGH_BOX.PAS
  378.       GADGETS .PAS
  379.       FLAG_WIN.PAS
  380.       STRING  .PAS
  381.       EZ_REQUE.PAS
  382.       PALETTE .PAS
  383.       PROGRESS.EXE
  384.       POINTER .EXE
  385.       DIALOGUE.EXE
  386.       SYSTEME .PAS
  387.       HARDWARE.EXE
  388.       MEMORY  .EXE
  389.  
  390.    TXT_SRC          <DIR>
  391.       MENU    .PAS                      Création et gestion d'un menu
  392.       BUTTONS .PAS                      Gestions des boutons en texte
  393.       SELECTOR.PAS                      Obtention d'un File_Requester
  394.       EZ_REQU .PAS                      Obtention d'un EZ_Requester
  395.       ST_REQU .PAS                      Obtention d'un ST_Requester
  396.       VA_REQU .PAS                      Obtention d'un VA_Requester
  397.  
  398.    TXT_EXE          <DIR>
  399.       MENU    .EXE
  400.       BUTTONS .EXE                    
  401.       SELECTOR.EXE                    
  402.       EZ_REQU .EXE                    
  403.       ST_REQU .EXE                    
  404.       VA_REQU .EXE                    
  405.    
  406.    SOFT             <DIR>
  407.       DS      .EXE                      Exécutable Disk-Speed v1.0
  408.       DS      .PAS                      Source de l'exécutable
  409.       DS_LIB  .TPU                      Unité pour DS
  410.       DS_LIB  .PAS                      Source de l'unité pour DS
  411.       DSMODULE.LIS                      Fichier data: Liste de modules
  412.       DSMODULE.DTA                      Fichier data: Paramètres des modules
  413.       DSMODULE.CFG                      Fichier data: Configuration de DS
  414.       DSPTS_01.PTS                      Fichier data: Série de points "Test"
  415.       DSPTS_02.PTS                            "
  416.       DSPTS_03.PTS                            "
  417.       DSPTS_04.PTS                            "
  418.       DSPTS_05.PTS                            "
  419.       DSPTS_06.PTS                            "
  420.       DSPTS_07.PTS                            "
  421.       DSPTS_08.PTS                            "
  422.       EGAVGA  .BGI                      Driver VGA
  423.       LITT    .CHR                      Fonte pour DS
  424.  
  425.  
  426. DOCS                <DIR>
  427.    CHAMPS  .TXT                         Les champs que MOS utilise
  428.    CONSEILS.TXT                         Les conseils pour bien coder avec MOS
  429.    REGISTER.TXT                         Comment devenir utilisateur enregistré
  430.    GREETING.TXT                         Remerciement ... .etc
  431.    NEW_PROC.TXT                         Nom des procedures & fonctions de MOS
  432.    VARIABLE.TXT                         Description des variables de MOS
  433.    ERREURS .TXT                         Explication des messages d'erreur
  434.    MOS     .TXT                         Ce que vous êtes en train de lire
  435.    BUGS    .TXT                         Les bugs éventuels de MOS
  436.  
  437. DATAS               <DIR>
  438.    LITT    .CHR                         La fonte de base de MOS
  439.    EGAVGA  .BGI                         Le driver de base
  440.  
  441.  LISE ET.MOI                            Une explication succinte de MOS
  442.  
  443.  
  444. -------------------------- VERSION FUTURE DE MOS -----------------------------
  445.  
  446. Voici quelques unes des améliorations potentielles de MOS pour les versions
  447. futures.
  448. Si vous avez des idés ou des suggestions n'hésitez pas à me contacter.
  449. (Mon adresse est notée au début de cette documentation).
  450.  
  451. - Restructuration de certaines fonctions ou modification des paramètres.
  452. - Implémentation de la gestion des menus dans l'interface graphique.
  453. - Supression de certains petits buggs.
  454. - Implémentation de la gestion des images et des icônes.
  455. - Stockage des fonds d'écrans en XMS.
  456. - Gestion complète du clavier.
  457. - Gestion de l'heure en texte et en graphique.
  458. - Création d'un éditeur de ressources pour Requesters.
  459. - Implémentation d'un player de modules au format Soundtracker.
  460.  
  461.  
  462. ------------------------- III - L'INTERFACE TEXTE ----------------------------
  463.  
  464. A) - Hiérarchisation des unités.
  465.  
  466. Les unités de MOS utilisent souvent d'autres unités de MOS, en fait, elles
  467. sont toutes liées entre elles. Voici la façon dont elles sont hiérarchisées:
  468.  
  469.  
  470.    EVOLUE      ZUUL_MEN             ZUUL_REQ      ZUUL_DIR
  471.     /T\             \              /      \      /
  472.      |                \          /        ZUUL_GAD
  473.      |                  \      /          /      \
  474.      |                  ZUUL_SWA   ZUUL_MSE      ZUUL_TOO
  475.      |                               |           /      \
  476.      |                  ZUUL_ASM     |    ZUUL_TXT      ZUUL_COL
  477.      |                         \     |
  478.   PRIMAIRE                     ZUUL_BAS
  479.  
  480.  
  481.  
  482.         L'interface Texte étant trés simple à utiliser, et ne possédant
  483. que peu de fonctions, je ne m'attarderais pas dessus. Seule les fonctions
  484. et procédures principales seront ici données.
  485. Pour les autre procédures, il vous suffira de vous reporter à la partie IV
  486. (Interface Graphique) qui traite en partie des mêmes fonctions.
  487.  
  488. Les fonctions de l'unité "ZUUL_ASM" de l'interface texte sont les mêmes
  489. que celle de l'interface graphique, vous devez donc vous reporter au
  490. chapitre "INTERFACE GRAPHIQUE", Unité "ZUUL_ASM" pour voir la description
  491. des fonctions de cette unité.
  492.  
  493.  
  494.                            **********************
  495.                            *        //\\        *
  496.                            *      //    \\      *
  497.                            *    //        \\    *
  498.                            *  //     /\     \\  *
  499.                            *  \\     \/     //  *
  500.                            *    \\        //    *
  501.                            *      \\    //      *
  502.                            *        \\//        *
  503.                            **********************
  504.  
  505.  
  506.  ╔═══════════════════════════════════════════════════════════════════════════╗
  507.  ║                          --- UNIT ZUUL_COL ---                            ║
  508.  ╠═══════════════════════════════════════════════════════════════════════════╣
  509.  ║ CREATEUR.: F.Cheveau.                                                     ║
  510.  ║ COMMENCE.: Le 12.04.94.                                                   ║
  511.  ║ RELEASE..: Le 12.04.94 à l'IUT (Montpellier).                             ║
  512.  ║ CONTENU..: Gestion des Couleurs.                                          ║
  513.  ║ CONTAINS.: X Procedures, X Fonctions.                                     ║
  514.  ║ EXTERN...: No Specific TPU Needed.                                        ║
  515.  ╚═══════════════════════════════════════════════════════════════════════════╝
  516.  
  517.  ╔═══════════════════════════════════════════════════════════════════════════╗
  518.  ║                           PROCEDURE TC,BGC                                ║
  519.  ╠═══════════════════════════════════════════════════════════════════════════╣
  520.  ║ IN.....: C(COLOR) :INTEGER                                                ║
  521.  ║ OUT....: /                                                                ║
  522.  ║ EXPLAIN: CHANGE LA COULEUR DU TEXTE OU DU FOND.                           ║
  523.  ║ EXEMPLE: TC(7); BGC(0);           ;Copuleurs du DOS.                      ║
  524.  ╚═══════════════════════════════════════════════════════════════════════════╝
  525.  
  526.  ╔═══════════════════════════════════════════════════════════════════════════╗
  527.  ║                 PROCEDURES EXTENDEDCOLORS, NORMALCOLORS                   ║
  528.  ╠═══════════════════════════════════════════════════════════════════════════╣
  529.  ║ IN.....: /                                                                ║
  530.  ║ OUT....: /                                                                ║
  531.  ║ EXPLAIN: PASSE EN COULEURS ETENDUES OU COULEURS NORMALES.                 ║
  532.  ╚═══════════════════════════════════════════════════════════════════════════╝
  533.  
  534.  
  535.                            **********************
  536.                            *        //\\        *
  537.                            *      //    \\      *
  538.                            *    //        \\    *
  539.                            *  //     /\     \\  *
  540.                            *  \\     \/     //  *
  541.                            *    \\        //    *
  542.                            *      \\    //      *
  543.                            *        \\//        *
  544.                            **********************
  545.  
  546.  
  547.  ╔═══════════════════════════════════════════════════════════════════════════╗
  548.  ║                          --- UNIT ZUUL_MSE ---                            ║
  549.  ╠═══════════════════════════════════════════════════════════════════════════╣
  550.  ║ CREATEUR.: F.Cheveau.                                                     ║
  551.  ║ COMMENCE.: Le 15.02.94 et terminé le 25.02.94 (IUT Montpellier).          ║
  552.  ║ RELEASE..: Le 15.04.94 à l'IUT (Montpellier).                             ║
  553.  ║ CONTENU..: Gestion de la Souris.                                          ║
  554.  ║ CONTAINS.: X Procedures.                                                  ║
  555.  ║ EXTERN...: Need Classic Units to run Correctly.                           ║
  556.  ╚═══════════════════════════════════════════════════════════════════════════╝
  557.  
  558.  ╔═══════════════════════════════════════════════════════════════════════════╗
  559.  ║                            FONCTION INITMOUSE                             ║
  560.  ╠═══════════════════════════════════════════════════════════════════════════╣
  561.  ║ IN.....: /                                                                ║
  562.  ║ OUT....: /                                                                ║
  563.  ║ EXPLAIN: Initialise la Souris (La positionne au Centre de l'ecran).       ║
  564.  ║ EXEMPLE: INITMOUSE;                                                       ║
  565.  ╚═══════════════════════════════════════════════════════════════════════════╝
  566.  
  567.  ╔═══════════════════════════════════════════════════════════════════════════╗
  568.  ║                      PROCEDURES SHOWMOUSE, HIDEMOUSE                      ║
  569.  ╠═══════════════════════════════════════════════════════════════════════════╣
  570.  ║ IN.....: /                                                                ║
  571.  ║ OUT....: /                                                                ║
  572.  ║ EXPLAIN: Planque ou Deplanque la Souris                                   ║
  573.  ║ EXEMPLE: Et puis quoi encore !!!                                          ║
  574.  ╚═══════════════════════════════════════════════════════════════════════════╝
  575.  
  576.  ╔═══════════════════════════════════════════════════════════════════════════╗
  577.  ║                           FONCTION BOXMOUSET                              ║
  578.  ╠═══════════════════════════════════════════════════════════════════════════╣
  579.  ║ IN.....: X1,Y1,X2,Y2 = Box de Test de la position souris à l'interieur.   ║
  580.  ║          B = Code du bouton a tester + de la zone.                        ║
  581.  ║          0 = Test Zone + Boutons non Actives.                             ║
  582.  ║          1 = Test Zone + Left Bouton.                                     ║
  583.  ║          2 = Test Zone + Middle Button.                                   ║
  584.  ║          3 = Test Zone + Right Bouton.                                    ║
  585.  ║         10 = Test Zone sans se preocuper des Boutons.                     ║
  586.  ║ OUT....: True / False (Boolean).                                          ║
  587.  ║ EXPLAIN: Teste si la souris se trouve dans le box specifie (Mode Texte).  ║
  588.  ║ EXEMPLE: If BOXMOUSE(10,15,5,6,1)=True Then Writeln('OK');                ║
  589.  ╚═══════════════════════════════════════════════════════════════════════════╝
  590.  
  591.  ╔═══════════════════════════════════════════════════════════════════════════╗
  592.  ║                    PROCEDURES GETMOUSET, GETMOUSEG                        ║
  593.  ╠═══════════════════════════════════════════════════════════════════════════╣
  594.  ║ IN.....: X,Y: Coordonées de la Souris (Caracteres ou Pixels).             ║
  595.  ║          G,M,D: Etats des Boutons Souris (Gauche, Milieu, Droite) = Bool. ║
  596.  ║ OUT....: /                                                                ║
  597.  ║ EXPLAIN: Renvois la position et l'etat des boutons de la souris.          ║
  598.  ║ EXEMPLE: GetMouseT(X,Y,LM,RM); Writeln(X,Y,LM,RM);                        ║
  599.  ╚═══════════════════════════════════════════════════════════════════════════╝
  600.  
  601.  ╔═══════════════════════════════════════════════════════════════════════════╗
  602.  ║                    PROCEDURES PUTMOUSET, PUTMOUSEG                        ║
  603.  ╠═══════════════════════════════════════════════════════════════════════════╣
  604.  ║ IN.....: X,Y: Coordonées de la Souris (Caracteres ou Pixels)              ║
  605.  ║ OUT....: /                                                                ║
  606.  ║ EXPLAIN: Positionne la souris aux coordonées précisées (Textes ou GFX).   ║
  607.  ║ EXEMPLE: PutMouseT(X,Y);                                                  ║
  608.  ╚═══════════════════════════════════════════════════════════════════════════╝
  609.  
  610.  ╔═══════════════════════════════════════════════════════════════════════════╗
  611.  ║                    PROCEDURES LIMITEMT, LIMITEMG                          ║
  612.  ╠═══════════════════════════════════════════════════════════════════════════╣
  613.  ║ IN.....: X1,Y1,X2,Y2: Coordonées du Box Limite.                           ║
  614.  ║ OUT....: /                                                                ║
  615.  ║ EXPLAIN: Limite les déplacement de la souris dans un box.                 ║
  616.  ║ EXEMPLE: LimiteMouseT(16,50,5,10);                                        ║
  617.  ╚═══════════════════════════════════════════════════════════════════════════╝
  618.  
  619.  ╔═══════════════════════════════════════════════════════════════════════════╗
  620.  ║                          PROCEDURE SPEEDMOUSE                             ║
  621.  ╠═══════════════════════════════════════════════════════════════════════════╣
  622.  ║ IN.....: X: Mickeys; Y: Pixels                                            ║
  623.  ║ OUT....: /                                                                ║
  624.  ║ EXPLAIN: Definit le raport entre Mickeys et Pixels.                       ║
  625.  ║ EXEMPLE: SpeedMouse(5,10);                                                ║
  626.  ╚═══════════════════════════════════════════════════════════════════════════╝
  627.  
  628.  ╔═══════════════════════════════════════════════════════════════════════════╗
  629.  ║                       PROCEDURES CURSOFF, CURSON                          ║
  630.  ╠═══════════════════════════════════════════════════════════════════════════╣
  631.  ║ IN.....: /                                                                ║
  632.  ║ OUT....: /                                                                ║
  633.  ║ EXPLAIN: PLANQUE OU DEPLANQUE LE CURSEUR.                                 ║
  634.  ║ EXEMPLE: CursOff; Wait; CursOn;                                           ║
  635.  ╚═══════════════════════════════════════════════════════════════════════════╝
  636.  
  637.  ╔═══════════════════════════════════════════════════════════════════════════╗
  638.  ║                           PROCEDURE DEFCURSOR                             ║
  639.  ╠═══════════════════════════════════════════════════════════════════════════╣
  640.  ║ IN.....: H,B (WORD): Ligne Haute et Ligne Basse.                          ║
  641.  ║ OUT....: /                                                                ║
  642.  ║ EXPLAIN: Definit la Forme du Curseur (Haut/Bas).                          ║
  643.  ║ EXEMPLE: DefCursor(1,6);                                                  ║
  644.  ╚═══════════════════════════════════════════════════════════════════════════╝
  645.  
  646.  ╔═══════════════════════════════════════════════════════════════════════════╗
  647.  ║                            PROCEDURE MASKCURSOR                           ║
  648.  ╠═══════════════════════════════════════════════════════════════════════════╣
  649.  ║ IN.....: MAnd,MOr (WORD): Masque And et Or du Curseur.                    ║
  650.  ║ OUT....: /                                                                ║
  651.  ║ EXPLAIN: Definit le Masque du Curseur.                                    ║
  652.  ║ EXEMPLE: MaskCursor(1,6);                                                 ║
  653.  ╚═══════════════════════════════════════════════════════════════════════════╝
  654.  
  655.  
  656.                            **********************
  657.                            *        //\\        *
  658.                            *      //    \\      *
  659.                            *    //        \\    *
  660.                            *  //     /\     \\  *
  661.                            *  \\     \/     //  *
  662.                            *    \\        //    *
  663.                            *      \\    //      *
  664.                            *        \\//        *
  665.                            **********************
  666.  
  667.  
  668.  ╔═══════════════════════════════════════════════════════════════════════════╗
  669.  ║                         --- UNIT ZUUL_SWAP ---                            ║
  670.  ╠═══════════════════════════════════════════════════════════════════════════╣
  671.  ║ CREATEUR.: F.Cheveau & Fraggy.                                            ║
  672.  ║ COMMENCE.: Le 26.11.93 et terminé le 26.11.93 (Piaule à Vincent).         ║
  673.  ║ RELEASE..: Le 15.12.93 à l'IUT (Montpellier).                             ║
  674.  ║ CONTENU..: Gestion Screen, Routines Asm, Swap Pages...                    ║
  675.  ╚═══════════════════════════════════════════════════════════════════════════╝
  676.  
  677.  ╔═══════════════════════════════════════════════════════════════════════════╗
  678.  ║                           PROCEDURE SWAPHIDE                              ║
  679.  ╠═══════════════════════════════════════════════════════════════════════════╣
  680.  ║ IN.....: X1,Y1,X2,Y2 (INTEGER) = Positions du Cadre a l'ecran.            ║
  681.  ║          SVE (Savewin) = Variable de Stockage du bloc.                    ║
  682.  ║ OUT....: /                                                                ║
  683.  ║ EXPLAIN: DECOUPE UN CADRE A L'ECRAN ET LE CONSERVE EN MEMEOIRE.           ║
  684.  ╚═══════════════════════════════════════════════════════════════════════════╝
  685.  
  686.  ╔═══════════════════════════════════════════════════════════════════════════╗
  687.  ║                           PROCEDURE SWAPSHOW                              ║
  688.  ╠═══════════════════════════════════════════════════════════════════════════╣
  689.  ║ IN.....: X,Y (INTEGER) = Position d'Affichage                             ║
  690.  ║          SVE (Savewin) = Variable de Stockage du bloc.                    ║
  691.  ║ OUT....: /                                                                ║
  692.  ║ EXPLAIN: REAFFICHE A LA POSITION X,Y LE BLOC GARDE EN MEMOIRE.            ║
  693.  ╚═══════════════════════════════════════════════════════════════════════════╝
  694.  
  695.  ╔═══════════════════════════════════════════════════════════════════════════╗
  696.  ║                             PROCEDURE GOPAGE                              ║
  697.  ╠═══════════════════════════════════════════════════════════════════════════╣
  698.  ║ IN.....: X: Numero de la page (de 0 a 3)                                  ║
  699.  ║ OUT....: /                                                                ║
  700.  ║ EXPLAIN: Passe sur la Page en question et y reste pour travailler.        ║
  701.  ╚═══════════════════════════════════════════════════════════════════════════╝
  702.  
  703.  ╔═══════════════════════════════════════════════════════════════════════════╗
  704.  ║                          FUNCTION GETACTIVEPAGE                           ║
  705.  ╠═══════════════════════════════════════════════════════════════════════════╣
  706.  ║ IN.....: X: Numero de la page (de 0 a 3)                                  ║
  707.  ║ OUT....: /                                                                ║
  708.  ║ EXPLAIN: Renvois le Numéro de la Page Active.                             ║
  709.  ╚═══════════════════════════════════════════════════════════════════════════╝
  710.  
  711.  ╔═══════════════════════════════════════════════════════════════════════════╗
  712.  ║                           PROCEDURE COPYPAGE                              ║
  713.  ╠═══════════════════════════════════════════════════════════════════════════╣
  714.  ║ IN.....: Source, Target: Page Source vers Page Cible                      ║
  715.  ║ OUT....: /                                                                ║
  716.  ║ EXPLAIN: Copy une Page source sur une page cible.                         ║
  717.  ╚═══════════════════════════════════════════════════════════════════════════╝
  718.  
  719.  ╔═══════════════════════════════════════════════════════════════════════════╗
  720.  ║                         PROCEDURE SAVESCREEN                              ║
  721.  ╠═══════════════════════════════════════════════════════════════════════════╣
  722.  ║ IN.....: Page = Numero de la Page a Copier en Memoire (de 0 à 3)          ║
  723.  ║ OUT....: /                                                                ║
  724.  ║ EXPLAIN: Copy en mémoire une des 4 pages possibles.                       ║
  725.  ║ NB.....: On ne peut que faire une copie a la fois.                        ║
  726.  ╚═══════════════════════════════════════════════════════════════════════════╝
  727.  
  728.  ╔═══════════════════════════════════════════════════════════════════════════╗
  729.  ║                         PROCEDURE LOADSCREEN                              ║
  730.  ╠═══════════════════════════════════════════════════════════════════════════╣
  731.  ║ IN.....: Page = Numero de la Page sur laquelle on doit copier le screen.  ║
  732.  ║ OUT....: /                                                                ║
  733.  ║ EXPLAIN: Copy dans une page le screen precedement garde en mémoire.       ║
  734.  ╚═══════════════════════════════════════════════════════════════════════════╝
  735.  
  736.  
  737.                            **********************
  738.                            *        //\\        *
  739.                            *      //    \\      *
  740.                            *    //        \\    *
  741.                            *  //     /\     \\  *
  742.                            *  \\     \/     //  *
  743.                            *    \\        //    *
  744.                            *      \\    //      *
  745.                            *        \\//        *
  746.                            **********************
  747.  
  748.  
  749.  ╔═══════════════════════════════════════════════════════════════════════════╗
  750.  ║                          --- UNIT ZUUL_TXT ---                            ║
  751.  ╠═══════════════════════════════════════════════════════════════════════════╣
  752.  ║ CREATEUR.: F.Cheveau.                                                     ║
  753.  ║ COMMENCE.: Le 06.11.93 et terminé le 16.11.93 (IUT Montpellier).          ║
  754.  ║ RELEASE..: Le 15.12.93 à l'IUT (Montpellier).                             ║
  755.  ║ CONTENU..: Gestion d'Ecran, Fenetres, Requesters, Traitement Strings.     ║
  756.  ║ CONTAINS.: 12 Procedures, 4 Fonctions.                                    ║
  757.  ║ EXTERN...: Need ZUUL_SWA Unit to run correctly.                           ║
  758.  ╚═══════════════════════════════════════════════════════════════════════════╝
  759.  
  760.  ╔═══════════════════════════════════════════════════════════════════════════╗
  761.  ║                          FUNCTION SPECIAL_KEY                             ║
  762.  ╠═══════════════════════════════════════════════════════════════════════════╣
  763.  ║ IN.....: NUM (BYTE) = Numéro de la touche Spéciale à tester.              ║
  764.  ║ OUT....: True/False (BOOLEAN) = Touche Enfoncée ou pas.                   ║
  765.  ║ EXPLAIN: Teste une des touches Spéciale du Clavier.                       ║
  766.  ║          Voir plus bas pour le numéro de la touche à tester.              ║
  767.  ║ EXEMPLE: If SPECIAL_KEY(1)=True Then Write('Shift Droit Préssé');         ║
  768.  ╚═══════════════════════════════════════════════════════════════════════════╝
  769.  
  770.  ╔═══════════════════════════════════════════════════════════════════════════╗
  771.  ║                         PROCEDURE CHAR_TO_HEXA                            ║
  772.  ╠═══════════════════════════════════════════════════════════════════════════╣
  773.  ║ IN.....: C (STRING) = String Hexa.                                        ║
  774.  ║ OUT....: (BYTE) = Valeur Hexa du String.                                  ║
  775.  ║ EXPLAIN: Convertit un String Hexa de 1 Char en Hexa sur un Byte.          ║
  776.  ║ EXEMPLE: Val1:=CHAR_TO_HEX('$F');                                         ║
  777.  ╚═══════════════════════════════════════════════════════════════════════════╝
  778.  
  779.  ╔═══════════════════════════════════════════════════════════════════════════╗
  780.  ║                        PROCEDURE WORD_TO_STRING                           ║
  781.  ╠═══════════════════════════════════════════════════════════════════════════╣
  782.  ║ IN.....: D (WORD) = Word à Convertir.                                     ║
  783.  ║ OUT....: STRING[4] = Valeur du String aprés conversion.                   ║
  784.  ║ EXPLAIN: Transforme un Word Decimal en String[4] Hexadecimal.             ║
  785.  ║ EXEMPLE: T1:=WORD_TO_STRING(Val1);                                        ║
  786.  ╚═══════════════════════════════════════════════════════════════════════════╝
  787.  
  788.  ╔═══════════════════════════════════════════════════════════════════════════╗
  789.  ║                        PROCEDURES DISP,DISPLN                             ║
  790.  ╠═══════════════════════════════════════════════════════════════════════════╣
  791.  ║ IN.....: STRING                                                           ║
  792.  ║ OUT....: /                                                                ║
  793.  ║ EXPLAIN: AFFICHE CHAQUE CARACTERE AVEC UN BEEP.                           ║
  794.  ║ EXEMPLE: Displn('Zuul as BouFFtou');                                      ║
  795.  ╚═══════════════════════════════════════════════════════════════════════════╝
  796.  
  797.  ╔═══════════════════════════════════════════════════════════════════════════╗
  798.  ║                       FUNCTION LOWER,UPPER,MIDDER                         ║
  799.  ╠═══════════════════════════════════════════════════════════════════════════╣
  800.  ║ IN.....: STRING                                                           ║
  801.  ║ OUT....: /                                                                ║
  802.  ║ EXPLAIN: PASSE DE MINUSCULE EN MAJUSCULE OU VICE VERCA.                   ║
  803.  ║ EXEMPLE: Writeln(Lower('FREderic'),Upper(FREderic),Midder(FREderic));     ║
  804.  ╚═══════════════════════════════════════════════════════════════════════════╝
  805.  
  806.  ╔═══════════════════════════════════════════════════════════════════════════╗
  807.  ║                             FUNCTION CRYPT                                ║
  808.  ╠═══════════════════════════════════════════════════════════════════════════╣
  809.  ║ IN.....: STR1(STRING), STR2(STRING), PH1(STRING)                          ║
  810.  ║ OUT....: CRYPT(STRING)                                                    ║
  811.  ║ EXPLAIN: CRYPTE/DECRYPTE UN STRING (STR1,STR2:ALPHABETS DE COMMUTATIONS). ║
  812.  ║ EXEMPLE: ALAPHABET:='ABCDEFGHIJKLMNOPQRSTUVWXYZ !';                       ║
  813.  ║          COD_CRYPT:='MQLSKDJF!HGWNXBCVAPZ OEIRUYT';                       ║
  814.  ║          PHRASE:='ALORS CA CRYPTE DUR NON !';                             ║
  815.  ║          CRYPT(ALPHABET,COD_CRYPT,PHRASE);                                ║
  816.  ╚═══════════════════════════════════════════════════════════════════════════╝
  817.  
  818.  ╔═══════════════════════════════════════════════════════════════════════════╗
  819.  ║                             PROCEDURE WAIT                                ║
  820.  ╠═══════════════════════════════════════════════════════════════════════════╣
  821.  ║ IN.....: /                                                                ║
  822.  ║ OUT....: /                                                                ║
  823.  ║ EXPLAIN: ATTENDS Q'UNE TOUCHE SOIT PRESSEE.                               ║
  824.  ║ EXEMPLE: Wait;                        Toujours no Comments !              ║
  825.  ╚═══════════════════════════════════════════════════════════════════════════╝
  826.  
  827.  ╔═══════════════════════════════════════════════════════════════════════════╗
  828.  ║                            FUNCTION GETCHAR                               ║
  829.  ╠═══════════════════════════════════════════════════════════════════════════╣
  830.  ║ IN.....: /                                                                ║
  831.  ║ OUT....: True/False (BOOLEAN) = Touche Clavier Frappée ou pas.            ║
  832.  ║          Ac,Sc (BYTE) = Code ASCII et Scan Code de la Touche Frappée.     ║
  833.  ║ EXPLAIN: Teste une touche du clavier.                                     ║
  834.  ║ EXEMPLE: If GETCHAR(Ac,Sc)=True Then Write(Chr(As));                      ║
  835.  ╚═══════════════════════════════════════════════════════════════════════════╝
  836.  
  837.  
  838.                            **********************
  839.                            *        //\\        *
  840.                            *      //    \\      *
  841.                            *    //        \\    *
  842.                            *  //     /\     \\  *
  843.                            *  \\     \/     //  *
  844.                            *    \\        //    *
  845.                            *      \\    //      *
  846.                            *        \\//        *
  847.                            **********************
  848.  
  849.  
  850.  ╔═══════════════════════════════════════════════════════════════════════════╗
  851.  ║                         --- UNIT ZUUL_TOOLS ---                           ║
  852.  ╠═══════════════════════════════════════════════════════════════════════════╣
  853.  ║ CREATEUR.: F.Cheveau.                                                     ║
  854.  ║ COMMENCE.: Le 06.11.93 et terminé le 16.11.93 (IUT Montpellier).          ║
  855.  ║ RELEASE..: Le 15.12.93 à l'IUT (Montpellier).                             ║
  856.  ║ CONTENU..: Gestion d'Ecran, Fenetres, Requesters, Traitement Strings.     ║
  857.  ║ CONTAINS.: 12 Procedures, 4 Fonctions.                                    ║
  858.  ║ EXTERN...: Need ZUUL_SWA Unit to run correctly.                           ║
  859.  ╚═══════════════════════════════════════════════════════════════════════════╝
  860.  
  861.  ╔═══════════════════════════════════════════════════════════════════════════╗
  862.  ║                             PROCEDURE BEEP                                ║
  863.  ╠═══════════════════════════════════════════════════════════════════════════╣
  864.  ║ IN.....: /                                                                ║
  865.  ║ OUT....: /                                                                ║
  866.  ║ EXPLAIN: PRODUIT UNE MODULATION DE SONS.                                  ║
  867.  ║ EXEMPLE: Beep;               He he !!! (No Comments)                      ║
  868.  ╚═══════════════════════════════════════════════════════════════════════════╝
  869.  
  870.  ╔═══════════════════════════════════════════════════════════════════════════╗
  871.  ║                       PROCEDURE CLS1,CLS2,CLS3                            ║
  872.  ╠═══════════════════════════════════════════════════════════════════════════╣
  873.  ║ IN.....: X1(POS X),Y1(POS Y1),Y2(POS Y2),LEN(LENGTH),T(DELAY) :INTEGER    ║
  874.  ║ OUT....: /                                                                ║
  875.  ║ EXPLAIN: EFFACE DE MANIERE DIFFERENTES L'ECRAN SUIVANT LES PARAMETRES     ║
  876.  ║ EXEMPLE: CLS3(1,2,24,40,20);                                              ║
  877.  ╚═══════════════════════════════════════════════════════════════════════════╝
  878.  
  879.  ╔═══════════════════════════════════════════════════════════════════════════╗
  880.  ║                            PROCEDURE BOX                                  ║
  881.  ╠═══════════════════════════════════════════════════════════════════════════╣
  882.  ║ IN.....: X1,Y1,X2,Y2 (INTEGER) = Positions du Box à l'écran.              ║
  883.  ║          B1, B2, B3: (BOOLEAN) = PREFS                                    ║
  884.  ║ OUT....: /                                                                ║
  885.  ║ EXPLAIN: AFFICHE UNE BOITE A L'ECRAN AUX COORDONEE PRECISEE.              ║
  886.  ║ PREFS..: B1=True => Affiche un Cadre autour de la Boite.                  ║
  887.  ║          B2=True => Affiche une Ombre Autour de la Boite.                 ║
  888.  ║          B3=True => Affiche une Trame dans la Boite.                      ║
  889.  ║ EXEMPLE: BOX(10,3,40,15,True,True,False);                                 ║
  890.  ╚═══════════════════════════════════════════════════════════════════════════╝
  891.  
  892.  
  893.                            **********************
  894.                            *        //\\        *
  895.                            *      //    \\      *
  896.                            *    //        \\    *
  897.                            *  //     /\     \\  *
  898.                            *  \\     \/     //  *
  899.                            *    \\        //    *
  900.                            *      \\    //      *
  901.                            *        \\//        *
  902.                            **********************
  903.  
  904.  
  905.  ╔═══════════════════════════════════════════════════════════════════════════╗
  906.  ║                          --- UNIT ZUUL_MEN ---                            ║
  907.  ╠═══════════════════════════════════════════════════════════════════════════╣
  908.  ║ CREATEUR.: F.Cheveau.                                                     ║
  909.  ║ COMMENCE.: Le 15.12.93 et terminé le 15.12.93 (IUT Montpellier).          ║
  910.  ║ RELEASE..: Le 16.04.94 à l'IUT (Montpellier).                             ║
  911.  ║ CONTENU..: Gestion des Menus.                                             ║
  912.  ║ CONTAINS.: 2 Procedures.                                                  ║
  913.  ║ EXTERN...: Need SWA,MSE,COL,TXT,TOO Units to run correctly.               ║
  914.  ╚═══════════════════════════════════════════════════════════════════════════╝
  915.  
  916.  ╔══════════════════════════════════════════════════════════════════════════╗
  917.  ║                         PROCEDURE MENU_BAR_DISP                          ║
  918.  ╠══════════════════════════════════════════════════════════════════════════╣
  919.  ║ IN.....: TbMen (Men_Dat) = Tableau 2D des Labels du Menu.                ║
  920.  ║ OUT....: /                                                               ║
  921.  ║ EXPLAIN: Affiche la Barre du Menu à la Position 6,1.                     ║
  922.  ║ EXEMPLE: MENU_BAR_DISP(TbMen);                                           ║
  923.  ╚══════════════════════════════════════════════════════════════════════════╝
  924.  
  925.  ╔═══════════════════════════════════════════════════════════════════════════╗
  926.  ║                          PROCEDURE GIVEMENU                               ║
  927.  ╠═══════════════════════════════════════════════════════════════════════════╣
  928.  ║ CONTAIN: 5 PROCEDURES.                                                    ║
  929.  ║ IN.....: FreeM (BOOLEAN) = Autorise ou pas le cycling des Menu.           ║
  930.  ║          FreeP (BOOLEAN) = Autorise ou pas le cycling des Points.         ║
  931.  ║          HelpL (BOOLEAN) = Autorise ou pas l'aide en ligne.               ║
  932.  ║ IN/OUT.: MS , IS (Integer) = Numero du Menu et du Point Menu Sélectioné.  ║
  933.  ║ EXPLAIN: AFFICHE ET GERRE UN MENU TYPE TURBOVISION MAIS EN MIEUX !!!      ║
  934.  ║          SI AUCUN POINT DU MENU N'A ETE SELECTIONNE (TOUCHE ESCAPE),      ║
  935.  ║          ALORS "MS" ET "IS" CONTIENNENT 0,0.                              ║
  936.  ║ OPTIONS: Dans la Définition des Labels, Un Asterisque "*" Indique une     ║
  937.  ║          Transition entre deux Point de Menu.                             ║
  938.  ║ EXEMPLE: Qtt_Men:=2;                       ;2 Menus, et On Affiche le 1er ║
  939.  ║          MS:=1; IS:=2;                     ;Aff 1er Menu et 2eme Point    ║
  940.  ║          TbMen[1,1]:='Main';               ;Entete Barre du Menu 1        ║
  941.  ║          TbMen[1,2]:='Element 1';          ;Element du Menu 1             ║
  942.  ║          TbMen[2,1]:='Prefs';              ;Entete Barre du Menu 2        ║
  943.  ║          TbMen[2,2]:='Preference 1';       ;Elements du Menu 2            ║                                      ║
  944.  ║          TbMen[2,3]:='*';                  ;Point non Sélectionnable      ║
  945.  ║          TbMen[2,4]:='Preference 2';       ;Menu d'aide                   ║
  946.  ║          TbHlp[1,2]:='Test du Menu d''aide';                              ║
  947.  ║          GIVEMENU(True,False,True,MS,IS);    ;GO !                        ║
  948.  ╚═══════════════════════════════════════════════════════════════════════════╝
  949.  
  950.  
  951.                            **********************
  952.                            *        //\\        *
  953.                            *      //    \\      *
  954.                            *    //        \\    *
  955.                            *  //     /\     \\  *
  956.                            *  \\     \/     //  *
  957.                            *    \\        //    *
  958.                            *      \\    //      *
  959.                            *        \\//        *
  960.                            **********************
  961.  
  962.  
  963.  ╔═══════════════════════════════════════════════════════════════════════════╗
  964.  ║                          --- UNIT ZUUL_GAD ---                            ║
  965.  ╠═══════════════════════════════════════════════════════════════════════════╣
  966.  ║ CREATEUR.: F.Cheveau.                                                     ║
  967.  ║ COMMENCE.: Le 15.12.93 et terminé le 15.12.93 (IUT Montpellier).          ║
  968.  ║ RELEASE..: Le 19.04.94 à l'IUT (Montpellier).                             ║
  969.  ║ CONTENU..: Gadgets.                                                       ║
  970.  ║ CONTAINS.: X Procedures.                                                  ║
  971.  ║ EXTERN...: Need SWA,TOO,ASM,GFX,COL,TXT Units to run correctly.           ║
  972.  ╚═══════════════════════════════════════════════════════════════════════════╝
  973.  
  974.  ╔═══════════════════════════════════════════════════════════════════════════╗
  975.  ║                            PROCEDURE BUTTON                               ║
  976.  ╠═══════════════════════════════════════════════════════════════════════════╣
  977.  ║ IN.....: X,Y (INTEGER):Position du Bouton.                                ║
  978.  ║          Cp (WORD):Couleur de Pen du Gadget.                              ║
  979.  ║          Cu (WORD):Couleur de Fond du Gadget.                             ║
  980.  ║          Cg (WORD):Couleur de Fond de l'écran.                            ║
  981.  ║          GagBut (BUT):Reccord pour Stockage des données du Boutton.       ║
  982.  ║          Name (STRING):Nom du Bouton.                                     ║
  983.  ║ OUT....: /                                                                ║
  984.  ║ EXPLAIN: Affiche un bouton Texte à l'écran aux coordonnées precisées.     ║
  985.  ║ EXEMPLE: BUTTON(3,10,146,17,17,But1,'Open File');                         ║
  986.  ╚═══════════════════════════════════════════════════════════════════════════╝
  987.  
  988.  ╔═══════════════════════════════════════════════════════════════════════════╗
  989.  ║                             FUNCTION GADMSG                               ║
  990.  ╠═══════════════════════════════════════════════════════════════════════════╣
  991.  ║ IN.....: GadBut (BUT) = Pointeur sur Structure Bouton.                    ║
  992.  ║          B (WORD) = Code Bouton + Zone d'activation.                      ║
  993.  ║ OUT....: True/False (Boolean) = Gadget Cliqué ou non.                     ║
  994.  ║ EXPLAIN: Teste si le Gadget représenté par GadBut est cliqué ou pas.      ║
  995.  ║          Dans le cas ou il l'est, la Fonction GADMSG prend la valeur TRUE.║
  996.  ║ EXEMPLE: If GADMSG(Gad01,1)=True Then .....                               ║
  997.  ╚═══════════════════════════════════════════════════════════════════════════╝
  998.  
  999.  
  1000.                            **********************
  1001.                            *        //\\        *
  1002.                            *      //    \\      *
  1003.                            *    //        \\    *
  1004.                            *  //     /\     \\  *
  1005.                            *  \\     \/     //  *
  1006.                            *    \\        //    *
  1007.                            *      \\    //      *
  1008.                            *        \\//        *
  1009.                            **********************
  1010.  
  1011.  
  1012.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1013.  ║                          --- UNIT ZUUL_DIR ---                            ║
  1014.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1015.  ║ CREATEUR.: F.Cheveau.                                                     ║
  1016.  ║ COMMENCE.: Le 15.12.93 et terminé le 18.05.94 (IUT Montpellier).          ║
  1017.  ║ RELEASE..: Le 18.05.94. à l'IUT (Montpellier).                            ║
  1018.  ║ CONTENU..: Requesters de Directory.                                       ║
  1019.  ║ CONTAIN..: X Procedures.                                                  ║
  1020.  ║ EXTERN...: Need WIN,GAD,SWA,TOO,MSE,TXT,COL,REQ Units to run correctly.   ║
  1021.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1022.  
  1023.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1024.  ║                          FUNCTION TEST_DEVICES                            ║
  1025.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1026.  ║ IN.....: Dev (BYTE): Numero du Device a Tester.                           ║
  1027.  ║ OUT....: True/False (BOOLEAN): True si le Device Existe.                  ║
  1028.  ║ EXPLAIN: Teste l'existence d'un directory Précisé par son numéro d'ordre. ║
  1029.  ║ EXEMPLE: If GET_DEVICES(3)=True Then Writeln('"C:" Existe');              ║
  1030.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1031.  
  1032.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1033.  ║                           PROCEDURE GIVEDIR                               ║
  1034.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1035.  ║ CONTAIN: 6 PROCEDURES, 1 FONCTION.                                        ║
  1036.  ║ IN.....: X(POS X), Y(POS Y) DU REQUESTER. : INTEGER                       ║
  1037.  ║ OUT....: SI (LONGINT) = TAILLE DU FICHIER SELECTIONE (EN OCTETS).         ║
  1038.  ║          DIRSEL(DIRECTORY SELECTIONE), FILSEL(FICHIER SELECTIONE): STRING ║
  1039.  ║ EXPLAIN: AFFICHE A LA POSITION X,Y UN REQUESTER DE DIRECTORY.             ║
  1040.  ║          ATTENDS QU'UN FICHIER SOIT SELECTIONNE, ET RENVOI ALORS          ║
  1041.  ║          LE CHEMIN ET LE NOM DU FICHIER CHOISIT.                          ║
  1042.  ║ TOUCHES: "I"= Invoque le Fichier (COM ou EXE) Actuellement Sélectioné.    ║
  1043.  ║          "E"= Edite le Fichier Actuellement Sélectioné.                   ║
  1044.  ║          "N"= Permet de rentrer un nouveau nom de fichier.                ║
  1045.  ║ EXEMPLE: GiveDir(4,2,Si,Direc,File);                                      ║
  1046.  ║          Writeln('Selection: ',Direc+File,' Taille: ',Si);                ║
  1047.  ║          Positionne le directory en X=4 et Y=2,et affiche le choix        ║
  1048.  ║          de l'utilisateur. Si File='' alors aucun choix n'a été éffectué. ║
  1049.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1050.  
  1051.  
  1052.                            **********************
  1053.                            *        //\\        *
  1054.                            *      //    \\      *
  1055.                            *    //        \\    *
  1056.                            *  //     /\     \\  *
  1057.                            *  \\     \/     //  *
  1058.                            *    \\        //    *
  1059.                            *      \\    //      *
  1060.                            *        \\//        *
  1061.                            **********************
  1062.  
  1063.  
  1064.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1065.  ║                          --- UNIT ZUUL_REQ ---                            ║
  1066.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1067.  ║ CREATEUR.: F.Cheveau.                                                     ║
  1068.  ║ COMMENCE.: Le 15.12.93 et terminé le 15.12.93 (IUT Montpellier).          ║
  1069.  ║ RELEASE..: Le 18.04.94 à l'IUT (Montpellier).                             ║
  1070.  ║ CONTENU..: Requesters de tous types.                                      ║
  1071.  ║ CONTAINS.: X Procedures.                                                  ║
  1072.  ║ EXTERN...: Need ASM,GFX,SWA,COL,MSE,TXT,GAD,TOO,WIN Units to run correctly║
  1073.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1074.  
  1075.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1076.  ║                         PROCEDURE EZ_REQUEST                              ║
  1077.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1078.  ║ IN.....: TXT = (STRING) Texte a afficher dans le requester.               ║
  1079.  ║          GAD = (STRING) Texte des Gadgets a afficher.                     ║
  1080.  ║          ESC = (BOOLEAN) Affichage du symbole de fermeture de la fenetre. ║
  1081.  ║ IN/OUT.: NUM = (SHORTINT) Numéro du gadget Selectionné.                   ║
  1082.  ║ EXPLAIN: Affiche au centre de l'écran un requester du type EZ_REQUEST.    ║
  1083.  ║          et attends la selection de l'un des gadgets.                     ║
  1084.  ║          Renvois le numéro du gadget choisit.                             ║
  1085.  ║ EXEMPLE: TXT:='Ok pour le test|des Gadgets|';                             ║
  1086.  ║          GAD:='Ok|Cancel|Restore|';                                       ║
  1087.  ║          EZ_REQUEST(TXT,GAD,NUM,True);                                    ║
  1088.  ║ NB.....: Les fin de lignes et les differents gadgets sont séparés par     ║
  1089.  ║          la barre verticale '|'.                                          ║
  1090.  ║          On est limite a maximum 10 gadgets affichables a l'écran.        ║
  1091.  ║          Il faut passer en couleurs etendues avant l'appel de EZ_REQUEST, ║
  1092.  ║          Pour avoir des couleurs Correctes.                               ║
  1093.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1094.  
  1095.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1096.  ║                         PROCEDURE ST_REQUEST                              ║
  1097.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1098.  ║ IN.....: TXT = (STRING) Texte a afficher dans le requester.               ║
  1099.  ║          GAD = (STRING) Texte des Gadgets a afficher.                     ║
  1100.  ║          LEN = (WORD) Longeur maximale du texte a taper.                  ║
  1101.  ║          ESC = (BOOLEAN) Affichage du symbole de fermeture de la fenetre. ║
  1102.  ║ IN/OUT.: NUM = (SHORTINT) Numéro du gadget Selectionné.                   ║
  1103.  ║          REP = (STRING) Texte Tapé par l'utilisateur.                     ║
  1104.  ║ EXPLAIN: Affiche au centre de l'écran un requester du type EZ_REQUEST.    ║
  1105.  ║          attends que l'utilisateur rentre une chaine de caracteres,       ║
  1106.  ║          et attends la selection de l'un des gadgets.                     ║
  1107.  ║          Renvois le numéro du gadget choisit et la String rentrée.        ║
  1108.  ║ EXEMPLE: TXT:='Entrez une Phrase|S.V.P|';                                 ║
  1109.  ║          GAD:='Ok|Cancel|Restore|';                                       ║
  1110.  ║          ST_REQUEST(TXT,GAD,REP,NUM,False);                               ║
  1111.  ║ NB.....: Les fin de lignes et les differents gadgets sont séparés par     ║
  1112.  ║          la barre verticale '|'.                                          ║
  1113.  ║          On est limite a maximum 10 gadgets affichables a l'écran.        ║
  1114.  ║          Il faut passer en couleurs etendues avant l'appel de ST_REQUEST, ║
  1115.  ║          Pour avoir des couleurs Correctes.                               ║
  1116.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1117.  
  1118.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1119.  ║                         PROCEDURE VA_REQUEST                              ║
  1120.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1121.  ║ IN.....: TXT = (STRING) Texte a afficher dans le requester.               ║
  1122.  ║          GAD = (STRING) Texte des Gadgets a afficher.                     ║
  1123.  ║          BMIN = (LONGINT) Borne minimale valable pour la valeur.          ║
  1124.  ║          BMAX = (LONGINT) Borne maximale valable pour la valeur.          ║
  1125.  ║          ESC = (BOOLEAN) Affichage du symbole de fermeture de la fenetre. ║
  1126.  ║ IN/OUT.: NUM = (SHORTINT) Numéro du gadget Selectionné.                   ║
  1127.  ║          VAI = (LONGINT) Valeur Rentrée par l'utilisateur.                ║
  1128.  ║ EXPLAIN: Affiche au centre de l'écran un requester du type EZ_REQUEST.    ║
  1129.  ║          attends que l'utilisateur rentre une valeur,                     ║
  1130.  ║          et attends la selection de l'un des gadgets.                     ║
  1131.  ║          Renvois le numéro du gadget choisit et la valeur rentrée.        ║
  1132.  ║ EXEMPLE: TXT:='Entrez une Phrase|S.V.P|';                                 ║
  1133.  ║          GAD:='Ok|Cancel|Restore|';                                       ║
  1134.  ║          BMIN:=0; BMAX:=150;                                              ║
  1135.  ║          VA_REQUEST(TXT,GAD,BMIN,BMAX,NUM,False);                         ║
  1136.  ║ NB.....: Les fin de lignes et les differents gadgets sont séparés par     ║
  1137.  ║          la barre verticale '|'.                                          ║
  1138.  ║          On est limite a maximum 10 gadgets affichables a l'écran.        ║
  1139.  ║          Il faut passer en couleurs etendues avant l'appel de ST_REQUEST, ║
  1140.  ║          Pour avoir des couleurs Correctes.                               ║
  1141.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1142.  
  1143.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1144.  ║                         PROCEDURE CO_REQUEST                              ║
  1145.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1146.  ║ IN.....: X,Y = (WORD) Position ou Afficher le Requester.                  ║
  1147.  ║          CET = (WORD) Couleur Texte+Background en couleurs étendues.      ║
  1148.  ║          LEN = (WORD) Longeur maximale du texte a afficher.               ║
  1149.  ║ IN/OUT.: CIN = (STRING) String renvoyée par le requester.                 ║
  1150.  ║ EXPLAIN: Affiche un requester de string, et attends que l'utilisateur     ║
  1151.  ║          ai préssé ENTER pour rendre la main et renvoyé le string.        ║
  1152.  ║ EXEMPLE: Cin:='Changez cette phrase';                                     ║
  1153.  ║          CO_REQUEST(10,10,143,40,Cin);                                    ║
  1154.  ║ NB.....: Si Cin n'est pas une chaine vide avant l'appel du requester,     ║
  1155.  ║          Elle sera affichée dans celui-ci.                                ║
  1156.  ║          Dans le requester, les touches suivantes sont reconnues:         ║
  1157.  ║          Enter, Delete, Backspace, Début, Fin, Fleche Droite,fleche Gauche║
  1158.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1159.  
  1160.  
  1161. ------------------------ IV - L'INTERFACE GRAPHIQUE --------------------------
  1162.  
  1163. A) - Hiérarchisation des unité.
  1164.  
  1165. Les unités de MOS utilisent souvent d'autres unités de MOS, en fait, elles
  1166. sont toutes liées entre elles. Voici la façon dont elles sont hiérarchisées:
  1167.  
  1168.  
  1169.    EVOLUE           ZUUL_DIR        ZUUL_REQ
  1170.     /T\                     \      /     \  \
  1171.      |                        \  /         \  \_______
  1172.      |                        /  \           \         \
  1173.      |                      /      \           \         \
  1174.      |              ZUUL_GAD        ZUUL_WIN    ZUUL_XMS   \
  1175.      |                      \      /    |   \               |
  1176.      |                        \  /       \    \             |
  1177.      |                   ____ /| \___      \   ZUUL_SWA     |
  1178.      |                 /       |      \      \              |
  1179.      |               /         |        \      \            |
  1180.      |            ZUUL_TOO  ZUUL_TXT  ZUUL_MSE   \       ZUUL_ASM
  1181.      |              \           /         \       |      /
  1182.      |                \       /             \     |    /
  1183.      |                  \   /                 \   |  /
  1184.   PRIMAIRE             ZUUL_COL               ZUUL_BAS
  1185.  
  1186.  
  1187. B) - Structure générale d'un programme écrit pour MOS.
  1188.  
  1189. Le programme doit respecter la structure suivante.
  1190.  
  1191.  
  1192. Program XXXX;
  1193.  
  1194. Uses ZUUL_ASM,           {TPU nécessaires aux initialisations}
  1195.      ZUUL_MSE,
  1196.      ZUUL_GAD,
  1197.      ........;
  1198.  
  1199. {Faire ici les déclarations, initialisations et procédures}
  1200. {Puis, le programme principal doit être composé comme suit}
  1201.  
  1202. Begin
  1203. INIT_ASM;
  1204. INIT_SCREEN;
  1205. INIT_MOUSE;
  1206.  
  1207. {Appel de la procédure principale}
  1208.  
  1209. DONE_MOUSE;
  1210. DONE_SCREEN;
  1211. DONE_ASM;
  1212. End.
  1213.  
  1214.  
  1215. Le fait de structurer son programme de cette manière n'est pas une obligation
  1216. mais un moyen de se simplifier la vie, car les procédures d'initialisations
  1217. et de restaurations sont en fait une série de commandes visant à initialiser
  1218. ou restaurer une trentaine de paramètres et données qu'il serait fastidieux
  1219. de faire soit-même au début de chaque programme.
  1220.  
  1221. L'interface graphique est en grande partie basée sur les fenêtres.
  1222. Il est recommandé d'ouvrir une fenêtre (même invisible) avant d'inscrire
  1223. du texte à l'écran, car le texte inscrit à l'intèrieur d'une fenêtre
  1224. dispose de possibilitées de gestion bien plus grandes que le texte normal
  1225. (Clipping automatique, Effacement de la fenêtre, autorafraichissement...)
  1226.  
  1227. Je ne peux que conseiller de regarder les exemples fournis pour plus de
  1228. détails sur la façon de programmer une interface avec MOS.
  1229. Voici à titre d'exemple quelques déclarations de fenêtres, boutons, sliders,
  1230. file requesters, ez requesters etc...
  1231.  
  1232.  
  1233.  
  1234. DESCRIPTION DES FONCTIONS ET PROCEDURES PAR UNITES
  1235.  
  1236.  
  1237.                            **********************
  1238.                            *        //\\        *
  1239.                            *      //    \\      *
  1240.                            *    //        \\    *
  1241.                            *  //     /\     \\  *
  1242.                            *  \\     \/     //  *
  1243.                            *    \\        //    *
  1244.                            *      \\    //      *
  1245.                            *        \\//        *
  1246.                            **********************
  1247.  
  1248.  
  1249.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1250.  ║                         --- UNIT ZUUL_ASM ---                             ║
  1251.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1252.  ║ CREATEUR.: F.Cheveau & Fraggy.                                            ║
  1253.  ║ COMMENCE.: Le 13.04.94.                                                   ║
  1254.  ║ RELEASE..: Le 01.08.94 à l'IUT (Montpellier).                             ║
  1255.  ║ CONTENU..: Routines Assembleur Pur, Interruptions et Instructions 68000.  ║
  1256.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1257.  
  1258.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1259.  ║                         FUNCTION GET_DOS_VERSION                          ║
  1260.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1261.  ║ IN.....: /                                                                ║
  1262.  ║ OUT....: Version (STRING) = Version et Revision de la Version.            ║
  1263.  ║ EXPLAIN: Renvois le Numéro de version du DOS.                             ║
  1264.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1265.  
  1266.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1267.  ║                        FUNCTION GET_MOUSE_VERSION                         ║
  1268.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1269.  ║ IN.....: /                                                                ║
  1270.  ║ OUT....: Version (STRING) = Version du gestionnaire Souris.               ║
  1271.  ║ EXPLAIN: Renvois la version du gestionnaire souris installé.              ║
  1272.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1273.  
  1274.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1275.  ║                         FUNCTION GET_MOUSE_TYPE                           ║
  1276.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1277.  ║ IN.....: /                                                                ║
  1278.  ║ OUT....: Type (STRING) = Type de Souris installée.                        ║
  1279.  ║ EXPLAIN: Renvois le type de souris qui a été installée.                   ║
  1280.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1281.  
  1282.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1283.  ║                           PROCEDURE SET_TASK                              ║
  1284.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1285.  ║ IN.....: On / Off (BOOLEAN) = True ou False.                              ║
  1286.  ║ OUT....: /                                                                ║
  1287.  ║ EXPLAIN: Inhibe ou Restore les Taches de fond.                            ║
  1288.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1289.  
  1290.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1291.  ║                             PROCEDURE PARK                                ║
  1292.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1293.  ║ IN.....: /                                                                ║
  1294.  ║ OUT....: /                                                                ║
  1295.  ║ EXPLAIN: Parke les têtes de lectures pour l'unité C et D.                 ║
  1296.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1297.  
  1298.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1299.  ║                            FUNCTION GET_SPEED                             ║
  1300.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1301.  ║ IN.....: /                                                                ║
  1302.  ║ OUT....: (STRING) = Vitesse en Mhz du Processeur du Micro.                ║
  1303.  ║ EXPLAIN: Donne la Vitesse à laquelle tourne le processeur de l'ordinateur.║
  1304.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1305.  
  1306.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1307.  ║                            PROCEDURE SCREEN                               ║
  1308.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1309.  ║ IN.....: True/False (BOOLEAN) : True = Ecran Affiché, False = Pas d'Ecran.║
  1310.  ║ OUT....: /                                                                ║
  1311.  ║ EXPLAIN: Affiche ou planque l'écran vidéo.                                ║
  1312.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1313.  
  1314.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1315.  ║                         PROCEDURE ENDING_PROGRAM                          ║
  1316.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1317.  ║ IN.....: /                                                                ║
  1318.  ║ OUT....: /                                                                ║
  1319.  ║ EXPLAIN: Termine le Programme... Ferme tout ce qui à été ouvert, etc.     ║
  1320.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1321.  
  1322.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1323.  ║                         PROCEDURE PROTECTED_MODE                          ║
  1324.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1325.  ║ IN.....: /                                                                ║
  1326.  ║ OUT....: /                                                                ║
  1327.  ║ EXPLAIN: Passe en Mode Protégé (A Utiliser avec Prudence).                ║
  1328.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1329.  
  1330.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1331.  ║                    FONCTIONS GET_PROCESSOR, GET_COPRO                     ║
  1332.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1333.  ║ IN.....: /                                                                ║
  1334.  ║ OUT....: Numéro Processor/CoPro (BYTE).                                   ║
  1335.  ║ EXPLAIN: Renvois un Numéro correspondant au type de Processeur et Copro.  ║
  1336.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1337.  
  1338.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1339.  ║                  PROCEDURES LOCK_CRITICAL, UNLOCK_CRITICAL                ║
  1340.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1341.  ║ IN.....: /                                                                ║
  1342.  ║ OUT....: /                                                                ║
  1343.  ║ EXPLAIN: Detourne ou Reinstalle la Gestion des Erreurs Critiques.         ║
  1344.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1345.  
  1346.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1347.  ║                          PROCEDURE PRINT_SCREEN                           ║
  1348.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1349.  ║ IN.....: /                                                                ║
  1350.  ║ OUT....: /                                                                ║
  1351.  ║ EXPLAIN: Imprime le Contenu de l'Ecran.                                   ║
  1352.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1353.  
  1354.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1355.  ║                        PROCEDURE SETHORLOGETIMER                          ║
  1356.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1357.  ║ IN.....: Freq (REAL) :Nouvelle Frequence de l'Horloge en Hertz.           ║
  1358.  ║ OUT....: /                                                                ║
  1359.  ║ EXPLAIN: Redéfinit la Fréquence en Hertz de l'Horloge Interne.            ║
  1360.  ║ EXEMPLE: SetHorlogeTimer(1000);   Mesure du Temps au 1000eme de Secondes. ║
  1361.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1362.  
  1363.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1364.  ║                   PROCEDURES RESTORE_TIMER et SET_TIMER                   ║
  1365.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1366.  ║ IN.....: Freq (REAL) :Nouvelle Frequence de l'Horloge en Hertz.           ║
  1367.  ║ OUT....: /                                                                ║
  1368.  ║ EXPLAIN: Installe et Désinstalle le Timer Interne.                        ║
  1369.  ║ NB.....: Pour Revenir à la Fréquence Normale, Il faut Passer 0 en Param.  ║
  1370.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1371.  
  1372.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1373.  ║                      PROCEDURES WARM_BOOT, COLD_BOOT                      ║
  1374.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1375.  ║ IN.....: /                                                                ║
  1376.  ║ OUT....: /                                                                ║
  1377.  ║ EXPLAIN: Execute un Reboot Propre à Chaud ou à Froid.                     ║
  1378.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1379.  
  1380.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1381.  ║                              FUNCTION PEEK                                ║
  1382.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1383.  ║ IN.....: S,O (WORD) = Segment et Offset de l'Adresse.                     ║
  1384.  ║ OUT....: Valeur (BYTE) = Valeur de l'Octet a cet Endroit.                 ║
  1385.  ║ EXPLAIN: Renvois la Valeur de l'Octet se Trouvant à Cet Endroit.          ║
  1386.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1387.  
  1388.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1389.  ║                         PROCEDURE INIT_PRINTER                            ║
  1390.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1391.  ║ IN.....: /                                                                ║
  1392.  ║ OUT....: /                                                                ║
  1393.  ║ EXPLAIN: Réinitialise l'imprimante comme elle était au départ.            ║
  1394.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1395.  
  1396.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1397.  ║                      PROCEDURE PURGE_BUFFER_CLAVIER                       ║
  1398.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1399.  ║ IN.....: /                                                                ║
  1400.  ║ OUT....: /                                                                ║
  1401.  ║ EXPLAIN: Vide le Buffer du Clavier.                                       ║
  1402.  ║ EXEMPLE: Purge_Buffer_Calvier;                                            ║
  1403.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1404.  
  1405.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1406.  ║                    PROCEDURE LOCK_CTRLB,UNLOCK_CTRLB                      ║
  1407.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1408.  ║ IN.....: /                                                                ║
  1409.  ║ OUT....: /                                                                ║
  1410.  ║ EXPLAIN: BLOQUE OU DEBLOQUE LE CONTROL-BREAK.                             ║
  1411.  ║ EXEMPLE: Lock_CtrlB; Begin ...... End; UnLock_CtrlB;                      ║
  1412.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1413.  
  1414.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1415.  ║                            PROCEDURE VAIT_VBL                             ║
  1416.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1417.  ║ IN.....: /                                                                ║
  1418.  ║ OUT....: /                                                                ║
  1419.  ║ EXPLAIN: Attends la Synchronisation du Balayage Vertical.                 ║
  1420.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1421.  
  1422.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1423.  ║                              PROCEDURE EXG                                ║
  1424.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1425.  ║ IN.....: A,B (INTEGER): Les deux Variables à échanger entre elles.        ║
  1426.  ║ OUT....: /                                                                ║
  1427.  ║ EXPLAIN: Echange le contenu de deux variables "Integer".                  ║
  1428.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1429.  
  1430.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1431.  ║                      PROCEDURES INIT_ASM, DONE_ASM                        ║
  1432.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1433.  ║ IN.....: /                                                                ║
  1434.  ║ OUT....: /                                                                ║
  1435.  ║ EXPLAIN: Initialisation des Variables au Niveau du Hardware.              ║
  1436.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1437.  
  1438.  
  1439.  
  1440.                            **********************
  1441.                            *        //\\        *
  1442.                            *      //    \\      *
  1443.                            *    //        \\    *
  1444.                            *  //     /\     \\  *
  1445.                            *  \\     \/     //  *
  1446.                            *    \\        //    *
  1447.                            *      \\    //      *
  1448.                            *        \\//        *
  1449.                            **********************
  1450.  
  1451.  
  1452.  
  1453.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1454.  ║                          --- UNIT ZUUL_BASE ---                           ║
  1455.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1456.  ║ CREATEUR.: F.Cheveau.                                                     ║
  1457.  ║ COMMENCE.: Le 06.11.93 et terminé le 16.11.93 (IUT Montpellier).          ║
  1458.  ║ RELEASE..: Le 15.12.93 à l'IUT (Montpellier).                             ║
  1459.  ║ CONTENU..: Variables de Bases utilisées par d'autres procédures.          ║
  1460.  ║ CONTAINS.: X Procedures, X Fonctions.                                     ║
  1461.  ║ EXTERN...: /                                                              ║
  1462.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1463.  
  1464.  
  1465.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1466.  ║                             FUNCTION INITGFX                              ║
  1467.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1468.  ║ IN.....: /                                                                ║
  1469.  ║ OUT....: True/False (INTEGER)                                             ║
  1470.  ║ EXPLAIN: Initialise le mode Graphique.                                    ║
  1471.  ║          Renvois valeur du GraphResult si tout s'est bien passé ou pas.   ║
  1472.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1473.  
  1474.  
  1475.  
  1476.                            **********************
  1477.                            *        //\\        *
  1478.                            *      //    \\      *
  1479.                            *    //        \\    *
  1480.                            *  //     /\     \\  *
  1481.                            *  \\     \/     //  *
  1482.                            *    \\        //    *
  1483.                            *      \\    //      *
  1484.                            *        \\//        *
  1485.                            **********************
  1486.  
  1487.  
  1488.  
  1489.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1490.  ║                          --- UNIT ZUUL_COL ---                            ║
  1491.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1492.  ║ CREATEUR.: F.Cheveau.                                                     ║
  1493.  ║ COMMENCE.: Le 12.04.94.                                                   ║
  1494.  ║ RELEASE..: Le 12.04.94 à l'IUT (Montpellier).                             ║
  1495.  ║ CONTENU..: Gestion des Couleurs.                                          ║
  1496.  ║ CONTAINS.: X Procedures, X Fonctions.                                     ║
  1497.  ║ EXTERN...: No Specific TPU Needed.                                        ║
  1498.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1499.  
  1500.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1501.  ║                         PROCEDURE GETRGBPALETTE                           ║
  1502.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1503.  ║ IN.....: C (BYTE): Numero de la Couleur.                                  ║
  1504.  ║ OUT....: Red,Green,Blue (BYTE): Valeur des Couleurs (de 0 à 63).          ║
  1505.  ║ EXPLAIN: Recupere les valeurs RGB de la couleur Specifiée.                ║
  1506.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1507.  
  1508.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1509.  ║                         PROCEDURE GETRGBPALETTE                           ║
  1510.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1511.  ║ IN.....: C (BYTE): Numero de la Couleur.                                  ║
  1512.  ║ OUT....: Red,Green,Blue (BYTE): Valeur des Couleurs (de 0 à 63).          ║
  1513.  ║ EXPLAIN: Recupere les valeurs RGB de la couleur Specifiée.                ║
  1514.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1515.  
  1516.  
  1517.                            **********************
  1518.                            *        //\\        *
  1519.                            *      //    \\      *
  1520.                            *    //        \\    *
  1521.                            *  //     /\     \\  *
  1522.                            *  \\     \/     //  *
  1523.                            *    \\        //    *
  1524.                            *      \\    //      *
  1525.                            *        \\//        *
  1526.                            **********************
  1527.  
  1528.  
  1529.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1530.  ║                          --- UNIT ZUUL_MSE ---                            ║
  1531.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1532.  ║ CREATEUR.: F.Cheveau.                                                     ║
  1533.  ║ COMMENCE.: Le 15.02.94 et terminé le 25.02.94 (IUT Montpellier).          ║
  1534.  ║ RELEASE..: Le 15.04.94 à l'IUT (Montpellier).                             ║
  1535.  ║ CONTENU..: Gestion de la Souris.                                          ║
  1536.  ║ CONTAINS.: X Procedures.                                                  ║
  1537.  ║ EXTERN...: Need Classic Units to run Correctly.                           ║
  1538.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1539.  
  1540.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1541.  ║                          PROCEDURE SET_POINTER                            ║
  1542.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1543.  ║ IN.....: Style (BYTE): Numero du Style du Pointeur.                       ║
  1544.  ║ OUT....: /                                                                ║
  1545.  ║ EXPLAIN: Change le Pointeur Souris Selon le Parametre Specifié.           ║
  1546.  ║          - "P_Arrow" = 1 = Pointeur Normal en Forme de Flèche.            ║
  1547.  ║          - "P_Busy"  = 2 = Pointeur Occupé (Chronomètre).                 ║
  1548.  ║          - "P_Hand"  = 3 = Pointeur Main.                                 ║
  1549.  ║          - "P_Text"  = 4 = Pointeur Texte.                                ║
  1550.  ║          - "P_Target"= 5 = Pointeur Cible.                                ║
  1551.  ║          - "P_Move"  = 6 = Pointeur Déplacement.                          ║
  1552.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1553.  
  1554.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1555.  ║                     PROCEDURE INIT_MOUSE, DONE_MOUSE                      ║
  1556.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1557.  ║ IN.....: /                                                                ║
  1558.  ║ OUT....: /                                                                ║
  1559.  ║ EXPLAIN: Initialise et Réinstalle la Souris en Graphique.                 ║
  1560.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1561.  
  1562.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1563.  ║                            FONCTION INITMOUSE                             ║
  1564.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1565.  ║ IN.....: /                                                                ║
  1566.  ║ OUT....: /                                                                ║
  1567.  ║ EXPLAIN: Initialise la Souris (La positionne au Centre de l'ecran).       ║
  1568.  ║ EXEMPLE: INITMOUSE;                                                       ║
  1569.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1570.  
  1571.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1572.  ║                           FONCTION BOXMOUSEG                              ║
  1573.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1574.  ║ IN.....: X1,Y1,X2,Y2 = Box de Test de la position souris à l'interieur.   ║
  1575.  ║          B = Code du bouton a tester + de la zone.                        ║
  1576.  ║          0 = Test Zone + Boutons non Actives.                             ║
  1577.  ║          1 = Test Zone + Left Bouton.                                     ║
  1578.  ║          2 = Test Zone + Middle Button.                                   ║
  1579.  ║          3 = Test Zone + Right Bouton.                                    ║
  1580.  ║         10 = Test Zone sans se preocuper des Boutons.                     ║
  1581.  ║ OUT....: True / False (Boolean).                                          ║
  1582.  ║ EXPLAIN: Teste si la souris se trouve dans le box specifie (Mode Gfx).    ║
  1583.  ║ EXEMPLE: If BOXMOUSE(10,15,5,6,3)=True Then Writeln('OK');                ║
  1584.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1585.  
  1586.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1587.  ║                         PROCEDURE MOUSE_BLANKER                           ║
  1588.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1589.  ║ IN.....: /                                                                ║
  1590.  ║ OUT....: /                                                                ║
  1591.  ║ EXPLAIN: Gère le Mouse Blanker.                                           ║
  1592.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1593.  
  1594.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1595.  ║                      PROCEDURES SHOWMOUSE, HIDEMOUSE                      ║
  1596.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1597.  ║ IN.....: /                                                                ║
  1598.  ║ OUT....: /                                                                ║
  1599.  ║ EXPLAIN: Planque ou Deplanque la Souris                                   ║
  1600.  ║ EXEMPLE: Et puis quoi encore !!!                                          ║
  1601.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1602.  
  1603.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1604.  ║                    PROCEDURES GETMOUSET, GETMOUSEG                        ║
  1605.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1606.  ║ IN.....: X,Y: Coordonées de la Souris (Caracteres ou Pixels).             ║
  1607.  ║          G,M,D: Etats des Boutons Souris (Gauche, Milieu, Droite) = Bool. ║
  1608.  ║ OUT....: /                                                                ║
  1609.  ║ EXPLAIN: Renvois la position et l'etat des boutons de la souris.          ║
  1610.  ║ EXEMPLE: GetMouseT(X,Y,LM,RM); Writeln(X,Y,LM,RM);                        ║
  1611.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1612.  
  1613.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1614.  ║                    PROCEDURES PUTMOUSET, PUTMOUSEG                        ║
  1615.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1616.  ║ IN.....: X,Y: Coordonées de la Souris (Caracteres ou Pixels)              ║
  1617.  ║ OUT....: /                                                                ║
  1618.  ║ EXPLAIN: Positionne la souris aux coordonées précisées (Textes ou GFX).   ║
  1619.  ║ EXEMPLE: PutMouseT(X,Y);                                                  ║
  1620.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1621.  
  1622.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1623.  ║                    PROCEDURES LIMITEMT, LIMITEMG                          ║
  1624.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1625.  ║ IN.....: X1,Y1,X2,Y2: Coordonées du Box Limite.                           ║
  1626.  ║ OUT....: /                                                                ║
  1627.  ║ EXPLAIN: Limite les déplacement de la souris dans un box.                 ║
  1628.  ║ EXEMPLE: LimiteMouseT(16,50,5,10);                                        ║
  1629.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1630.  
  1631.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1632.  ║                          PROCEDURE SPEEDMOUSE                             ║
  1633.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1634.  ║ IN.....: X: Mickeys; Y: Pixels                                            ║
  1635.  ║ OUT....: /                                                                ║
  1636.  ║ EXPLAIN: Definit le raport entre Mickeys et Pixels.                       ║
  1637.  ║ EXEMPLE: SpeedMouse(5,10);                                                ║
  1638.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1639.  
  1640.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1641.  ║                   PROCEDURES INIT_CURSOR & LOCATE                         ║
  1642.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1643.  ║ IN.....: X,Y (INTEGER) = Position X,Y du Curseur Graphique.               ║
  1644.  ║          Style (INTEGER) = Style du Curseur Graphique.                    ║
  1645.  ║          Blink (INTEGER) = Vitesse Clignotement en 100eme de Secondes.    ║
  1646.  ║          Loc (LOCG) = Pointeur sur Structure Curseur.                     ║
  1647.  ║ OUT....: /                                                                ║
  1648.  ║ EXPLAIN: Positionne le Curseur Graphique en X,Y, Initialise le Style      ║
  1649.  ║          du Curseur (1=Plain, 2=Underline, 3=Vertical), et le Blink.      ║
  1650.  ║ EXEMPLE: INIT_CURSOR(1,20,Loc); LOCATE(200,100,Loc);                      ║
  1651.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1652.  
  1653.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1654.  ║                            PROCEDURE CURSONG                              ║
  1655.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1656.  ║ IN.....: Loc (LOCG) = Pointeur sur Structure Curseur.                     ║
  1657.  ║ OUT....: /                                                                ║
  1658.  ║ EXPLAIN: Affiche le Curseur Graphique en X,Y.                             ║
  1659.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1660.  
  1661.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1662.  ║                           PROCEDURE CURSOFFG                              ║
  1663.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1664.  ║ IN.....: Loc (LOCG) = Pointeur sur Structure Curseur.                     ║
  1665.  ║ OUT....: /                                                                ║
  1666.  ║ EXPLAIN: Supprime le Curseur Graphique en X,Y.                            ║
  1667.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1668.  
  1669.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1670.  ║                          FUNCTION CLICK_MOUSE                             ║
  1671.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1672.  ║ IN.....: /                                                                ║
  1673.  ║ OUT....: True/False (BOOLEAN).                                            ║
  1674.  ║ EXPLAIN: Teste si l'un des boutons de la souris est cliqué.               ║
  1675.  ║ EXEMPLE: If CLICK_MOUSE=True Then ...                                     ║
  1676.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1677.  
  1678.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1679.  ║              PROCEDURES DEF_DOUBLE_CLICK, DEF_MOUSE_DELAY                 ║
  1680.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1681.  ║ IN.....: T (INTEGER): Valeur en Milisecondes pour un Double Click ou Delay║
  1682.  ║ OUT....: /                                                                ║
  1683.  ║ EXPLAIN: Redéfinit le delay pour un double click ou le Delay Click.       ║
  1684.  ║ EXEMPLE: DEF_DOUBLE_CLICK(100); DEF_MOUSE_DELAY(100);                     ║
  1685.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1686.  
  1687.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1688.  ║                          FUNCTION MOUSE_DELAY                             ║
  1689.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1690.  ║ IN.....: /                                                                ║
  1691.  ║ OUT....: True/False (BOOLEAN): True = Mouse Delay Passé.                  ║
  1692.  ║ EXPLAIN: Permet de Savoir si le Delay Mouse Clické est passé.             ║
  1693.  ║ EXEMPLE: If MOUSE_DELAY=True Then ...                                     ║
  1694.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1695.  
  1696.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1697.  ║                          FUNCTION CLICK_MOUSE                             ║
  1698.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1699.  ║ IN.....: /                                                                ║
  1700.  ║ OUT....: True/False (BOOLEAN): True = Double Click Réussit.               ║
  1701.  ║ EXPLAIN: Permet de Savoir si on a Double Clické sur un Item.              ║
  1702.  ║ EXEMPLE: If CLICK_MOUSE=True Then ...                                     ║
  1703.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1704.  
  1705.  
  1706.                            **********************
  1707.                            *        //\\        *
  1708.                            *      //    \\      *
  1709.                            *    //        \\    *
  1710.                            *  //     /\     \\  *
  1711.                            *  \\     \/     //  *
  1712.                            *    \\        //    *
  1713.                            *      \\    //      *
  1714.                            *        \\//        *
  1715.                            **********************
  1716.  
  1717.  
  1718.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1719.  ║                         --- UNIT ZUUL_SWAP ---                            ║
  1720.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1721.  ║ CREATEUR.: F.Cheveau & Fraggy.                                            ║
  1722.  ║ COMMENCE.: Le 26.11.93 et terminé le 26.11.93 (Piaule à Vincent).         ║
  1723.  ║ RELEASE..: Le 15.12.93 à l'IUT (Montpellier).                             ║
  1724.  ║ CONTENU..: Gestion Screen, Routines Asm, Swap Pages...                    ║
  1725.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1726.  
  1727.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1728.  ║                          FUNCTION GETACTIVEPAGE                           ║
  1729.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1730.  ║ IN.....: X: Numero de la page (de 0 a 3)                                  ║
  1731.  ║ OUT....: /                                                                ║
  1732.  ║ EXPLAIN: Renvois le Numéro de la Page Active.                             ║
  1733.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1734.  
  1735.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1736.  ║                   PROCEDURES TSWAP.SAVE, TSWAP.LOAD                       ║
  1737.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1738.  ║ IN.....: Page = Numero de la Page sur laquelle on doit copier le screen.  ║
  1739.  ║ OUT....: /                                                                ║
  1740.  ║ EXPLAIN: Copy dans une page le screen precedement garde en mémoire.       ║
  1741.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1742.  
  1743.  
  1744.                            **********************
  1745.                            *        //\\        *
  1746.                            *      //    \\      *
  1747.                            *    //        \\    *
  1748.                            *  //     /\     \\  *
  1749.                            *  \\     \/     //  *
  1750.                            *    \\        //    *
  1751.                            *      \\    //      *
  1752.                            *        \\//        *
  1753.                            **********************
  1754.  
  1755.  
  1756.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1757.  ║                          --- UNIT ZUUL_TXT ---                            ║
  1758.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1759.  ║ CREATEUR.: F.Cheveau.                                                     ║
  1760.  ║ COMMENCE.: Le 06.11.93 et terminé le 16.11.93 (IUT Montpellier).          ║
  1761.  ║ RELEASE..: Le 15.12.93 à l'IUT (Montpellier).                             ║
  1762.  ║ CONTENU..: Gestion d'Ecran, Fenetres, Requesters, Traitement Strings.     ║
  1763.  ║ CONTAINS.: 12 Procedures, 4 Fonctions.                                    ║
  1764.  ║ EXTERN...: Need ZUUL_SWA Unit to run correctly.                           ║
  1765.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1766.  
  1767.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1768.  ║                          FUNCTION SPECIAL_KEY                             ║
  1769.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1770.  ║ IN.....: NUM (BYTE) = Numéro de la touche Spéciale à tester.              ║
  1771.  ║ OUT....: True/False (BOOLEAN) = Touche Enfoncée ou pas.                   ║
  1772.  ║ EXPLAIN: Teste une des touches Spéciale du Clavier.                       ║
  1773.  ║          Voir plus bas pour le numéro de la touche à tester.              ║
  1774.  ║ EXEMPLE: If SPECIAL_KEY(1)=True Then Write('Shift Droit Préssé');         ║
  1775.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1776.  
  1777.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1778.  ║                         PROCEDURE CHAR_TO_HEXA                            ║
  1779.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1780.  ║ IN.....: C (STRING) = String Hexa.                                        ║
  1781.  ║ OUT....: (BYTE) = Valeur Hexa du String.                                  ║
  1782.  ║ EXPLAIN: Convertit un String Hexa de 1 Char en Hexa sur un Byte.          ║
  1783.  ║ EXEMPLE: Val1:=CHAR_TO_HEX('$F');                                         ║
  1784.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1785.  
  1786.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1787.  ║                        PROCEDURE WORD_TO_STRING                           ║
  1788.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1789.  ║ IN.....: D (WORD) = Word à Convertir.                                     ║
  1790.  ║ OUT....: STRING[4] = Valeur du String aprés conversion.                   ║
  1791.  ║ EXPLAIN: Transforme un Word Decimal en String[4] Hexadecimal.             ║
  1792.  ║ EXEMPLE: T1:=WORD_TO_STRING(Val1);                                        ║
  1793.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1794.  
  1795.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1796.  ║                              PROCEDURE DISPG                              ║
  1797.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1798.  ║        Affiche un texte aux coordonées X,Y et avec la Couleur de fond C   ║
  1799.  ║        En effaçant ce qu'il y avait avant.                                ║
  1800.  ║ IN: / OUT: /  MODIFIABLE SELON BESOINS.                                   ║
  1801.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1802.  
  1803.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1804.  ║                       FUNCTION LOWER,UPPER,MIDDER                         ║
  1805.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1806.  ║ IN.....: STRING                                                           ║
  1807.  ║ OUT....: /                                                                ║
  1808.  ║ EXPLAIN: PASSE DE MINUSCULE EN MAJUSCULE OU VICE VERCA.                   ║
  1809.  ║ EXEMPLE: Writeln(Lower('FREderic'),Upper(FREderic),Midder(FREderic));     ║
  1810.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1811.  
  1812.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1813.  ║                             FUNCTION CRYPT                                ║
  1814.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1815.  ║ IN.....: STR1(STRING), STR2(STRING), PH1(STRING)                          ║
  1816.  ║ OUT....: CRYPT(STRING)                                                    ║
  1817.  ║ EXPLAIN: CRYPTE/DECRYPTE UN STRING (STR1,STR2:ALPHABETS DE COMMUTATIONS). ║
  1818.  ║ EXEMPLE: ALAPHABET:='ABCDEFGHIJKLMNOPQRSTUVWXYZ !';                       ║
  1819.  ║          COD_CRYPT:='MQLSKDJF!HGWNXBCVAPZ OEIRUYT';                       ║
  1820.  ║          PHRASE:='ALORS CA CRYPTE DUR NON !';                             ║
  1821.  ║          CRYPT(ALPHABET,COD_CRYPT,PHRASE);                                ║
  1822.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1823.  
  1824.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1825.  ║                             PROCEDURE WAIT                                ║
  1826.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1827.  ║ IN.....: /                                                                ║
  1828.  ║ OUT....: /                                                                ║
  1829.  ║ EXPLAIN: ATTENDS Q'UNE TOUCHE SOIT PRESSEE.                               ║
  1830.  ║ EXEMPLE: Wait;                        Toujours no Comments !              ║
  1831.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1832.  
  1833.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1834.  ║                            FUNCTION GETCHAR                               ║
  1835.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1836.  ║ IN.....: /                                                                ║
  1837.  ║ OUT....: True/False (BOOLEAN) = Touche Clavier Frappée ou pas.            ║
  1838.  ║          Ac,Sc (BYTE) = Code ASCII et Scan Code de la Touche Frappée.     ║
  1839.  ║ EXPLAIN: Teste une touche du clavier.                                     ║
  1840.  ║ EXEMPLE: If GETCHAR(Ac,Sc)=True Then Write(Chr(As));                      ║
  1841.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1842.  
  1843.  
  1844.                            **********************
  1845.                            *        //\\        *
  1846.                            *      //    \\      *
  1847.                            *    //        \\    *
  1848.                            *  //     /\     \\  *
  1849.                            *  \\     \/     //  *
  1850.                            *    \\        //    *
  1851.                            *      \\    //      *
  1852.                            *        \\//        *
  1853.                            **********************
  1854.  
  1855.  
  1856.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1857.  ║                         --- UNIT ZUUL_TOOLS ---                           ║
  1858.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1859.  ║ CREATEUR.: F.Cheveau.                                                     ║
  1860.  ║ COMMENCE.: Le 06.11.93 et terminé le 16.11.93 (IUT Montpellier).          ║
  1861.  ║ RELEASE..: Le 15.12.93 à l'IUT (Montpellier).                             ║
  1862.  ║ CONTENU..: Gestion d'Ecran, Fenetres, Requesters, Traitement Strings.     ║
  1863.  ║ CONTAINS.: 12 Procedures, 4 Fonctions.                                    ║
  1864.  ║ EXTERN...: Need ZUUL_SWA Unit to run correctly.                           ║
  1865.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1866.  
  1867.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1868.  ║                             PROCEDURE BEEP                                ║
  1869.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1870.  ║ IN.....: /                                                                ║
  1871.  ║ OUT....: /                                                                ║
  1872.  ║ EXPLAIN: PRODUIT UNE MODULATION DE SONS.                                  ║
  1873.  ║ EXEMPLE: Beep;               He he !!! (No Comments)                      ║
  1874.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1875.  
  1876.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1877.  ║                              PROCEDURE BEVEL                              ║
  1878.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1879.  ║ IN.....: X1,Y1,X2,Y2 (INTEGER) = Position du Bevel à l'écran.             ║
  1880.  ║          STYLE,CO: (INTEGER) = Styles et Couleurs de Remplissage.         ║
  1881.  ║          CAVE: (BOOLEAN) = Cadre Inverse ou Pas.                          ║
  1882.  ║          FILL: (BOOLEAN) = Remplis le Box ou Pas.                         ║
  1883.  ║ OUT....: /                                                                ║
  1884.  ║ EXPLAIN: AFFICHE UNE BOITE EN RELIEF A L'ECRAN AUX COORDONEE PRECISEE.    ║
  1885.  ║ EXEMPLE: BEVEL(10,100,130,110,True);                                      ║
  1886.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1887.  
  1888.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1889.  ║                          PROCEDURE STRING_BOX                             ║
  1890.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1891.  ║ IN.....: X1,Y1,X2,Y2 (INTEGER) = Position de la Boite à l'écran.          ║
  1892.  ║          C1,C2 (INTEGER) = Couleurs de Dessin de la Boite.                ║
  1893.  ║          Style (BOOLEAN) = Style de Boite (True=Entourée, False=Refief).  ║
  1894.  ║ OUT....: /                                                                ║
  1895.  ║ EXPLAIN: Affiche une boite Style String-Box à l'écran.                    ║
  1896.  ║ EXEMPLE: STRING_BOX(10,100,130,110,0,7,True);                             ║
  1897.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1898.  
  1899.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1900.  ║                           FUNCTION LIGHT_BOX                              ║
  1901.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1902.  ║ IN.....: LB (LIGHTB) = Pointeur sur Structure Light-Box.                  ║
  1903.  ║          M (WORD) = Numéro du Bouton Souris à Activer.                    ║
  1904.  ║ OUT....: True/False (BOOLEAN) = Cadre Tracé et Relaché.                   ║
  1905.  ║ EXPLAIN: Affiche et Agrandit un cadre en Pointillés a l'écran.            ║
  1906.  ║          Le coordonées de la Boite tracée sont accéssibles en lecture     ║
  1907.  ║          Dans les Champs LightB.(X1,Y1,X2,Y2).                            ║
  1908.  ║ EXEMPLE: If Light_Box(LB,1)=True Then                                     ║
  1909.  ║             Write(LB.X1,' ',LB.Y1,' ',LB.X2,' ',LB.Y2);                   ║
  1910.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1911.  
  1912.  
  1913.                            **********************
  1914.                            *        //\\        *
  1915.                            *      //    \\      *
  1916.                            *    //        \\    *
  1917.                            *  //     /\     \\  *
  1918.                            *  \\     \/     //  *
  1919.                            *    \\        //    *
  1920.                            *      \\    //      *
  1921.                            *        \\//        *
  1922.                            **********************
  1923.  
  1924.  
  1925.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1926.  ║                         --- UNIT ZUUL_XMS ---                             ║
  1927.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1928.  ║ CREATEUR.: F.Cheveau & Greg Estabrooks.                                   ║
  1929.  ║ COMMENCE.: ?.                                                             ║
  1930.  ║ RELEASE..: Le 22.07.94 à HTS (Montescot).                                 ║
  1931.  ║ CONTENU..: Routines de Gestion de l'XMS et de la HMA.                     ║
  1932.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1933.  
  1934.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1935.  ║                           FUNCTION XMSDriver                              ║
  1936.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1937.  ║ IN.....: /                                                                ║
  1938.  ║ OUT....: True/False (BOOLEAN): True si XMS Driver Existe.                 ║
  1939.  ║ EXPLAIN: Teste l'existence d'un driver XMS. Si le driver est Installé,    ║
  1940.  ║          La Routine Charge l'XMSControl et le XMS API pour les autres Rout║
  1941.  ║ EXEMPLE: If XMSDriver Then Writeln('XMS Driver Exist');                   ║
  1942.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1943.  
  1944.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1945.  ║                          FUNCTION XMSControlAdr                           ║
  1946.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1947.  ║ IN.....: /                                                                ║
  1948.  ║ OUT....: (POINTER): Pointer XMSController.                                ║
  1949.  ║ EXPLAIN: Retourne un Pointeur sur le Controller XMS.                      ║
  1950.  ║ EXEMPLE: P:=XMSControlAdr;                                                ║
  1951.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1952.  
  1953.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1954.  ║                             FUNCTION XMSVer                               ║
  1955.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1956.  ║ IN.....: /                                                                ║
  1957.  ║ OUT....: Version (WORD): Un Word Contenant la Version.                    ║
  1958.  ║ EXPLAIN: Retourne la Version du driver XMS.                               ║
  1959.  ║ EXEMPLE: Writeln('XMSDriver Version: ','XMSver);                          ║
  1960.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1961.  
  1962.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1963.  ║                             FUNCTION XMSRev                               ║
  1964.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1965.  ║ IN.....: /                                                                ║
  1966.  ║ OUT....: Revision (WORD): Un Word Contenant le Numéro de Révision.        ║
  1967.  ║ EXPLAIN: Retourne le Numéro de Révision du driver XMS.                    ║
  1968.  ║ EXEMPLE: Writeln('XMSDriver Revision: ','XMSver);                         ║
  1969.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1970.  
  1971.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1972.  ║                          FUNCTION XMSGetFreeMem                           ║
  1973.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1974.  ║ IN.....: /                                                                ║
  1975.  ║ OUT....: Free Memory (WORD): Mémoire Libre en Kb.                         ║
  1976.  ║ EXPLAIN: Retourne la Quantitée de Mémoire Libre en Kb.                    ║
  1977.  ║ EXEMPLE: Writeln('XMS Libre: ','XMSGetFreeMem);                           ║
  1978.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1979.  
  1980.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1981.  ║                         FUNCTION XMSGetLargeBlock                         ║
  1982.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1983.  ║ IN.....: /                                                                ║
  1984.  ║ OUT....: Largest Free Block (WORD): Block Mémoire le Plus Gros.           ║
  1985.  ║ EXPLAIN: Retourne la Taille du Plus gros bloc Mémoire Libre en Kb.        ║
  1986.  ║ EXEMPLE: Writeln('XMS Largest Block: ','XMSGetLargeBlock);                ║
  1987.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1988.  
  1989.  ╔═══════════════════════════════════════════════════════════════════════════╗
  1990.  ║                            FUNCTION XMSGetMem                             ║
  1991.  ╠═══════════════════════════════════════════════════════════════════════════╣
  1992.  ║ IN.....: Block (WORD) =                                                   ║
  1993.  ║ OUT....: Handle (POINTER) = Handle de la Mémoire Allouée.                 ║
  1994.  ║ EXPLAIN: Retourne Un Handle sur la Place Mémoire Allouée.                 ║
  1995.  ║ NB.....: Si il y a une Erreur, le Handle est Invalide.                    ║
  1996.  ║ EXEMPLE:                                                                  ║
  1997.  ╚═══════════════════════════════════════════════════════════════════════════╝
  1998.  
  1999.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2000.  ║                           PROCEDURE XMSGetMem                             ║
  2001.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2002.  ║ IN.....: Handle (WORD) = Pointeur sur le Bloc à Sucrer.                   ║
  2003.  ║ OUT....: /                                                                ║
  2004.  ║ EXPLAIN: Libère la Place Mémoire Allouée par XMSGetMem.                   ║
  2005.  ║ EXEMPLE:                                                                  ║
  2006.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2007.  
  2008.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2009.  ║                           PROCEDURE XMSGetMem                             ║
  2010.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2011.  ║ IN.....: Handle (WORD) = Pointeur sur le Bloc à Sucrer.                   ║
  2012.  ║ OUT....: /                                                                ║
  2013.  ║ EXPLAIN: Permet de Déplacer dans l'XMS des Blocs de Mémoire alloués       ║
  2014.  ║          par la Fonction XMSGetMem.                                       ║
  2015.  ║ NB.....: La longueur du Bloc doit être Paire.                             ║
  2016.  ║ EXEMPLE:                                                                  ║
  2017.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2018.  
  2019.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2020.  ║                          PROCEDURE XMSLockBlock                           ║
  2021.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2022.  ║ IN.....: Handle (WORD) = Pointeur sur le Bloc à Figer.                    ║
  2023.  ║ OUT....: /                                                                ║
  2024.  ║ EXPLAIN: Permet de Bloquer un Bloc de Mémoire alloués dans l'XMS.         ║
  2025.  ║          On ne peut plus ensuite les déplacer.                            ║
  2026.  ║ EXEMPLE:                                                                  ║
  2027.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2028.  
  2029.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2030.  ║                         PROCEDURE XMSUnLockBlock                          ║
  2031.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2032.  ║ IN.....: Handle (WORD) = Pointeur sur le Bloc à Débloquer.                ║
  2033.  ║ OUT....: /                                                                ║
  2034.  ║ EXPLAIN: Permet de Débloquer un Bloc de Mémoire alloués dans l'XMS.       ║
  2035.  ║          Cette fonction doit être utilisée aprés XMSLockBlock.            ║
  2036.  ║ EXEMPLE:                                                                  ║
  2037.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2038.  
  2039.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2040.  ║                         PROCEDURE XMSReallocate                           ║
  2041.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2042.  ║ IN.....: Handle (WORD) = Pointeur sur le Bloc de Mémoire.                 ║
  2043.  ║          NewSize (WORD) = Nouvelle Taille du Bloc.                        ║
  2044.  ║ OUT....: /                                                                ║
  2045.  ║ EXPLAIN: Réalloue un Nouveau Bloc de Mémoire XMS avec une Nouvelle Taille.║
  2046.  ║ EXEMPLE:                                                                  ║
  2047.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2048.  
  2049.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2050.  ║                           PROCEDURE HMAExists                             ║
  2051.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2052.  ║ IN.....: /                                                                ║
  2053.  ║ OUT....: True/False (BOOLEAN) = True Si elle Existe.                      ║
  2054.  ║ EXPLAIN: Teste si la Mémoire HMA Existe ou pas.                           ║
  2055.  ║ EXEMPLE: If HMAExists Then Writeln('Mémoire HMA installée.');             ║
  2056.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2057.  
  2058.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2059.  ║                           PROCEDURE HMARequest                            ║
  2060.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2061.  ║ IN.....: RequestType (WORD) =                                             ║
  2062.  ║ OUT....: /                                                                ║
  2063.  ║ EXPLAIN: Tente de Réserver 64 Ko de HMA.                                  ║
  2064.  ║ NB.....: Le RequestType doit Etre FFFF = Pour une Application.            ║
  2065.  ║          ou bien la Taille Mémoire Demandée s'il s'agit d'un TSR.         ║
  2066.  ║ EXEMPLE:                                                                  ║
  2067.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2068.  
  2069.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2070.  ║                           PROCEDURE HMARelease                            ║
  2071.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2072.  ║ IN.....: /                                                                ║
  2073.  ║ OUT....: /                                                                ║
  2074.  ║ EXPLAIN: Libère la Mémoire HMA Allouée Précédement.                       ║
  2075.  ║ NB.....: Le Code/Datas Stockés dans cette Zones Devienent Inaccéssibles.  ║
  2076.  ║ EXEMPLE:                                                                  ║
  2077.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2078.  
  2079.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2080.  ║                         PROCEDURE GlobalEnableA20                         ║
  2081.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2082.  ║ IN.....: /                                                                ║
  2083.  ║ OUT....: /                                                                ║
  2084.  ║ EXPLAIN: Permet Globalement le "A20 Line".                                ║
  2085.  ║ NB.....: Ne doit être Utilisé que par les Programmes Contrôlant la HMA.   ║
  2086.  ║ EXEMPLE:                                                                  ║
  2087.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2088.  
  2089.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2090.  ║                        PROCEDURE GlobalDisableA20                         ║
  2091.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2092.  ║ IN.....: /                                                                ║
  2093.  ║ OUT....: /                                                                ║
  2094.  ║ EXPLAIN: Empèche Globalement le "A20 Line".                               ║
  2095.  ║ NB.....: Cette Routine Peut Prendre Beaucoup de Temps / Certains Systemes.║
  2096.  ║ EXEMPLE:                                                                  ║
  2097.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2098.  
  2099.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2100.  ║                         PROCEDURE LocalEnableA20                          ║
  2101.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2102.  ║ IN.....: /                                                                ║
  2103.  ║ OUT....: /                                                                ║
  2104.  ║ EXPLAIN: Permet Localement le "A20 Line".                                 ║
  2105.  ║ NB.....: Ne doit être Utilisé que par les Programmes Contrôlant la HMA.   ║
  2106.  ║ EXEMPLE:                                                                  ║
  2107.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2108.  
  2109.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2110.  ║                        PROCEDURE LocalDisableA20                          ║
  2111.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2112.  ║ IN.....: /                                                                ║
  2113.  ║ OUT....: /                                                                ║
  2114.  ║ EXPLAIN: Empèche Localement le "A20 Line".                                ║
  2115.  ║ NB.....: Cette Routine Peut Prendre Beaucoup de Temps / Certains Systemes.║
  2116.  ║ EXEMPLE:                                                                  ║
  2117.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2118.  
  2119.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2120.  ║                            FUNCTION QueryA20                              ║
  2121.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2122.  ║ IN.....: /                                                                ║
  2123.  ║ OUT....: True/False (BOOLEAN) = True si le A20 est Physiquement Désactivé.║
  2124.  ║ EXPLAIN: Teste si le A20 est Physiquement Désactivé.                      ║
  2125.  ║ EXEMPLE:                                                                  ║
  2126.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2127.  
  2128.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2129.  ║                            FUNCTION PtrToLong                             ║
  2130.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2131.  ║ IN.....: P (POINTER) = Pointeur à Passer en Long.                         ║
  2132.  ║ OUT....: Long (LONGINT) = Pointeur Transformé.                            ║
  2133.  ║ EXPLAIN: Transforme un Poiteur PC en Pointeur 32 Bits Long.               ║
  2134.  ║ EXEMPLE:                                                                  ║
  2135.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2136.  
  2137.  
  2138.                            **********************
  2139.                            *        //\\        *
  2140.                            *      //    \\      *
  2141.                            *    //        \\    *
  2142.                            *  //     /\     \\  *
  2143.                            *  \\     \/     //  *
  2144.                            *    \\        //    *
  2145.                            *      \\    //      *
  2146.                            *        \\//        *
  2147.                            **********************
  2148.  
  2149.  
  2150.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2151.  ║                          --- UNIT ZUUL_GAD ---                            ║
  2152.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2153.  ║ CREATEUR.: F.Cheveau.                                                     ║
  2154.  ║ COMMENCE.: Le 15.12.93 et terminé le 15.12.93 (IUT Montpellier).          ║
  2155.  ║ RELEASE..: Le 19.04.94 à l'IUT (Montpellier).                             ║
  2156.  ║ CONTENU..: Gadgets.                                                       ║
  2157.  ║ CONTAINS.: X Procedures.                                                  ║
  2158.  ║ EXTERN...: Need SWA,TOO,ASM,GFX,COL,TXT Units to run correctly.           ║
  2159.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2160.  
  2161.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2162.  ║                    PROCEDURES INIT_SCREEN, DONE_SCREEN                    ║
  2163.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2164.  ║ IN/OUT.: /                                                                ║
  2165.  ║ EXPLAIN: Initialise le Screen en Graphique ou Reinstalle le Screen Initial║
  2166.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2167.  
  2168.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2169.  ║                          PROCEDURE DEFINE_GADGETS                         ║
  2170.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2171.  ║ IN/OUT.: /                                                                ║
  2172.  ║ Dessine et Stocke en Mémoire les Gadgets Speciaux Dessinés en Graphique.  ║
  2173.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2174.  
  2175.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2176.  ║                         PROCEDURE KILL_GADGETS                            ║
  2177.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2178.  ║ IN/OUT.: /                                                                ║
  2179.  ║ Libere l'espace mémoire allouée pour les Gadgets Spéciaux.                ║
  2180.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2181.  
  2182.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2183.  ║                             PROCEDURE SLIDER                              ║
  2184.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2185.  ║ IN.....: X1,Y1,X2,Y2 (INTEGER): Coordonées du Cadre du Slider.            ║
  2186.  ║          Qtt (INTEGER):Nombre d'Items Maximums dans la liste.             ║
  2187.  ║          Aff (INTEGER):Nombre d'Items Affichés dans le Slider.            ║
  2188.  ║          Typ (INTEGER):Type de Slider a Afficher (Vertical ou Horizontal) ║
  2189.  ║          GDep (BOOLEAN):Affichage des Gadgets d'aides (Boutons).          ║
  2190.  ║          Sld (SLIDE):Reccord pour Stockage des données du Slider.         ║
  2191.  ║          Psl (INTEGER):Valeur de la Position du Gadget dans le Slider.    ║
  2192.  ║ OUT....: /                                                                ║
  2193.  ║ EXPLAIN: Affiche un Gadget Slider en Mode Graphique selon les Parametres. ║
  2194.  ║ OUT....: Position dans la Liste.                                          ║
  2195.  ║ EXEMPLE: SLIDER(10,50,130,70,500,50,0,True,Sld1,RetSld);                  ║
  2196.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2197.  
  2198.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2199.  ║                           PROCEDURE RADIO_BOX                             ║
  2200.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2201.  ║ IN.....: X,Y (INTEGER):Position du Radio-Box.                             ║
  2202.  ║          Style (WORD):Design du Radio-Box. 0=Invisible, 1=Amiga, 2=PC.    ║
  2203.  ║          Status (BOOLEAN):Etat du Radio-Box. True=Sélectioné.             ║
  2204.  ║          R (RAD):Pointeur sur Structure du Radio-Box.                     ║
  2205.  ║ EXPLAIN: Affiche un Radio-Box en Graphique selon les Parametres précisés. ║
  2206.  ║ OUT....: /                                                                ║
  2207.  ║ EXEMPLE: RADIO_BOX(10,50,1,True,Rad1);                                    ║
  2208.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2209.  
  2210.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2211.  ║                             PROCEDURE BUTTONG                             ║
  2212.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2213.  ║ IN.....: X,Y (INTEGER):Position du Bouton.                                ║
  2214.  ║          Size (INTEGER):Taille Horizontale du Boutton.                    ║
  2215.  ║          Lock (BOOLEAN):Boutton On/Off Pouvant rester Enfoncer (TRUE).    ║
  2216.  ║          GagBut (BUT):Reccord pour Stockage des données du Bouton.        ║
  2217.  ║          Name (STRING):Nom du Bouton.                                     ║
  2218.  ║ EXPLAIN: Affiche un Boutton en Mode Graphique selon les Parametres.       ║
  2219.  ║ OUT....: /                                                                ║
  2220.  ║ NB.....: Il n'est pas possible d'avoir un bouton Sélectionné dés le départ║
  2221.  ║ EXEMPLE: BUTTONG(10,50,130,False,But1,'Open File');                       ║
  2222.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2223.  
  2224.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2225.  ║                           PROCEDURE CYCLER_BUT                            ║
  2226.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2227.  ║ IN.....: X,Y (INTEGER):Position du Bouton.                                ║
  2228.  ║          Size (INTEGER):Taille Horizontale du Boutton.                    ║
  2229.  ║          Num (INTEGER):Numero du Bouton Afiché en Premier.                ║
  2230.  ║          GagBut (BUT):Reccord pour Stockage des données du Bouton.        ║
  2231.  ║          Name (STRING):Nom du Bouton.                                     ║
  2232.  ║ OUT....: /                                                                ║
  2233.  ║ EXPLAIN: Affiche un Bouton Cycle à Plusieurs entrées Textes.              ║
  2234.  ║ EXEMPLE: CYCLER_BUT(410,80,99,ButC,'  CRUNCH|   DECRUNCH|  AUTO DETECT|');║
  2235.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2236.  
  2237.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2238.  ║                          PROCEDURE DRAW_SLIDER                            ║
  2239.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2240.  ║ IN.....: S (Var S:SLIDE): Pointeur sur Structure Slider.                  ║
  2241.  ║ OUT....: /                                                                ║
  2242.  ║ EXPLAIN: Reaffiche le Slider en question à l'écran.                       ║
  2243.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2244.  
  2245.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2246.  ║                        PROCEDURE DRAW_RADIO_BOX                           ║
  2247.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2248.  ║ IN.....: R (SLIDE): Pointeur sur Structure Bouton Radio.                  ║
  2249.  ║ OUT....: /                                                                ║
  2250.  ║ EXPLAIN: Reaffiche le Bouton radio en question à l'écran.                 ║
  2251.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2252.  
  2253.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2254.  ║                         PROCEDURE DRAW_BUTTONG                            ║
  2255.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2256.  ║ IN.....: B (ButG): Pointeur sur Structure Boutton.                        ║
  2257.  ║ OUT....: /                                                                ║
  2258.  ║ EXPLAIN: Reaffiche le Bouton en question à l'écran.                       ║
  2259.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2260.  
  2261.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2262.  ║                           FUNCTION GETMSG_BUT                             ║
  2263.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2264.  ║ IN.....: B (BUT) = Pointeur sur Structure BoutonG.                        ║
  2265.  ║          M (WORD) = Code Bouton + Zone d'activation.                      ║
  2266.  ║ OUT....: True/False (BOOLEAN) = Gadget Cliqué ou non.                     ║
  2267.  ║ EXPLAIN: Teste si le Gadget représenté par "B" est cliqué ou pas.         ║
  2268.  ║          Dans le cas ou il l'est, la Fonction GADMSG prend la valeur TRUE.║
  2269.  ║ EXEMPLE: If GETMSG_BUT(Gad01,1)=True Then .....                           ║
  2270.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2271.  
  2272.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2273.  ║                          FUNCTION GETMSG_RADIO                            ║
  2274.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2275.  ║ IN.....: R (RAD) = Pointeur sur Structure Radio-Box.                      ║
  2276.  ║          M (WORD) = Code Bouton + Zone d'activation.                      ║
  2277.  ║ OUT....: True/False (Boolean) = True = Bouton Préssé, False = En Attente. ║
  2278.  ║ EXPLAIN: Renvois l'état d'un Radio-Box définit (Sélectioné ou pas).       ║
  2279.  ║ NB.....: L'état TRUE du Bouton est Passagé. Pour tester si le Bouton      ║
  2280.  ║          Radio est Sélectionné ou pas, il faut tester le Champs "Status". ║
  2281.  ║          de la Structure Radio.                                           ║
  2282.  ║ EXEMPLE: If GETMSG_RADIO(Rad1,1)=True Then .....                          ║
  2283.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2284.  
  2285.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2286.  ║                         FUNCTION GETMSG_SLIDER                            ║
  2287.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2288.  ║ IN.....: S (SLIDE) = Pointeur sur Structure Slider.                       ║
  2289.  ║          M (WORD) = Code Bouton + Zone d'activation.                      ║
  2290.  ║ OUT....: True/False (Boolean) = Slider Déplacé ou pas.                    ║
  2291.  ║ EXPLAIN: Teste si le Slider est Déplacé ou pas et gere ses déplacements.  ║
  2292.  ║ EXEMPLE: If GETMSG_SLIDER(Sld1,1)=True Then .....                         ║
  2293.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2294.  
  2295.  
  2296.                            **********************
  2297.                            *        //\\        *
  2298.                            *      //    \\      *
  2299.                            *    //        \\    *
  2300.                            *  //     /\     \\  *
  2301.                            *  \\     \/     //  *
  2302.                            *    \\        //    *
  2303.                            *      \\    //      *
  2304.                            *        \\//        *
  2305.                            **********************
  2306.  
  2307.  
  2308.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2309.  ║                          --- UNIT ZUUL_WIN ---                            ║
  2310.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2311.  ║ CREATEUR.: F.Cheveau.                                                     ║
  2312.  ║ COMMENCE.: Le 15.12.93 et terminé le 15.12.93 (IUT Montpellier).          ║
  2313.  ║ RELEASE..: Le ........ à l'IUT (Montpellier).                             ║
  2314.  ║ CONTENU..: Windows (Gestion des fenêtres).                                ║
  2315.  ║ CONTAINS.: X Procedures.                                                  ║
  2316.  ║ EXTERN...: Need ZUUL_SWA Unit & ZUUL_TOO Unit to run correctly.           ║
  2317.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2318.  
  2319.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2320.  ║                          PROCEDURE INIT_WINDOW                            ║
  2321.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2322.  ║ IN.....: X1,Y1,X2,Y2 (INTEGER): Coordonées de la fenêtre.                 ║
  2323.  ║          IDCMP (WORD): Flags IDCMP de la fenêtre.                         ║
  2324.  ║        Bit 0    $001 = Active      Window Activate.                       ║
  2325.  ║        Bit 1    $002 = Extended    Gadget Extended.                       ║
  2326.  ║        Bit 2    $004 = Size        Gadget Size.                           ║
  2327.  ║        Bit 3    $008 = Swap        Gadget Swap.                           ║
  2328.  ║        Bit 4    $010 = Close       Gadget Close.                          ║
  2329.  ║        Bit 5    $020 = Backdrop    Fenêtre Toujours vers l'arrière.       ║
  2330.  ║        Bit 6    $040 = Block       Flag Limit Move Window to Screen.      ║
  2331.  ║        Bit 7    $080 = Title       Fenêtre Avec Titles.                   ║
  2332.  ║        Bit 8    $100 = Border      Fenêtre Avec Bords.                    ║
  2333.  ║        Bit 9    $200 = Cursor      Assignation d'un Curseur à la Fenêtre. ║
  2334.  ║        Bit 10   $400 = Loked       Fenêtre Bloquée en Active ou Inactive. ║
  2335.  ║        Bit 11 * $800 = CON/RAW     Fenêtre CON si Activé.                 ║
  2336.  ║        Bit 12   $1000 =Modale      Win Modale=Refresh Screen when move.   ║
  2337.  ║        Bit 13   $2000 =Transparent Fenêtre Transparente.                  ║
  2338.  ║        Bit 14   $4000 =Move        Fenêtre peut être Déplacée.            ║
  2339.  ║        Bit 15   $8000 =Relief      Fenêtre Avec Bords en Reliefs.         ║
  2340.  ║          Name (STRING): Nom de la fenêtre.                                ║
  2341.  ║          W (WIN): Pointeur sur Structure Fenêtre allouée.                 ║
  2342.  ║ OUT....: /                                                                ║
  2343.  ║ EXPLAIN: Initialise la structure Fenêtre.                                 ║
  2344.  ║ NB.....: Utilisez le programme "FLAG_WIN" pour définir aisément les bits. ║
  2345.  ║ EXEMPLE: INIT_WINDOW(10,50,450,120,$13DE,'FENETRE 1',Win1);               ║
  2346.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2347.  
  2348.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2349.  ║                          PROCEDURE SUP_WINDOW                             ║
  2350.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2351.  ║ IN.....: Xu,Yu,Xv,Yv (INTEGER): Secondes Coordonées de la fenêtre.        ║
  2352.  ║          X1,Y1,X2,Y2 (INTEGER): Size Min et Max de la Fenêtre.            ║
  2353.  ║          BarSld (INTEGER): Nombre et position des barres de la Fenêtre.   ║
  2354.  ║          Coul (INTEGER): Couleur de fond de la Fenêtre.                   ║
  2355.  ║          W (WIN): Pointeur sur Structure fenêtre allouée.                 ║
  2356.  ║ EXPLAIN: Initialise des définitions suplémentaires pour la fenêtre.       ║
  2357.  ║ OUT....: /.                                                               ║
  2358.  ║ NB.....: Cette Procedure doit toujours être apellée aprés INIT_WINDOW.    ║
  2359.  ║ EXEMPLE: SUP_WINDOW(0,0,200,100,80,50,530,200,3,Col5,W);                  ║
  2360.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2361.  
  2362.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2363.  ║                         PROCEDURE DRAW_WINDOW                             ║
  2364.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2365.  ║ IN.....: Window1 (WIN): Pointeur sur Structure Window.                    ║
  2366.  ║ OUT....: /.                                                               ║
  2367.  ║ EXPLAIN: Affiche la fenêtre définie dans INIT_WINDOWG avec ses Gadgets.   ║
  2368.  ║ EXEMPLE: DRAW_WINDOW(Window1);                                            ║
  2369.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2370.  
  2371.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2372.  ║                          PROCEDURE TASK_WINDOW                            ║
  2373.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2374.  ║ IN.....: Window1 (WIN): Pointeur sur Structure Window.                    ║
  2375.  ║ OUT....: /                                                                ║
  2376.  ║ EXPLAIN: Gere le Multifenetrage pour des fenêtres non modales             ║
  2377.  ║          Déclarées comme telles (Bit 12 à 1).                             ║
  2378.  ║ EXEMPLE: TASK_WINDOW(Window1);                                            ║
  2379.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2380.  
  2381.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2382.  ║                         PROCEDURE RENAME_WINDOW                           ║
  2383.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2384.  ║ IN.....: Window1 (WIN): Pointeur sur Structure Window.                    ║
  2385.  ║          NewName (STRING): Nouveau nom de la Fenêtre.                     ║
  2386.  ║ OUT....: /                                                                ║
  2387.  ║ RESTRICTIONS: La fenêtre doit posseder une barre de Titre.                ║
  2388.  ║ EXPLAIN: Renome la fenêtre (Change son titre).                            ║
  2389.  ║ EXEMPLE: RENAME_WINDOW('I WANT SOME GIRLS',Window1);                      ║
  2390.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2391.  
  2392.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2393.  ║                          PROCEDURE CLEAR_WINDOW                           ║
  2394.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2395.  ║ IN.....: Window1 (WIN): Pointeur sur Structure Window.                    ║
  2396.  ║ OUT....: /                                                                ║
  2397.  ║ EXPLAIN: Nettoie l'interieur de la fenêtre quelquesoit son type.          ║
  2398.  ║ EXEMPLE: CLEAR_WINDOW(Window1);                                           ║
  2399.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2400.  
  2401.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2402.  ║                           FUNCTION BOX_IN_BOX                             ║
  2403.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2404.  ║ IN.....: X1,Y1,X2,Y2 (Integer) = Coordonées 1er Box.                      ║
  2405.  ║          X3,Y3,X4,Y4 (Integer) = Coordonées 2nd Box.                      ║
  2406.  ║ OUT....: True/False (BOOLEAN) = True = Ils Sont superposés.               ║
  2407.  ║ EXPLAIN: Teste si 2 box sont partiellement ou totalement imbriqués.       ║
  2408.  ║ EXEMPLE: If Box_In_Box(1,100,300,200,50,50,500,120)=True Then             ║
  2409.  ║             Write('Ils se superposent...');                               ║
  2410.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2411.  
  2412.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2413.  ║                           PROCEDURE CLIP_WINDOW                           ║
  2414.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2415.  ║ IN.....: CLIP (BOOLEAN): Clipping Fenêtre Actif ou Pas (True=Actif).      ║
  2416.  ║          W (WIN): Pointeur sur Structure Window.                          ║
  2417.  ║ OUT....: /                                                                ║
  2418.  ║ EXPLAIN: Autorise ou pas le clipping dans une fenêtre.                    ║
  2419.  ║          Tout ce qui sera affiché aprés cette instruction ne pourra       ║
  2420.  ║          l'être que dans la fenêtre.                                      ║
  2421.  ║ EXEMPLE: CLIP_WINDOW(True,W1);                                            ║
  2422.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2423.  
  2424.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2425.  ║                          PROCEDURE ZOOM_WINDOW                            ║
  2426.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2427.  ║ IN.....: Mode (BOOLEAN): False = Zoom In, True = Zoom Out.                ║
  2428.  ║          Window1 (WIN): Pointeur sur Structure Window.                    ║
  2429.  ║ EXPLAIN: Fait un Zoom sur la Fenêtre en question à partir de la pos Souris║
  2430.  ║ OUT....: /                                                                ║
  2431.  ║ EXEMPLE: ZOOM_WINDOW(Window1);                                            ║
  2432.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2433.  
  2434.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2435.  ║                          PROCEDURE KILL_WINDOW                            ║
  2436.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2437.  ║ IN.....: Window1 (WIN): Pointeur sur Structure Window.                    ║
  2438.  ║ EXPLAIN: Détruit la fenêtre en question, et libère l'espace mémoire.      ║
  2439.  ║ OUT....: /                                                                ║
  2440.  ║ EXEMPLE: KILL_WINDOW(Window1);                                            ║
  2441.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2442.  
  2443.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2444.  ║                          FUNCTION WINDOW_READY                            ║
  2445.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2446.  ║ IN.....: Window1 (WIN) = Pointeur sur Structure Window.                   ║
  2447.  ║ OUT....: True/False (BOOLEAN) = Fenêtre Ok (True).                        ║
  2448.  ║ EXPLAIN: Prévient si la Fenêtre est prête pour tester les Gadgets.        ║
  2449.  ║ EXEMPLE: If WINDOW_READY(Window1) Then ...... <Test Gadgets Personnels>   ║
  2450.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2451.  
  2452.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2453.  ║                         PROCEDURE IDCMP_WINDOW                            ║
  2454.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2455.  ║ IN.....: IDCMP (WORD): Nouveaux Flags IDCMP de la Fenêtre.                ║
  2456.  ║          Window1 (WIN): Pointeur sur Structure Window.                    ║
  2457.  ║ EXPLAIN: Redéfinit les flags IDCMP pour la Fenêtre Pointée.               ║
  2458.  ║ OUT....: /                                                                ║
  2459.  ║ EXEMPLE: IDCMP_WINDOW($47DE,Window1);                                     ║
  2460.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2461.  
  2462.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2463.  ║                         PROCEDURE IDRES_WINDOW                            ║
  2464.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2465.  ║ IN.....: IDRES (WORD): Nouveaux Flags IDRES de la Fenêtre.                ║
  2466.  ║          Window1 (WIN): Pointeur sur Structure Window.                    ║
  2467.  ║ EXPLAIN: Redéfinit les flags IDRES pour la Fenêtre Pointée.               ║
  2468.  ║ OUT....: /                                                                ║
  2469.  ║ EXEMPLE: IDRES_WINDOW($0003,Window1);                                     ║
  2470.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2471.  
  2472.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2473.  ║                        FUNCTION ACTIVE_WINDOW                             ║
  2474.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2475.  ║ IN.....: W (WIN): Pointeur sur Structure Window.                          ║
  2476.  ║ OUT....: Val (INTEGER): Une Valeur Précisant le type d'activation.        ║
  2477.  ║                         1 = Gadget Close Window Activated.                ║
  2478.  ║                         2 = Gadget Swap Window Activated.                 ║
  2479.  ║                         3 = Gadget Extend Window Activated (New Size,Pos).║
  2480.  ║                         4 = Gadget Resize Window Activated.               ║
  2481.  ║                         5 = Window Activated.                             ║
  2482.  ║                         6 = Window Inactived.                             ║
  2483.  ║  Pas encore fonctionnel 7 = Char or String was Input (CON Window Only).   ║
  2484.  ║                         8 = Window has been Swapped and may be Refresh.   ║
  2485.  ║                         9 = Window has been Moved.                        ║
  2486.  ║ EXPLAIN: Permet de gerer une fenêtre (Activation, Gadgets, Extend...).    ║
  2487.  ║ EXEMPLE: Even:=ACTIVE_WINDOW(Window1);                                    ║
  2488.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2489.  
  2490.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2491.  ║                          PROCEDURE MOVE_WINDOW                            ║
  2492.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2493.  ║ IN.....: W (WIN): Pointeur sur Structure Window.                          ║
  2494.  ║ EXPLAIN: Permet le déplacement en mode graphique d'une fenêtre.           ║
  2495.  ║ EXEMPLE: MOVE_WINDOW(Window1);                                            ║
  2496.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2497.  
  2498.  
  2499.                            **********************
  2500.                            *        //\\        *
  2501.                            *      //    \\      *
  2502.                            *    //        \\    *
  2503.                            *  //     /\     \\  *
  2504.                            *  \\     \/     //  *
  2505.                            *    \\        //    *
  2506.                            *      \\    //      *
  2507.                            *        \\//        *
  2508.                            **********************
  2509.  
  2510.  
  2511.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2512.  ║                          --- UNIT ZUUL_DIR ---                            ║
  2513.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2514.  ║ CREATEUR.: F.Cheveau.                                                     ║
  2515.  ║ COMMENCE.: Le 15.12.93 et terminé le 18.05.94 (IUT Montpellier).          ║
  2516.  ║ RELEASE..: Le 18.05.94. à l'IUT (Montpellier).                            ║
  2517.  ║ CONTENU..: Requesters de Directory.                                       ║
  2518.  ║ CONTAIN..: X Procedures.                                                  ║
  2519.  ║ EXTERN...: Need WIN,GAD,SWA,TOO,MSE,TXT,COL,REQ Units to run correctly.   ║
  2520.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2521.  
  2522.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2523.  ║                          FUNCTION GET_DEVICE_NAME                         ║
  2524.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2525.  ║ IN.....: Root (STRING) = Label du Volume (Ex: "C:\").                     ║
  2526.  ║ OUT....: Name (STRING) = Nom du Volume.                                   ║
  2527.  ║ EXPLAIN: Renvois le Nom du Volume Spécifié.                               ║
  2528.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2529.  
  2530.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2531.  ║                          FUNCTION TEST_DEVICES                            ║
  2532.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2533.  ║ IN.....: Dev (BYTE): Numero du Device a Tester.                           ║
  2534.  ║ OUT....: True/False (BOOLEAN): True si le Device Existe.                  ║
  2535.  ║ EXPLAIN: Teste l'existence d'un directory Précisé par son numéro d'ordre. ║
  2536.  ║ EXEMPLE: If GET_DEVICES(3)=True Then Writeln('"C:" Existe');              ║
  2537.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2538.  
  2539.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2540.  ║                         PROCEDURE GET_FILEDIR                             ║
  2541.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2542.  ║ IN.....: X,Y (INTEGER): Position X,Y de la Fenêtre.                       ║
  2543.  ║          Sv  (INTEGER): Taille Verticale de la Fenêtre.                   ║
  2544.  ║          Name (STRING): Nom de la Fenêtre.                                ║
  2545.  ║          OkBut(STRING): Nom pour le Gadget 'OK'.                          ║
  2546.  ║          Mask (STRING): Mask pour le Directory.                           ║
  2547.  ║          Filordir(BYTE): Utilisé dans la prochaine version de MOS,        ║
  2548.  ║                          Ici, mettez-le toujours à 0.                     ║
  2549.  ║ OUT...:  DirSel (STRING): Directory Slectionné.                           ║
  2550.  ║          FilSel (STRING): File Slectionné.                                ║
  2551.  ║          Size (LONGINT): Taille du Fichier Selectionné.                   ║
  2552.  ║ EXPLAIN: Affiche et gere un Requester de type File Requester.             ║
  2553.  ║          Renvois le nom du Fichier Sélectionné sinon, une Chaine Vide.    ║
  2554.  ║ NB.....: Voir les Commentaires du même Requester mais en texte pour       ║
  2555.  ║          plus de détails.                                                 ║
  2556.  ║ EXEMPLE: GET_FILEDIR(50,30,280,'LOAD','OK','*.*',0,DirSel,FilSel,Size);   ║
  2557.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2558.  
  2559.  
  2560.                            **********************
  2561.                            *        //\\        *
  2562.                            *      //    \\      *
  2563.                            *    //        \\    *
  2564.                            *  //     /\     \\  *
  2565.                            *  \\     \/     //  *
  2566.                            *    \\        //    *
  2567.                            *      \\    //      *
  2568.                            *        \\//        *
  2569.                            **********************
  2570.  
  2571.  
  2572.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2573.  ║                          --- UNIT ZUUL_REQ ---                            ║
  2574.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2575.  ║ CREATEUR.: F.Cheveau.                                                     ║
  2576.  ║ COMMENCE.: Le 15.12.93 et terminé le 15.12.93 (IUT Montpellier).          ║
  2577.  ║ RELEASE..: Le 18.04.94 à l'IUT (Montpellier).                             ║
  2578.  ║ CONTENU..: Requesters de tous types.                                      ║
  2579.  ║ CONTAINS.: X Procedures.                                                  ║
  2580.  ║ EXTERN...: Need ASM,GFX,SWA,COL,MSE,TXT,GAD,TOO,WIN Units to run correctly║
  2581.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2582.  
  2583.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2584.  ║                           PROCEDURE MAIN_TASK                             ║
  2585.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2586.  ║ IN.....: /                                                                ║
  2587.  ║ OUT....: /                                                                ║
  2588.  ║ EXPLAIN: Gère les principale Tâches telles que les Erreurs pouvant        ║
  2589.  ║          Survenir, le Blanker Souris.... etc                              ║
  2590.  ║ NB.....: Doit être Appelée régulièrement (Procedure d'interruption),      ║
  2591.  ║          ou Boucle perpétuelle de test.                                   ║
  2592.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2593.  
  2594.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2595.  ║                          FUNCTION CO_REQUESTG                             ║
  2596.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2597.  ║ IN.....: X,Y = (WORD) Position ou Afficher le Requester.                  ║
  2598.  ║          SIZ = (WORD) Longeur maximale du Requester à l'écran.            ║
  2599.  ║          LEN = (BYTE) Longeur maximale du texte a afficher.               ║
  2600.  ║          CoB = (BYTE) Couleur du Background.                              ║
  2601.  ║          Sty = (BYTE) Style de Design pour le Requester.                  ║
  2602.  ║                       0 = String Box, 1 = Box Normale.                    ║
  2603.  ║ IN/OUT.: CIN = (STRING) String renvoyée par le requester.                 ║
  2604.  ║ EXPLAIN: Affiche un requester de string, le Gere, et renvois "TRUE" quand ║
  2605.  ║          L'utilisateur à Pressé ENTER. Le String est lu dans "CIN".       ║
  2606.  ║ EXEMPLE: Cin:='Changez cette phrase';                                     ║
  2607.  ║          CO_REQUEST(10,10,143,40,Cin);                                    ║
  2608.  ║ NB.....: Si Cin n'est pas une chaine vide avant l'appel du requester,     ║
  2609.  ║          Elle sera affichée dans celui-ci.                                ║
  2610.  ║          Dans le Requester, les touches suivantes sont reconnues:         ║
  2611.  ║          Enter, Delete, Backspace, Début, Fin, Flèche Droite,Flèche Gauche║
  2612.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2613.  
  2614.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2615.  ║                       PROCEDURE PROGRESS_REQUESTG                         ║
  2616.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2617.  ║ IN.....: NAME (STRING) = Nom de la Fenêtre.                               ║
  2618.  ║          EXPLAIN (STRING) = Label d'Explications d'en dessous de la Barre.║
  2619.  ║          Val (INTEGER) = Valeur du Pourcentage (0-100%).                  ║
  2620.  ║          CoB (INTEGER) = Couleur de Remplissage du Fond.                  ║
  2621.  ║          P (TPROGRESS) = Pointeur sur Structure TProgress.                ║
  2622.  ║ OUT....: /                                                                ║
  2623.  ║ EXPLAIN: Affiche et Gère un Requester d'Indice de Progression en (%).     ║
  2624.  ║ NB.....: L'initialisation du Requester se Fait en Plaçant à 0 la          ║
  2625.  ║          Variable "Val", et sa Fermeture, en Plaçant a 100 "Val".         ║
  2626.  ║          Si le Bouton Abort est Préssé, le Champ "Abort" est mis à TRUE.  ║
  2627.  ║ EXEMPLE: PROGRESS_REQUESTG('Computing...','Crunching',33,12,P);           ║
  2628.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2629.  
  2630.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2631.  ║                       PROCEDURE HARDWARE_REQUESTG                         ║
  2632.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2633.  ║ IN.....: X1,Y1 (INTEGER) = Coordonées de la Fenêtre.                      ║
  2634.  ║          NAME (STRING) = Nom de la Fenêtre.                               ║
  2635.  ║ OUT....: /                                                                ║
  2636.  ║ EXPLAIN: Affiche et Gère un Requester d'Affichage du Harware de           ║
  2637.  ║          l'Ordinateur sur lequel a été Lancé le Requester.                ║
  2638.  ║ EXEMPLE: HARDWARE_REQUESTG(200,100,'YOUR HARDWARE CONFIGURATION IS...');  ║
  2639.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2640.  
  2641.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2642.  ║                      - PROCEDURE MEMORY REQUESTG -                        ║
  2643.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2644.  ║ IN.....: X1,Y1 (INTEGER) = Coordonées de la Fenêtre.                      ║
  2645.  ║          NAME (STRING) = Nom de la Fenêtre.                               ║
  2646.  ║ OUT....: /                                                                ║
  2647.  ║ EXPLAIN: Affiche le Status Mémoire Initial, Actuel, et la Taille          ║
  2648.  ║          du plus gros bloc Mémoire Disponible (XMS, Version DOS...).      ║
  2649.  ║ EXEMPLE: MEMORY_REQUESTG(200,100,'SEE IT ....');                          ║
  2650.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2651.  
  2652.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2653.  ║                        PROCEDURE SYSTEM_REQUESTG                          ║
  2654.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2655.  ║ IN.....: X1,Y1 (INTEGER) = Coordonées de la Fenêtre.                      ║
  2656.  ║          NAME (STRING) = Nom de la Fenêtre.                               ║
  2657.  ║ OUT....: /                                                                ║
  2658.  ║ EXPLAIN: Affiche et Gère un Requester de Configuration du Systeme MOS.    ║
  2659.  ║ EXEMPLE: SYSTEM_REQUESTG(200,100,'SELECT YOUR CONFIGURATION');            ║
  2660.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2661.  
  2662.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2663.  ║                         PROCEDURE EZ_REQUESTG                             ║
  2664.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2665.  ║ IN.....: NAME (STRING) = Nom de la Fenêtre.                               ║
  2666.  ║          TXT (STRING) = Texte a afficher dans le requester.               ║
  2667.  ║          GAD (STRING) = Texte des Gadgets a afficher.                     ║
  2668.  ║ OUT....: NUM (INTEGER) = Numéro du gadget Selectionné.                    ║
  2669.  ║ EXPLAIN: Affiche au centre de l'écran un requester du type EZ_REQUEST.    ║
  2670.  ║          et attends la selection de l'un des gadgets.                     ║
  2671.  ║          Renvois le numéro du gadget choisit.                             ║
  2672.  ║ EXEMPLE: NAM:='SYSTEM REQUEST';                                           ║
  2673.  ║          TXT:='Ok pour le test|des Gadgets|';                             ║
  2674.  ║          GAD:='Ok|Cancel|Restore|';                                       ║
  2675.  ║          EZ_REQUESTG(NAM,TXT,GAD,NUM);                                    ║
  2676.  ║ NB.....: Les fin de lignes et les differents gadgets sont séparés par     ║
  2677.  ║          la barre verticale '|'.                                          ║
  2678.  ║          On est limite a maximum 10 gadgets affichables a l'écran.        ║
  2679.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2680.  
  2681.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2682.  ║                        PROCEDURE STRING_REQUESTG                          ║
  2683.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2684.  ║ IN.....: NAME (STRING) = Nom de la Fenêtre.                               ║
  2685.  ║          TXT (STRING) = Texte a afficher dans le requester.               ║
  2686.  ║          GAD (STRING) = Texte des Gadgets a afficher.                     ║
  2687.  ║          NbCar (INTEGER) = Nombre de Char Max pouvant être rentrés.       ║
  2688.  ║          Size (INTEGER) = Longeur en Pixel de la barre "Input String".    ║
  2689.  ║ IN/OUT.: Cin (STRING) = String Envoyé/Renvoyé.                            ║
  2690.  ║ OUT....: NUM (INTEGER) = Numéro du gadget Selectionné.                    ║
  2691.  ║ EXPLAIN: Affiche au centre de l'écran un requester du type STRING_REQUEST.║
  2692.  ║          et attends la selection de l'un des gadgets.                     ║
  2693.  ║          Renvois le numéro du gadget choisit et le String Entré.          ║
  2694.  ║ EXEMPLE: NAM:='SYSTEM REQUEST';                                           ║
  2695.  ║          TXT:='Rentrez un String SVP||Allez-y Quoi !!!|';                 ║
  2696.  ║          GAD:='Ok|Hold|Cancel|';                                          ║
  2697.  ║          EZ_REQUESTG(NAM,TXT,GAD,40,120,Cin,NUM);                         ║
  2698.  ║ NB.....: Les fin de lignes et les differents gadgets sont séparés par     ║
  2699.  ║          la barre verticale '|'.                                          ║
  2700.  ║          On est limite a maximum 10 gadgets affichables a l'écran.        ║
  2701.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2702.  
  2703.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2704.  ║                       PROCEDURE PALETTE_REQUESTG                          ║
  2705.  ╠═══════════════════════════════════════════════════════════════════════════╣
  2706.  ║ IN.....: X,Y (INTEGER) = Coordonées du requester Palette à l'Ecran.       ║
  2707.  ║          NAME (STRING) = Nom de la Fenêtre.                               ║
  2708.  ║ OUT....: NUM (SHORTINT) = Numéro du gadget Selectionné.                   ║
  2709.  ║ EXPLAIN: Affiche un requester de Palette et le gère.                      ║
  2710.  ║          Renvois le numéro de la couleur choisie dans "NUM".              ║
  2711.  ║ EXEMPLE: PALETTE_REQUESTG(100,100,'Please Select a Palette',NUM);         ║
  2712.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2713.  
  2714.  
  2715.  
  2716. ---------------------------- EXEMPLE DE LOGICIEL -----------------------------
  2717. ---------------------- PROGRAMME AVEC L'INTERFACE DE MOS ---------------------
  2718.  
  2719.         Il s'agit du logiciel "DS.EXE" qui permet de tester la vitesse
  2720. d'écriture sur disque en faisant varier certains paramètres comme la taille
  2721. du buffer d'écriture, ou encore la taille du fichier.
  2722.  
  2723. Le logiciel se trouve dans le répertoire C:\MOS\EXEMPLES\SOFTS
  2724.  
  2725. Les sources du logiciel sont incluses de manière à pouvoir vous rendre compte
  2726. des techniques et fonctions de MOS employées pour son développement.
  2727. L'interface de ce logiciel à été développée en trois jours grâce à MOS.
  2728.  
  2729. Si vous désirez de plus amples informations au sujet de ce logiciel, ou
  2730. de MOS, n'hésitez pas à me contacter.
  2731.  
  2732.  CHEVEAU Frédéric,
  2733.  8 Passage des grillons,
  2734.  66000 Perpignan,
  2735.  FRANCE.
  2736.  
  2737.  Ou bien pour ceux qui possèdent un minitel,
  2738.  faites le 36.14, Code "RTEL1" (aprés 10 heures 30 le soir, se serveur
  2739.  ne coûte que 12 centimes la minute, donc ca ne vous ruinera pas !).
  2740.  Et laissez moi un message dans ma boite au lettre "BouFFtou".
  2741.  
  2742.