home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 19 / CD_ASCQ_19_010295.iso / dos / fr / anatomie / wblib.doc < prev   
Text File  |  1994-09-21  |  87KB  |  2,223 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.                                W B L I B   Version 1.10
  7.  
  8.                         Bibliothèque de Fonctions et Routines
  9.  
  10.                          pour Microsoft QuickBASIC 4.0 à 4.5
  11.  
  12.                                         par
  13.  
  14.                                    BLAKE William
  15.                                11, Rés. Soleil Levant
  16.                               02100 MORCOURT  (FRANCE)
  17.  
  18.                               Distribuée en SHAREWARE
  19.  
  20.  
  21.                       Copyright (C) Août.1994 :  BLAKE William
  22.  
  23.  
  24.  
  25.  
  26.                                  TABLE DES MATIERES
  27.  
  28.  
  29.  
  30.           Introduction ................................................ 00
  31.  
  32.           Fonctions DOS et Système .................................... 01
  33.  
  34.           Gestion de la Souris ........................................ 02
  35.  
  36.           Manipulation de Fichiers .................................... 03
  37.  
  38.           Manipulation de Chaines, Nombres, Dates ..................... 04
  39.  
  40.           Fonctions Graphiques et Assimilées .......................... 05
  41.  
  42.           Gestion de la Vidéo ......................................... 06
  43.  
  44.           Gestion du clavier .......................................... 07
  45.  
  46.           Gestion de la mémoire ....................................... 08
  47.  
  48.           Divers ...................................................... 09
  49.  
  50.           Avertissement ............................................... 10
  51.  
  52.  
  53.  
  54.           INTRODUCTION
  55.           ------------
  56.  
  57.           Les  routines de la  bibliothèque  WBLIB offrent à  l'utilisateur des
  58.           fonctions complémentaires à celles de  QuickBASIC et permettent l'uti-     
  59.           sation des principales fonctions du DOS, la  manipulation de  nombres,
  60.           de  dates, de  chaines, de  fichiers, la gestion  de la souris, de la
  61.           vidéo, du clavier, de la mémoire, une douzaine de fonctions graphiques
  62.           en mode TEXTES et une vingtaine de réelles fonctions graphiques.
  63.  
  64.           Soit à peu près  130 fonctions et routines, qui vous  permettront de
  65.           donner à  vos programmes  un "look" professionnel, sans la  nécessité
  66.           d'avoir recours à une  programmation complexe et surtout  au moindre
  67.           coût.
  68.  
  69.           La bibliothèque autonome  WBLIB  fonctionne avec  QuickBASIC  Version
  70.           4.# de la Société MICROSOFT. 
  71.  
  72.           Nécessite une carte pouvant afficher le mode VGA 640 x 480 16 couleurs
  73.           et 512 K de mémoire conventionnelle.
  74.  
  75.           
  76.          =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  77.  
  78.                                    
  79.                                       CHAPITRE 1
  80.                                       ==========
  81.  
  82.                              
  83.           FONCTIONS DOS ET SYSTEME
  84.           ------------------------
  85.  
  86.  
  87.            ********************************************************************   
  88.  
  89.            SUB:      Bouter
  90.                      ------
  91.  
  92.            OBJET:    Réinitialisation du système et retour au DOS, (ou RESET).
  93.                      Equivaut à la pression simultanée des touches Alt+Ctrl+Del
  94.  
  95.            APPEL:    Bouter
  96.  
  97.            *******************************************************************
  98.  
  99.            SUB:      ChLect
  100.                      ------
  101.  
  102.            OBJET:    Changer le lecteur valide  
  103.  
  104.  
  105.            APPEL:    ChLect "NomLecteur"
  106.  
  107.                                 EXEMPLE DE PROGRAMMATION
  108.            
  109.            DECLARE SUB ChLect (NomLect$)
  110.            DEFINT A-Z
  111.            ChLect "A"        'le lecteur de disquettes A est maintenant valide
  112.            SHELL "DIR"       'lit le contenu de la disquette A
  113.            ChLect "C"        'le disque dur C devient valide
  114.            ... 
  115.  
  116.            *******************************************************************
  117.  
  118.            FONCTION: Copro% 
  119.                      ------
  120.  
  121.            OBJET:    Déterminer la présence ou non d'un Coprocesseur MATH
  122.  
  123.            APPEL:    Copro%
  124.  
  125.                                 EXEMPLE DE PROGRAMMATION
  126.  
  127.            DEFINT A-Z
  128.            'INCLUDE: 'QB.BI'
  129.            DECLARE FUNCTION Copro% ()    ' ou 'INCLUDE: 'WBLIB.BI'
  130.            IF Copro% THEN
  131.                PRINT "Présence d'un Coprocesseur"
  132.             ELSE
  133.                PRINT "Pas de Coprocesseur"
  134.            END IF
  135.            ...
  136.            
  137.            ********************************************************************           
  138.  
  139.            SUB:      Dosver
  140.                      ------
  141.  
  142.            OBJET:    Déterminer la version du DOS utilisé
  143.  
  144.            APPEL:    Dosver
  145.  
  146.                                  EXEMPLE DE PROGRAMMATION
  147.  
  148.            DECLARE SUB Dosver ()
  149.            CLS
  150.            LOCATE 10, 10
  151.            PRINT "Version du DOS n°";
  152.            Dosver                          'EXEMPLE: Version du DOS n° 5.0
  153.            ...
  154.  
  155.            ********************************************************************
  156.  
  157.            SUB:      Erreur
  158.                      ------
  159.  
  160.            OBJET:    Interruption d'erreur avec message correspondant
  161.  
  162.            APPEL:    Erreur Mes%
  163.  
  164.                                  EXEMPLE DE PROGRAMMATION
  165.  
  166.            DECLARE SUB Erreur (Mes%)
  167.            ON ERROR GOTO ErreurSsProg
  168.            CLS
  169.            A = 10: B = 0
  170.            PRINT A / B                      ' Division par zéro
  171.            PRINT "Ligne suivante"           ' RESUME NEXT permet au programme
  172.            ...                                de passer à la ligne suivante
  173.            END
  174.            ErreurSsProg:                                 │
  175.            Erreur ERR                                    │
  176.            RESUME NEXT   ────────────────────────────────┘
  177.  
  178.            ********************************************************************
  179.   
  180.            FONCTION: Lecteur
  181.                      -------
  182.  
  183.            OBJET:    Déterminer le lecteur valide
  184.   
  185.            APPEL:    Lecteur$   
  186.  
  187.                                  EXEMPLE DE PROGRAMMATION
  188.  
  189.            DECLARE FUNCTION Lecteur$ ()
  190.            CLS
  191.            PRINT "Le lecteur valide est "; Lecteur$
  192.            ...
  193.  
  194.            ********************************************************************
  195.  
  196.            SUB:      MemRom
  197.                      ------
  198.  
  199.            OBJET:    Donner la mention de COPYRIGHT de la mémoire morte (ROM)
  200.                      (A utiliser uniquement si Carte EGA ou supérieure)
  201.  
  202.            APPEL:    MemRom
  203.  
  204.                                  EXEMPLE DE PROGRAMMATION
  205.  
  206.            DECLARE SUB MemRom
  207.            CLS
  208.            MemRom
  209.            ...
  210.  
  211.            ********************************************************************                             
  212.  
  213.            FONCTION: Repertoire 
  214.                      ----------
  215.  
  216.            OBJET:    Déterminer les lecteur et répertoire valides
  217.  
  218.            APPEL:    Repertoire$
  219.  
  220.                                  EXEMPLE DE PROGRAMMATION
  221.  
  222.            DECLARE FUNCTION Repertoire$ ()
  223.            PRINT "Le chemin actuel est : "; Repertoire$   'EXEMPLE: C:\DOS
  224.            ...
  225.  
  226.            *******************************************************************
  227.  
  228.            FONCTION: UcMicro%
  229.                      --------
  230.  
  231.            OBJET:    Déterminer le processeur de l'ordinateur
  232.  
  233.            APPEL:    UcMicro%
  234.  
  235.                                  EXEMPLE DE PROGRAMMATION
  236.  
  237.            DECLARE FUNCTION UcMicro%
  238.            PRINT "Le processeur est un 80"; UcMicro%
  239.            ...        
  240.  
  241.            *******************************************************************
  242.  
  243.            SUB:      Volume
  244.                      ------
  245.  
  246.            OBJET:    Lire, Créer, Renommer, Effacer le Label de Volume
  247.  
  248.            APPEL:    Volume "Lecteur", "Etiquette", "ExtVol"
  249.  
  250.                       * Lecteur   : A, B, C, D, E, etc
  251.                       * Etiquette : Le nom à donner au Label de Volume
  252.                       * ExtVol    :  - L  pour Lire
  253.                                      - EC pour ECrire   (Créer)
  254.                                      - R  pour Renommer
  255.                                      - EF pour EFfacer
  256.    
  257.                                  EXEMPLE DE PROGRAMMATION
  258.    
  259.            DECLARE SUB Volume (Lecteur$, Etiquette$, ExtVol$)
  260.            DEFINT A-Z
  261.            Volume "C", "", "L"        'Lit le Label de volume de C Ex: MICRO486
  262.            Volume "A", "DISK1", "EC"  'ECrit DISK1 comme L d V sur disquette A
  263.            Volume "C", "DISKC", "R"   'Modifie MICRO486 en DISKC
  264.            ...
  265.  
  266.            ####################################################################
  267.  
  268.                                       CHAPITRE 2
  269.                                       ==========
  270.  
  271.  
  272.           GESTION DE LA SOURIS
  273.           --------------------
  274.  
  275.            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
  276.  
  277.                Un EXEMPLE DE PROGRAMMATION reprenant toutes les fonctions
  278.                    et routines est disponible en fin de ce chapitre.
  279.  
  280.            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-              
  281.  
  282.  
  283.            ******************************************************************** 
  284.  
  285.            FONCTION: SrPresente
  286.                      ----------
  287.  
  288.            OBJET:    Rechercher si une souris compatible MICROSOFT est connectée
  289.  
  290.            APPEL:    SrPresente% ou SrPresente
  291.  
  292.            ********************************************************************                          
  293.  
  294.            FONCTION: SrInit
  295.                      ------
  296.  
  297.            OBJET:    Initialiser la souris
  298.  
  299.            APPEL:    SrInit% ou SrInit
  300.  
  301.            ********************************************************************
  302.  
  303.            SUB:      SrMarche
  304.                      --------              
  305.  
  306.            OBJET:    Rendre visible le curseur de la souris à l'écran
  307.  
  308.            APPEL:    SrMarche
  309.  
  310.            ********************************************************************
  311.  
  312.            SUB:      SrStop
  313.                      ------
  314.  
  315.            OBJET:    Dé-initialiser la souris et rendre invisible le curseur 
  316.  
  317.            APPEL:    SrStop
  318.  
  319.            ********************************************************************
  320.  
  321.            SUB:      SrPos
  322.                      -----
  323.  
  324.            OBJET:    Positionner le curseur à un endroit déterminé
  325.  
  326.            APPEL:    SrPos Ligne%, Rang%
  327.  
  328.                       * Ligne% : Valeur entre  1 et 80 (WIDTH 80)
  329.                       * Rang%  : Valeur entre  1 et 25 (SCREEN 0)
  330.                                                1 et 53 (SCREEN 9)
  331.                                                1 et 60 (SCREEN 12) ...
  332.  
  333.            ********************************************************************
  334.                         
  335.            SUB:      SrLimit
  336.                      -------
  337.  
  338.            OBJET:    Limiter le déplacement du curseur dans un espace déterminé
  339.  
  340.            APPEL:    SrLimit X1%, X2%, Y1%, Y2%, BoutonSouris%, RetX%, RetY%, -
  341.                              Test
  342.  
  343.                        
  344.                       [Valeurs correspondantes Mode VGA (SCREEN 12)]
  345.            ATTENTION: Transcription nécessaire pour les Modes 0 à 11 + 13
  346.            ---------
  347.                       * X1% : Valeur entre 1 et 80 
  348.                       * X2% : Valeur entre 1 et 80   avec X2% > X1%  
  349.                       * Y1% : Valeur entre 1 et 60   
  350.                       * Y2% : Valeur entre 1 et 60   avec Y2% > Y1%
  351.                       * BoutonSouris% :
  352.                                  1: si click sur Bouton  Gauche
  353.                                  2: -------------------  Droit
  354.                                  3: -------------------s Gauche + Droit
  355.                                  4: -------------------  Milieu (si disponible)
  356.                                  5: -------------------s Gauche + Milieu
  357.                                  6: -------------------s Milieu + Droit
  358.                                  7: -------------------  Tous
  359.                                  0: -------------------  Aucun 
  360.                       * RetX% : Retour de la Valeur de X lors du click
  361.                       * RetY% : Retour de la Valeur de Y lors du click
  362.                       * Si Test <> 0, informations sur la position du curseur 
  363.                                       et du bouton clické en Ligne 1.
  364.                         (Utilisation utile principalement en programmation)   
  365.  
  366.             *******************************************************************
  367.  
  368.             FONCTION: SrStatus
  369.                       --------
  370.  
  371.             OBJET:    Déterminer le bouton "clické" et la position du curseur
  372.                       (Ligne = X et Rang = Y)                  
  373.  
  374.             APPEL:    Boutons = SrStatus (SrPosX%, SrPosY%)
  375.  
  376.                        * Boutons : Retour Valeur [0 à 7]
  377.                        * SrPosX% : Retour Valeur [1 à 80]  (WIDTH 80)
  378.                        * SrPosY% : Retour Valeur [1 à 60]  (SCREEN 12)      
  379.  
  380.             *******************************************************************
  381.  
  382.             SUB:      SrCurseur
  383.                       ---------
  384.  
  385.             OBJET:    Modifier la forme et les couleurs du curseur et du fond
  386.                       [Utilisable uniquement en mode Textes (SCREEN 0)]
  387.  
  388.             APPEL:    SrCurseur SrCaracterASCI%, SrCoulCurseur%, SrCoulFondCurs%  
  389.  
  390.                        * SrCaractereASCI%  : Valeur [1 à 255]
  391.                        * SrCouleurCurseur% : Valeur [1 à 15]
  392.                        * SrCoulFondCurs%   : Valeur [1 à 15]
  393.  
  394.             *******************************************************************
  395.  
  396.             SUB:      BtSrInit
  397.                       --------
  398.  
  399.             OBJET:    (Ré)Initialiser les Boutons de la souris
  400.  
  401.             APPEL:    BtSrInit Boutons%
  402.  
  403.                        * Boutons% : Valeur [0 à 7]  (cf. SrLimit)
  404.  
  405.             *******************************************************************
  406.  
  407.             FONCTION: BtSrStatus
  408.                       ----------
  409.  
  410.             OBJET:    Contrôler si un bouton de la souris a été "clické"    
  411.                       et dans l'affirmative, réinitialiser les boutons                      
  412.  
  413.             APPEL:    Control = BtSrStatus BtSrVal%, SPosX%, SPosY% 
  414.  
  415.                        * Control   : -1 si aucun bouton "clické", sinon 0
  416.                        * BtSrVal%  :  0 pour BtSrGauche, 1 pour BtSrDroit
  417.                                       2 pour BtSrMilieu  (cf. Exemple de Prog)
  418.                          
  419.             *******************************************************************
  420.  
  421.             SUB:      BtSrAffiche
  422.                       -----------
  423.  
  424.             OBJET:    Afficher à l'écran la position exacte du curseur (X,Y) et 
  425.                       déterminer le bouton "clické" (Gauche, Droit, etc)
  426.                       [à utiliser en combinaison avec SrStatus]
  427.  
  428.             APPEL:    BtSrAffiche Boutons%, SPosX%, SPosY%, Imp1%, Imp2%, -
  429.                                   Imp3%, Imp4%
  430.  
  431.                        * Boutons%, SPosX%, SPosY% : Obtenus par SrStatus
  432.                        * Imp1%, Imp2% : Affiche le bouton "clické" à l'emplace-
  433.                          ment Imp1% et Imp2% (id° que LOCATE Imp1%, Imp2%)
  434.                        * Imp3%, Imp4% : Affiche les valeurs de X et Y   
  435.  
  436.             *******************************************************************
  437.           
  438.                                  EXEMPLE DE PROGRAMMATION    
  439.  
  440.  
  441.             DEFINT A-Z               
  442.             '$INCLUDE: 'QB.BI'       'En raison des Interruptions 
  443.             '$INCLUDE: 'WBLIB.BI'    'Initialiser les Fonctions et Routines
  444.             
  445.             'Variables nécessaires au bon fonctionnement de SrInit, SrMarche, -
  446.             'SrStop
  447.  
  448.             Vrai = -1: Faux = 0
  449.  
  450.             'Définitions des Boutons en vue reconnaissance lors du click 
  451.  
  452.             BtG = 1: BtD = 2: BtGD = 3: BtM = 4
  453.             BtGM = 5: BtMD = 6: BtTous = 7: BtAucun = 0
  454.  
  455.             'Définition des Boutons de la Souris en vue de (Ré)Initialisation 
  456.               
  457.             BtSrGauche = 0: BtSrDroit = 1 : BtSrMilieu = 2 
  458.  
  459.             SCREEN 0                  'En raison de l'utilisation de SrCurseur
  460.             IF SrPresente THEN
  461.                 LOCATE 1, 1: PRINT "Souris connectée"
  462.                   IF NOT SrInit THEN
  463.                        LOCATE 1, 1: PRINT "Souris non initialisée"
  464.                                          'Non Compatible ?, Défectueuse ?, ...
  465.                        END       
  466.                     ELSE
  467.                        LOCATE 1, 1: PRINT "Souris initialisée"
  468.                   END IF
  469.                ELSE
  470.                 LOCATE 1, 1: PRINT "Désolé, Souris introuvable"
  471.                 END          
  472.             END IF
  473.             LOCATE 25, 1
  474.             PRINT "(Bouton Gauche pour changer,";" Bouton Droit pour Quitter)";
  475.             SrPos 10, 26  'Positionnement de la souris en Ligne = 10, Rang = 26
  476.             SrMarche                          'Curseur visible
  477.             BtSrInit BtSrGauche               'Initialiser le Bouton gauche 
  478.      
  479.             WHILE NOT (Ret1% = 1 AND Ret2% = 1)      'Coin supérieur gauche
  480.             SrLimit 1, 45, 1, 44, Prg, Ret1%, Ret2%, 0
  481.             WEND  'Tant que Bouton gauche non clické sur position (X,Y) = (1,1)
  482.                   'l'espace de déplacement de la souris sera restreint
  483.       
  484.             DO WHILE Boutons <> BtD     'Click sur Bt droit quitte le Programme 
  485.                 Boutons = SrStatus(SPosX, SPosY)           'Un Bt clické ?
  486.                 BtSrAffiche Boutons, SPosX, SPosY, 24, 42, 24, 66
  487.             'Oui, et c'est le gauche
  488.                 IF Boutons = BtG THEN         
  489.                         SrCaracterASCI = 65                'Code ASCII de A 
  490.                         SrCoulCurseur = INT((14*RND)) + 1
  491.                         SrCoulFondCur = INT((15*RND))
  492.                         SrCurseur SrCaracterASCI, SrCoulCurseur, SrCoulFondCur
  493.                 END IF
  494.                         SrMarche               'Initialiser le nouveau curseur
  495.                         BtSrInit BtSrGauche    'Remise à zéro
  496.                 END IF
  497.             LOOP
  498.             SrStop     'Dé-initialiser l'accès souris et curseur invisible
  499.             END        'Quitter, le Bt droit ayant été clické
  500.  
  501.  
  502.             ###################################################################   
  503.  
  504.                                      CHAPITRE 3
  505.                                      ==========
  506.  
  507.  
  508.            MANIPULATION DE FICHIER
  509.            -----------------------
  510.           
  511.            Nota: A partir de ce chapitre, les déclarations des fonctions et
  512.                  routines dans les exemples de programmation ne seront plus
  513.                  systématiquement précisées.   Naturellement, elles devront
  514.                  toujours l'être dans vos programmes.   
  515.    
  516.            ********************************************************************
  517.  
  518.            FONCTION: Existe%
  519.  
  520.            OBJET:    Vérifier l'existence ou non d'un fichier
  521.  
  522.            APPEL:    Existe% NomFichier$               
  523.  
  524.                      (Exemple en fin de ce chapitre)
  525.  
  526.            ********************************************************************
  527.  
  528.            SUB:      Chercher
  529.  
  530.            OBJET:    Chercher dans un fichier textes (.TXT, .DOC, ...) une
  531.                      expression, un mot ...
  532.                
  533.                      (Chercher fournira l'emplacement où le mot a été trouvé et
  534.                       affichera la phrase dans laquelle il se trouve)    
  535.  
  536.            APPEL:    Chercher NomFichier$, MotATrouver$
  537.  
  538.                      Exemple:  Chercher "C:\DOS\LISEZMOI.TXT", "NOTES"    
  539.  
  540.            ********************************************************************
  541.  
  542.            SUB:      Dir
  543.  
  544.            OBJET:    Routine ressemblant "étrangement" à la fonction DIR du DOS
  545.  
  546.            APPEL:    Dir Extension$, CodeRecherche%, Col%
  547.  
  548.                       * Extension$ : Exemple : "*.EXE", "C:\DOS\*.COM", ...
  549.                       * CodeRecherche% :  0 affiche les nom et extension des
  550.                                             fichiers
  551.                                           1 idem que 0 + Heure, Date, le nombre
  552.                                             d'octets des fichiers     
  553.                       * Col% : Affichage à emplacement (colonne) déterminé
  554.  
  555.                      Exemple : Dir "*.EXE", 1, 25   
  556.  
  557.            ********************************************************************
  558.  
  559.            SUB:      CopieFich
  560.  
  561.            OBJET:    Copier des fichiers
  562.  
  563.            APPEL:    CopieFich Source$, Cible$
  564.  
  565.                      Exemple : CopieFich "C:\DOS\COMMAND.COM", "A:\COMMAND.COM"
  566.  
  567.            *******************************************************************
  568.  
  569.            FONCTION: Octet&
  570.  
  571.            OBJET:    Indiquer le nombre d'octets d'un fichier
  572.  
  573.            APPEL:    Octet& ("ExtFichier$")
  574.  
  575.                      Exemple : PRINT Octet& ("EXE")
  576.  
  577.            *******************************************************************
  578.  
  579.            SUB:      DonneAttribut
  580.  
  581.            OBJET:    Indiquer les attributs d'un fichier
  582.  
  583.            APPEL:    DonneAttribut Attribut%        
  584.  
  585.                      (Exemple en fin de ce chapitre)
  586.  
  587.            *******************************************************************
  588.  
  589.            SUB:      ModifAttribut
  590.  
  591.            OBJET:    Modifier les attributs d'un fichier
  592.  
  593.            APPEL:    ModifAttribut LireOuModif%, NomFichier$, Attribut%
  594.  
  595.                       * LireOuModif% : 0 pour Lire les attributs
  596.                                        1 pour Modifier les attributs 
  597.                       * NomFichier$ :  Nom du Fichier concerné
  598.                       * Attribut% :    Valeur en retour [0,32]
  599.                                           
  600.                                           0:  Normal
  601.                                           1:  Lire seulement
  602.                                           2:  Caché
  603.                                           4:  Système
  604.                                           32: Archive        
  605.  
  606.                                           Ces Valeurs pouvant s'additionner
  607.                      Exemple: 34  (2+32)  --> Caché et Archive        
  608.  
  609.                  (Exemple en fin de ce chapitre)
  610.  
  611.            *******************************************************************
  612.  
  613.                                  EXEMPLE DE PROGRAMMATION
  614.  
  615.            
  616.            NomFichier$ = "DIR.EXE"
  617.            NouveauAttribut% = 34
  618.            
  619.            IF Existe NomFichier$ THEN
  620.            
  621.                      ModifAttribut 0, NomFichier$, Attribut%
  622.  
  623.                      PRINT "Les attributs du Fichier "; NomFichier$; "sont : ";
  624.                      DonneAttribut Attribut%
  625.            
  626.                      ModifAttribut 1, NomFichier$, NouveauAttribut%
  627.  
  628.                      PRINT "Les nouveaux attributs sont maintenant ";
  629.                      ModifAttribut 0, NomFichier$, Attribut%
  630.                      DonneAttribut Attribut%                           
  631.  
  632.                ELSE     
  633.                      PRINT "Le fichier "; NomFichier$; " est introuvé ..."
  634.  
  635.            ENDIF
  636.  
  637.            ####################################################################
  638.  
  639.                                     CHAPITRE 4
  640.                                     ==========
  641.  
  642.  
  643.  
  644.           MANIPULATION DE CHAINES, NOMBRES, DATES
  645.           ---------------------------------------
  646.  
  647.  
  648.            SUB:      Reponse
  649.  
  650.            OBJET:    Accepter comme valeurs d'entrée, celles déterminées au
  651.                      préalable par le programmeur
  652.  
  653.            APPEL :   Reponse Valeurs$, Code%
  654.  
  655.                       * Valeurs$ : Valeurs d'entrée
  656.                       * Code% :    0 --> N'accepte que les concordances exactes
  657.                                    1 --> Majuscules ou Minuscules acceptées 
  658.  
  659.                                  EXEMPLE DE PROGRAMMATION
  660.  
  661.            CLS
  662.            LOCATE 10,10
  663.  
  664.            PRINT "Désirez-vous continuer (O/N) ";   ' (;) = IMPORTANT !!
  665.            Reponse "ONon", 0    [ou Reponse "ON", 1 ou Reponse "oN" ...]       
  666.                                          '(O,N,o,n) seront seules acceptées
  667.                                            sinon émission d'un Bip sonore   
  668.  
  669.            PRINT "Sexe Masculin ou Féminin (M/F) ";
  670.            Reponse "MF", 0               ' M et F acceptées, f et m refusées      
  671.            Reponse "MF", 1               ' M, F, f et m sont acceptées
  672.  
  673.            ********************************************************************
  674.  
  675.            FONCTION: Filtre$
  676.  
  677.            OBJET:    Ressortir d'une chaine les caractères désirés
  678.  
  679.            APPEL :   Filtre$ (Texte$, ChaineFiltre$)
  680.  
  681.                      Exemple : PRINT Filtre$ ("les oiseaux", "aeiouy")
  682.                                Sortie écran --> e oieau
  683.  
  684.            ********************************************************************
  685.  
  686.            FONCTION: EnlCar$
  687.  
  688.            OBJET:    Supprimer des caractères d'une chaine
  689.  
  690.            APPEL:    EnlCar$ (Texte$, CaractSupp$)
  691.  
  692.                      Exemple : PRINT EnlCar$ ("les oiseaux", "aeiouy")
  693.                                Sortie écran --> ls sx 
  694.                     
  695.            *******************************************************************
  696.  
  697.            FONCTION: EcriForma$
  698.  
  699.            OBJET:    Ecrire Chaine sous format prédéterminé
  700.  
  701.            APPEL:    EcriForma$ (Texte$, Format$)
  702.  
  703.                       * Format$ : Caractères reconnus [@, 0 à 9, #, *, |]
  704.  
  705.                      Exemple : PRINT EcriForma$ ("lesoiseaux", "### |@*01 29")
  706.                                Sortie écran --> les oisea ux
  707.  
  708.            ******************************************************************  
  709.  
  710.            FONCTION: CarForma$
  711.  
  712.            OBJET:    Variante de EcriForma$
  713.  
  714.            APPEL:    CarForma$ (Texte$, Format$)
  715.  
  716.                       * Format$: Tous les caractères sont utilisables
  717.  
  718.                      Exemple : PRINT CarForma$ ("lesoiseaux", "a#c!e,z")
  719.                                Sortie écran --> lesoise     
  720.  
  721.            ****************************************************************** 
  722.  
  723.            FONCTION: Alea
  724.  
  725.            OBJET:    Fournir un nombre entier aléatoire
  726.  
  727.            APPEL:    Alea (ValeurMaxi%)
  728.  
  729.                      Exemple : RANDOMIZE TIMER
  730.                                Alea (156) 
  731.                                Sortie écran --> un nbre compris entre [0,156]
  732.                                  
  733.            *******************************************************************
  734.  
  735.            SUB:      Tri
  736.  
  737.            OBJET:    Ranger par ordre croissant une série de nombres
  738.  
  739.            APPEL:    Tri Tableau(), Nombre
  740.  
  741.                                  EXEMPLE DE PROGRAMMATION  
  742.   
  743.           DECLARE FUNCTION Alea% (VlMaxi%) 
  744.           DECLARE SUB Tri (Tableau () AS SINGLE, Nombre AS INTEGER)
  745.           DEFINT A-Z
  746.  
  747.           ' Définition du Tableau
  748.           DIM Tableau (1 TO 10)
  749.  
  750.           CLS
  751.  
  752.           ' Attribution de 10 valeurs aléatoires 
  753.           FOR I% = 1 TO 10
  754.            Tableau (I%) = Alea (100)
  755.           NEXT I%
  756.  
  757.           ' Classement
  758.           Tri Tableau(), 10
  759.  
  760.           ' Sortie écran ordre croissant
  761.           FOR I% = 1 TO 10
  762.            PRINT Tableau (I%)
  763.           NEXT I%
  764.  
  765.           ' Sortie écran ordre décroissant
  766.           FOR I% = 10 TO 1 STEP -1
  767.            PRINT Tableau (I%)
  768.           NEXT I%
  769.  
  770.           END
  771.  
  772.           *********************************************************************
  773.               
  774.           FONCTION:  Coder
  775.  
  776.           OBJET:     Transformer une date en nombre
  777.  
  778.           APPEL:     Coder (Datee$)
  779.                      (Exemple dans Decoder)
  780.  
  781.           *********************************************************************
  782.  
  783.           FONCTION:  Decoder
  784.  
  785.           OBJET:     Routine inverse de Coder
  786.  
  787.           APPEL:     Decoder (Nbre%)  
  788.  
  789.                                  EXEMPLE DE PROGRAMMATION  
  790.  
  791.           DECLARE FUNCTION Coder (Datee$)
  792.           DECLARE FUNCTION Decoder (Nombre%)
  793.  
  794.           Datee$ = "311294"
  795.           PRINT Coder (Datee$)
  796.           PRINT Decoder (5579)   
  797.           END
  798.  
  799.           Sortie écran 
  800.  
  801.           5579
  802.           311294
  803.  
  804.           #####################################################################
  805.  
  806.                                      CHAPITRE 5  
  807.                                      ==========
  808.  
  809.  
  810.  
  811.          FONCTIONS GRAPHIQUES ET ASSIMILEES
  812.          ----------------------------------
  813.  
  814.  
  815.                   1) Fonctions graphiques (SCREEN 1 à 13)
  816.  
  817.  
  818.          IMPORTANT : L'utilisation des routines et fonctions suivantes néces-
  819.                      sitent IMPERATIVEMENT la définition d'un écran graphique
  820.                      (SCREEN 1 à 13) en raison pour certaines de l'accès direct
  821.                      au BIOS.
  822.                      A défaut, seul le Bouton RESET de l'ordinateur vous sera
  823.                      d'une grande utilité !! 
  824.  
  825.           ********************************************************************
  826.  
  827.           SUB:       Vue
  828.  
  829.           OBJET:     Affichage d'image au format binaire .BLD et .PLT
  830.                      [Utilisable uniquement en Mode SCREEN 13]
  831.  
  832.           APPEL:     Vue NomImage$
  833.  
  834.                      Exemple : SCREEN 13 : Vue "WBLIB"
  835.                                (Cf. EXEMPLE1.BAS)
  836.  
  837.           *********************************************************************
  838.                      
  839.           SUB:       Carre
  840.  
  841.           OBJET:     Fenêtres "explosives" avec encadrement, ombrage ...
  842.                      SCREEN [1,13]
  843.   
  844.           APPEL:     Carre X1%, X2%, Y1%, Y2%, Couleur1%, Remplissage%, -
  845.                            Couleur2%, Cadre%, Ombre%, CoulOmbre%, Explose% 
  846.  
  847.                       * X1%:           Point départ Supérieur Gauche 
  848.                                        SCREEN 12     Valeurs [0,639]  
  849.                       * X2%:           Point arrivée Supérieur Droit
  850.                                        idem que X1%,  mais X2% > X1%  
  851.                       * Y1%:           Point départ Inférieur Gauche
  852.                                        SCREEN 12     Valeurs [0,479]
  853.                       * Y2%:           Point arrivée Inférieur Droit
  854.                                        idem que Y1%,  mais Y2% > Y1%
  855.  
  856.                       * Couleur1% :    Couleur de remplissage de la fenêtre
  857.                                        Valeurs [0,15]
  858.  
  859.                       * Remplissage% : Valeurs [0,1]
  860.                                        0 --> Fenêtre vide
  861.                                        1 --> Fenêtre remplie par Couleur1%  
  862.  
  863.                       * Couleur2% :    Couleur du Cadre
  864.  
  865.                       * Cadre% :       Valeurs [0,2]
  866.                                        0 --> Aucun cadre
  867.                                        1 --> Cadre en ligne simple
  868.                                        2 --> Cadre en ligne double
  869.  
  870.                       * Ombre% :       Valeurs [0,4]
  871.                                        0 --> Pas d'ombrage
  872.                                        1 --> Ombrage, Gauche + Bas
  873.                                        2 --> Ombrage, Droit  + Bas
  874.                                        3 --> Ombrage, Gauche + Haut      
  875.                                        4 --> Ombrage, Droit  + Haut
  876.  
  877.                       * CoulOmbre% :   Valeurs [0,15]
  878.                                        Couleur de l'ombrage
  879.                    [Même si Ombre% = 0, une Valeur en CoulOmbre% est nécessaire] 
  880.                   
  881.                       * Explose% :     Valeurs [0,1]
  882.                                        0 --> Fenêtre non explosive
  883.                                        1 --> Fenêtre explosive 
  884.   
  885.                      Exemple : SCREEN 12
  886.                                Carre 0, 320, 0, 240, 14, 1, 4, 1, 2, 7, 1
  887.  
  888.                      Sortie écran --> Fenêtre jaune explosive
  889.                                       Cadre en ligne rouge et trait simple          
  890.                                       Ombrage, Droit + Bas, gris clair   
  891.                                       Quart Supérieur Gauche de l'écran.
  892.  
  893.           *********************************************************************
  894.                   
  895.           FONCTION:  Entrer$
  896.  
  897.           OBJET:     Entrer une chaine de caractères sur fond coloré
  898.                      [SCREEN 12 uniquement, l'emploi au préalable de la routine
  899.                       PAL 0, Coul2% étant fortement conseillée pour palier au
  900.                       manque de la fonction COLOR Coul1, Coul2 dans ce mode]
  901.  
  902.           APPEL:     Entrer$ (CoulEcriture%, ValMaxi%, Coul%, Fond%, Caract$, -
  903.                               ToucheEnter%)
  904.                       [Touches valides : ENTER & BACKSPACE (Retour en arrière)]    
  905.  
  906.                       * CoulEcriture% : Valeurs [0,15] 
  907.                                         Couleur d'affichage du texte à l'écran
  908.  
  909.                       * ValMaxi% :      Valeurs [1,80] (WIDTH 80)
  910.                                         Détermine la longueur maximum de la 
  911.                                         chaine de caractères à saisir
  912.  
  913.                       * Coul% :         Valeurs [0,15]
  914.                                         Couleur du Fond coloré avant entrée de
  915.                                         la chaine de caractères
  916.  
  917.                       * Fond% :         Valeurs [0,15]
  918.                                         Couleur du Fond coloré après entrée 
  919.                                         d'un caractère  
  920.  
  921.                       * Caractère$ :    Détermine les caractères acceptées lors
  922.                                         de la saisie écran 
  923.  
  924.                       * ToucheEnter% :  Détermine si l'emploi de la touche
  925.                                         ENTER est nécessaire ou non
  926.                                         0 --> Touche ENTER non valide
  927.                                         1 --> Touche ENTER nécessaire
  928.  
  929.  
  930.           =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 
  931.  
  932.           IMPORTANT : La fonte FOND.FNT est nécessaire au bon fonctionnement
  933.           =========   de la fonction ENTRER$.
  934.  
  935.           =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 
  936.  
  937.  
  938.                                  EXEMPLE DE PROGRAMMATION
  939.  
  940.  
  941.           SCREEN 12              ' Si oubli --> BONJOUR RESET !!
  942.           InitPal                ' Initialise Palette graphique
  943.           CrePal 14, 15, 57 ,31  ' Création d'une Palette et Modification de la
  944.                                    couleur jaune (14)
  945.           Pal 0, 1               ' Equivaut à COLOR Coul%, 1 qui n'existe pas
  946.                                    dans le mode SCREEN 12 !!
  947.           EfEcran 7              ' Efface l'écran en couleur grise 
  948.           Carre 40, 302, 105, 200, 1, 1, 14, 2, 2, 8, 0
  949.           LOCATE 10, 10   
  950.           PRINT "Nom: "
  951.           LOCATE 10, 18          ' Permet à la fonction Entrer$ de connaitre
  952.                                    l'emplacement exact du début d'affichage
  953.           Limit$ = "AZERTYUIOPQSDFGHJKLMWXCVBN "
  954.                                  ' Correspond aux seuls caractères que l'on
  955.                           pourra saisir à l'écran (Majuscules + Touche ESPACE) 
  956.  
  957.           Sortie$ = Entrer$ (14, 15, 11, 0, Limit$, 1) 
  958.                    
  959.           ' 14: Affichage des caractères saisis en Couleur 14 modifiée [CrePal]          
  960.                     
  961.           ' 15: 15 caractères maximum pourront être saisis
  962.  
  963.           ' 11: Fond BLEU PASTEL (longueur 15 caractères) 
  964.  
  965.           ' 0 : Après saisie du caractère, la couleur du Fond de ce caractère
  966.                 deviendra BLEU (Noir modifié en Bleu [PAL])
  967.  
  968.           ' Limit$ : Essayez de saisir "azert!#é..." --> Bip Sonore
  969.  
  970.           ' 1: L'utilisation de la touche ENTER sera nécessaire pour valider la
  971.                chaine de caractères saisis  
  972.  
  973.           LOCATE 25,1 
  974.           PRINT Sortie$
  975.           END                       (Cf. EXEMPLE4.BAS)
  976.  
  977.           *********************************************************************
  978.  
  979.           SUB:       EfEcran
  980.  
  981.           OBJET:     Effacer l'écran dans une couleur déterminée
  982.                      [SCREEN 12 principalement]
  983.  
  984.           APPEL:     EfEcran Couleur%    Valeurs [0,15]
  985.  
  986.                      Exemple : EfEcran 1   ' Couleur bleue           
  987.                     
  988.           ********************************************************************
  989.  
  990.           SUB:       EfEcran1
  991.  
  992.           OBJET:     Effacer l'écran dans une couleur déterminée
  993.                      SCREEN [1,13]
  994.           
  995.           APPEL:     EfEcran1 Couleur%   Valeurs [0,15]
  996.  
  997.           ********************************************************************
  998.  
  999.           SUB:       Effet
  1000.  
  1001.           OBJET:     Effacer l'écran avec effets spéciaux   
  1002.                      SCREEN [9,12] 
  1003.  
  1004.           APPEL:     Effet Valeur%, ModeEcran%
  1005.  
  1006.                       * Valeur% : Valeurs [1,12]
  1007.                                   12 effets à tester
  1008.  
  1009.                      Exemple : SCREEN 12        'SCREEN 9
  1010.                                PRINT "WBLIB Version 1.10 par BLAKE William"
  1011.                                Effet 1, 12      'Effet 1, 9
  1012.  
  1013.           ********************************************************************
  1014.  
  1015.           SUB:       ChargFont
  1016.  
  1017.           OBJET:     Chargement
  1018.  
  1019.                       - de la fonte CLAVIER.FNT pour utilisation avec la
  1020.                         routine DESSINE   (Dimension : 11445)
  1021.                       - des différentes fontes d'écriture pour utilisation de
  1022.                         la routine FONTE  (Dimension : 8614)
  1023.  
  1024.                      SCREEN [7,12], mais principalement pour le mode 12.
  1025.  
  1026.                      1) CLAVIER.FNT permet d'afficher les caractères ASCII de
  1027.                         33 à 140 et 150
  1028.  
  1029.                      2) Les autres fontes affichent uniquement les caractères
  1030.                         !"%&'()*+,-./0123456789:;<=>?ABCDEFGHIJKLMNOPQRSTUVWXYZ
  1031.                         [\]`
  1032.  
  1033.           APPEL:      ChargFont "CLAVIER.FNT", Tableau%()
  1034.  
  1035.                       Exemple : SCREEN 12         ' 7, 8 ou 9
  1036.  
  1037.                                 DIM F1% (11445)   ' Toujours 11445
  1038.                                 ChargFont "CLAVIER.FNT", F1%()
  1039.  
  1040.                                 DIM F2% (8614)    ' Toujours 8614
  1041.                                 ChargFont "FONTE1.FNT", F2%()   
  1042.                                 ... 
  1043.     
  1044.           ********************************************************************
  1045.  
  1046.           SUB:       Dessine
  1047.  
  1048.           OBJET:     Afficher un texte sur un fond coloré sans détruire le fond
  1049.                      SCREEN [7,12]    
  1050.  
  1051.           APPEL:     Dessine Texte$, X%, Y%, Orientation%, Font%(), Format%
  1052.  
  1053.                       * Texte$ :       Texte à afficher 
  1054.                       * X% :           SCREEN 12   Valeurs [0,639]
  1055.                       * Y% :           SCREEN 12   Valeurs [0,479]   
  1056.                       * Orientation% : Sens de l'écriture
  1057.                                        0 : de Gauche à Droite
  1058.                                        1 : de Droite à Gauche
  1059.                                        2 : de Haut en Bas
  1060.                                        3 : de Bas en Haut
  1061.                       * Font%() :      Le nom donné au tableau
  1062.                       * Format% :      Opérateur d'affichage
  1063.                                        0 : OR
  1064.                                        1 : PSET
  1065.                                        2 : XOR
  1066.  
  1067.                      Exemple : SCREEN 12
  1068.                                DIM F1% (11445)
  1069.                                ChargFont "CLAVIER.FNT", F1%()
  1070.                                Dessine "WBLIB", 50, 100, 0, F1%(), 2
  1071.                                ...                (Cf. EXEMPLE1.BAS)    
  1072.                                 
  1073.           ********************************************************************
  1074.  
  1075.           SUB:       Fonte
  1076.  
  1077.           OBJET:     Afficher une police d'écriture sur un fond coloré sans
  1078.                      détruire le fond
  1079.                      SCREEN [7,12]    
  1080.  
  1081.           APPEL:     Fonte Texte$, X%, Y%, EcartX%, EcartY%, Orientation%,-
  1082.                            Font%(), Format%
  1083.  
  1084.                       * Texte$ :       Texte à afficher 
  1085.                       * X% :           SCREEN 12   Valeurs [0,639]
  1086.                       * Y% :           SCREEN 12   Valeurs [0,479]   
  1087.                       * EcartX% :      Permet de modifier l'écartement sur X%
  1088.                       * EcartY% :      Permet de modifier l'écartement sur Y%
  1089.                       * Orientation% : Sens de l'écriture
  1090.                                        0 : de Gauche à Droite
  1091.                                        1 : de Droite à Gauche
  1092.                                        2 : de Haut en Bas
  1093.                                        3 : de Bas en Haut
  1094.                       * Font%() :      Le nom donné au tableau
  1095.                       * Format% :      Opérateur d'affichage
  1096.                                        0 : OR
  1097.                                        1 : PSET
  1098.                                        2 : XOR
  1099.  
  1100.                       Exemple : Cf. EXEMPLE6.BAS
  1101.  
  1102.           *********************************************************************
  1103.  
  1104.           SUB:       InitPal
  1105.  
  1106.           OBJET:     Initialiser la palette permettant d'utiliser les routines
  1107.                      suivantes : Pal, CrePal, Fondu, AnulPal
  1108.                      SCREEN [12,13]
  1109.  
  1110.           APPEL:     InitPal
  1111.  
  1112.           ********************************************************************
  1113.  
  1114.           SUB:       Pal
  1115.  
  1116.           OBJET:     Modifier une Palette
  1117.                      SCREEN [12,13]  
  1118.  
  1119.           APPEL:     Pal Coul1%, EnCoul2%         
  1120.  
  1121.                      Exemple : SCREEN 12
  1122.                                Pal 0, 1   ' Noir (0) devient Bleu (1)
  1123.                                (Cf. EXEMPLE1.BAS)     
  1124.  
  1125.           ******************************************************************** 
  1126.  
  1127.           SUB:       CrePal
  1128.  
  1129.           OBJET:     Créer une palette
  1130.                      SCREEN [12,13]
  1131.                      L'utilitaire CREPAL.EXE vous aidera dans la création de
  1132.                      palette
  1133.  
  1134.           APPEL:     CrePal Coul%, Bleu%, Vert%, Rouge%
  1135.                     
  1136.                       * Coul% :                Valeurs [0,15]
  1137.                       * Bleu%, Vert%, Rouge% : Valeurs [0,63]
  1138.                                                Modifier l'intensité des 3
  1139.                         couleurs (en %), afin de créer une nouvelle palette
  1140.  
  1141.                      Exemple: SCREEN 12
  1142.                                CrePal 15, 0, 0, 0   ' Modifie Blanc (15) en Noir
  1143.                                CrePal 0, 63, 63, 63 ' Modifie Noir (0) en Blanc
  1144.                                CrePal 1, 42, 0, 0   ' Modifie Bleu en lui-même
  1145.                                (Cf. EXEMPLE1.BAS)
  1146.  
  1147.           *********************************************************************
  1148.    
  1149.           SUB:       Fondu
  1150.  
  1151.           OBJET:     Faire un fondu de palettes
  1152.                      SCREEN [12,13]
  1153.  
  1154.           APPEL:     Fondu Coul%, AncBleu%, Bleu%, AncVert%, Vert%, AncRouge%,-
  1155.                            Rouge%
  1156.  
  1157.                       * Coul :     Valeurs [0,15]
  1158.                       * AncBleu% : Ancien % de Bleu
  1159.                       * Bleu% :    Nouveau % de Bleu désiré
  1160.                       * etc
  1161.  
  1162.                      Exemple : SCREEN 12
  1163.                                Fondu 0, 0, 47, 0, 35, 0, 22
  1164.                                'Superbe fondu de palette d'un écran noir en
  1165.                                 bleu ciel
  1166.                                (Cf. EXEMPLE1.BAS)
  1167.  
  1168.           *********************************************************************
  1169.    
  1170.           SUB:       Fondre
  1171.  
  1172.           OBJET:     Etablir un fondu progressif ou dégressif de l'écran
  1173.                      (possibilité d'exclure une couleur du fondu) 
  1174.                      SCREEN [12]
  1175.  
  1176.           APPEL:     Fondre B%(), V%(), R%(), FB%(), FV%(), FR%(), Objet%,-
  1177.                             Couleur%
  1178.  
  1179.                      * B%(), .., FB%() : Tableaux regroupant les codes couleurs                                           (Les valeurs sont obtenues par CREPAL)
  1180.                      * Objet%          : 0 --> Fondu Dégressif
  1181.                                          1 --> Fondu Progressif  
  1182.                      * Couleur%        : Couleur à exclure du Fondu
  1183.                                          Valeurs [0,15 ...]
  1184.                                          Si valeur > 15, aucune incidence 
  1185.  
  1186.                      Exemple : Cf. EXEMPLE5.BAS & EXEMPLE6.BAS
  1187.  
  1188.           ********************************************************************
  1189.        
  1190.           SUB:       AnulPal
  1191.  
  1192.           OBJET:     Annuler toute palette créée (CGA, EGA, VGA)
  1193.                      SCREEN [1,13]
  1194.  
  1195.           APPEL:     AnulPal  
  1196.  
  1197.           ********************************************************************   
  1198.  
  1199.           SUB:       InitPalEga
  1200.  
  1201.           OBJET:     Initialiser palette EGA pour utilisation de la routine
  1202.                      PalEga (SCREEN [7,9])
  1203.  
  1204.           APPEL:     InitPalEga
  1205.  
  1206.           ********************************************************************
  1207.  
  1208.           SUB:       PalEga
  1209.  
  1210.           OBJET:     Effet de rotation de couleur en EGA   
  1211.                      SCREEN [7,9]
  1212.  
  1213.           APPEL:     PalEga  
  1214.  
  1215.                      Exemple :  SCREEN 9
  1216.                                 DO
  1217.                                 PalEga
  1218.                                 LOOP UNTIL INKEY$ <> ""
  1219.  
  1220.           ********************************************************************
  1221.  
  1222.           SUB:       InitPalVga, PalVga
  1223.  
  1224.           OBJET:     Idem que InitPalEga et PalEga, mais pour les modes 12 & 13
  1225.  
  1226.           ********************************************************************
  1227.  
  1228.           SUB:       Rotation
  1229.  
  1230.           OBJET:     Effet de rotation de couleur en EGA et VGA
  1231.                      SCREEN [9,12]      
  1232.  
  1233.           APPEL:     Rotation Valeur%, ModeEcran% 
  1234.  
  1235.                       * Valeur% : Valeurs entre [1,5]
  1236.                                   5 effets à tester
  1237.  
  1238.                      Exemple : SCREEN 12
  1239.                                LINE (10,15)-(250,500),1,BF
  1240.                                Rotation 1, 12
  1241.  
  1242.           ********************************************************************
  1243.  
  1244.           SUB:       GDefil
  1245.  
  1246.           OBJET:     Faire défiler du texte à l'écran
  1247.                      SCREEN [7,13]
  1248.  
  1249.           APPEL:     GDefil X1%, X2%, Y1%, Y2%, Saut%, Sens%, Coul%, Texte$
  1250.  
  1251.                       * X1% :    Valeurs entre [1,80]  (WIDTH 80)    
  1252.                       * X2% :    Idem que X1%, mais X2% > X1%
  1253.                       * Y1% :    Valeurs entre [1,60]  (SCREEN 12)
  1254.                                                [1,53]  (SCREEN 9)
  1255.                                                ...
  1256.                       * Y2% :    Idem que Y1%, mais Y2% > Y1%
  1257.                       * Saut% :  Nombre de Lignes à sauter
  1258.                       * Sens% :   1 --> de Bas en Haut
  1259.                                  -1 --> de Haut en Bas
  1260.                       * Coul% :  Couleur d'écriture
  1261.                       * Texte$ : Texte à afficher
  1262.  
  1263.                      Exemple : Cf. EXEMPLE1.BAS
  1264.  
  1265.           *********************************************************************
  1266.  
  1267.           FONCTION:  GMenuV
  1268.  
  1269.           OBJET:     Menu de sélection vertical  
  1270.                      (SCREEN 12 Uniquement) 
  1271.                      [Souris Optionnelle - Validation Bouton Droit]
  1272.  
  1273.           APPEL:     GMenuV NomFich$(), NbreEntree%, Colone%, Rang%, ClNom%, -
  1274.                             Fond%, NFich%, Marque%, Cadre%, Ombre%, Tour%, -
  1275.                             Titre$, Blanc%
  1276.  
  1277.                       * NomFich$() :  Tableau comportant les rubriques de
  1278.                                       sélection
  1279.                                       Exemple : NomFich$(1) = "1) Backup "
  1280.                                                 NomFich$(2) = "2) Restore" 
  1281.                                                 ...   
  1282.                       * NbreEntree% : Nbre de rubriques de sélection
  1283.                                       Dans l'exemple précédent = 2
  1284.                       * Colone% :     Emplacement d'affichage [1,60]  SCREEN 12
  1285.                       * Rang% :       Emplacement d'affichage [1,80]  WIDTH 80
  1286.                                       Valeurs des couleurs [0,15]  
  1287.                       * ClNom% :      Couleur des rubriques de sélection
  1288.                       * Fond% :       Couleur du Fond
  1289.                       * NFich% :      Couleur de 1ère lettre des Rub de Sélect
  1290.                       * Marque% :     Couleur du curseur rotatif
  1291.                       * Cadre% :      Valeurs entre [0,2]
  1292.                                       0 --> Pas de cadre
  1293.                                       1 --> Cadre en trait simple
  1294.                                       2 --> Cadre en trait double
  1295.                       * Ombre% :      Ombrage, Valeurs entre [0,4]
  1296.                       * Tour% :       Couleur du cadre
  1297.                       * Titre$ :      Non disponible dans cette version --> ""
  1298.                       * Blanc% :      Valeur permettant d'élargir le cadre
  1299.  
  1300.                     Exemple : Cf. EXEMPLE4.BAS
  1301.  
  1302.           *********************************************************************
  1303.  
  1304.  
  1305.                    2) Fonctions graphiques en Mode Textes (SCREEN 0) 
  1306.  
  1307.  
  1308.  
  1309.          IMPORTANT : Les routines et fonctions suivantes ne fonctionnent qu'en
  1310.                      mode Texte SCREEN 0.
  1311.                      Ne pas tenter de les utiliser en mode graphique, sinon
  1312.                      notre ami le RESET reprendra du service !! 
  1313.  
  1314.           *********************************************************************
  1315.  
  1316.           FONCTION:  TEntrer$
  1317.  
  1318.           OBJET:     Entrer une chaine de caractères sur fond coloré
  1319.                      [SCREEN 0 uniquement, Fonction identique à Entrer$]
  1320.  
  1321.           APPEL:     TEntrer$ (CoulEcriture%, ValMaxi%, Coul%, Fond%, Caract$,-
  1322.                               ToucheEnter%)
  1323.                       [Touches valides : ENTER & BACKSPACE (Retour en arrière)]    
  1324.  
  1325.                       * CoulEcriture% : Valeurs [0,15] 
  1326.                                         Couleur d'affichage du texte à l'écran
  1327.  
  1328.                       * ValMaxi% :      Valeurs [1,80] (WIDTH 80)
  1329.                                         Détermine la longueur maximum de la 
  1330.                                         chaine de caractères à saisir
  1331.  
  1332.                       * Coul% :         Valeurs [0,15]
  1333.                                         Couleur du Fond coloré avant entrée de
  1334.                                         la chaine de caractères
  1335.  
  1336.                       * Fond% :         Valeurs [0,15]
  1337.                                         Couleur du Fond coloré après entrée 
  1338.                                         d'un caractère  
  1339.  
  1340.                       * Caractère$ :    Détermine les caractères acceptées lors
  1341.                                         de la saisie écran 
  1342.  
  1343.                       * ToucheEnter% :  Détermine si l'emploi de la touche
  1344.                                         ENTER est nécessaire ou non
  1345.                                         0 --> Touche ENTER non valide
  1346.                                         1 --> Touche ENTER nécessaire
  1347.  
  1348.           *********************************************************************
  1349.  
  1350.           SUB:       Ecran 
  1351.  
  1352.           OBJET:     Effacer l'écran avec un caractère ASCII déterminé
  1353.  
  1354.           APPEL:     Ecran Coul%, Fond%, CaracASCII%
  1355.  
  1356.                       * Coul% :       Valeurs entre [0,15]
  1357.                                       Couleur du caractère
  1358.                       * Fond% :       Couleur de fond du caractère
  1359.                       * CaracASCII% : Valeurs entre [1,255]
  1360.  
  1361.                      Exemple :  SCREEN 0
  1362.                                 Ecran 10, 15, 219
  1363.  
  1364.           *********************************************************************
  1365.  
  1366.           SUB:       Ligne25
  1367.  
  1368.           OBJET:     Afficher un message en Ligne 25 dans une couleur
  1369.                      déterminée
  1370.  
  1371.           APPEL:     Ligne25 Message$, Coul%
  1372.  
  1373.           *********************************************************************
  1374.  
  1375.           SUB:       Ecrit
  1376.  
  1377.           OBJET:     Afficher un message à un emplacement déterminé, dans une
  1378.                      couleur déterminée et sur un fond coloré
  1379.  
  1380.           APPEL:     Ecrit Message$, Rang%, Colone%, CoulEcri%, CoulFond%
  1381.  
  1382.           ********************************************************************
  1383.  
  1384.           SUB:       Fenetre
  1385.  
  1386.           OBJET:     Fenêtre "explosive" avec cadre, ombrage et titre
  1387.                      [SCREEN 0: Rappel] 
  1388.  
  1389.           APPEL:     Fenetre X1%, X2%, Y1%, Y2%, Cadre%, Fond%, CoulCadre%, -
  1390.                              Explose%, Ombre%, CoulOmbre%, Titre$  
  1391.  
  1392.                       * X1% :        Valeurs entre [1,80]  (WIDTH 80)
  1393.                       * X2% :        Idem que X1%, mais X2% > X1%
  1394.                       * Y1% :        Valeurs entre [1,25]
  1395.                       * Y2% :        Idem que Y1%, mais Y2% > Y1% 
  1396.                       * cadre% :     Valeurs entre [0,2]
  1397.                                       0 --> Pas de cadre
  1398.                                       1 --> Cadre en trait simple
  1399.                                       2 --> Cadre en trait double
  1400.                       * Fond% :      Couleur du Fond
  1401.                       * CoulCadre% : Couleur du Cadre
  1402.                       * Explose% :    0 --> Non explosive
  1403.                                       1 --> Explosive
  1404.                       * Ombre% :      0 --> Pas d'ombrage
  1405.                                       1 --> Ombrage, Gauche + Bas
  1406.                                       2 --> Ombrage, Droit  + Bas
  1407.                       * CoulOmbre% : Couleur de l'ombrage
  1408.                       * Titre$ :     Titre sur Ligne supérieure
  1409.  
  1410.                      Exemple : Cf. EXEMPLE3.BAS
  1411.  
  1412.           *********************************************************************
  1413.  
  1414.           SUB:       Defil
  1415.  
  1416.           OBJET:     Faire défiler du texte à l'écran
  1417.  
  1418.           APPEL:     Defil X1%, X2%,Y1%, Y2%, Saut%, Sens%, Coul%, Fond%, Texte$
  1419.  
  1420.                       * X1% :    Valeurs entre [1,80]  (WIDTH 80)    
  1421.                       * X2% :    Idem que X1%, mais X2% > X1%
  1422.                       * Y1% :    Valeurs entre [1,25]                                              
  1423.                       * Y2% :    Idem que Y1%, mais Y2% > Y1%
  1424.  
  1425.                       * Saut% :  Nombre de Lignes à sauter
  1426.  
  1427.                       * Sens% :   1 --> de Bas en Haut
  1428.                                  -1 --> de Haut en Bas
  1429.  
  1430.                       * Coul% :  Couleur caractère
  1431.                       * Fond% :  Couleur du fond du caractère
  1432.  
  1433.                       * Texte$ : Texte à afficher
  1434.  
  1435.                      Exemple : Cf. EXEMPLE3.BAS
  1436.  
  1437.           *********************************************************************
  1438.                        
  1439.           FONCTION:  MenuV
  1440.  
  1441.           OBJET:     Menu de sélection vertical  
  1442.                      [Souris Optionnelle - Validation Bouton Droit]
  1443.  
  1444.           APPEL:     MenuV NomFich$(), NbreEntree%, Colone%, Rang%, ClNom%, -
  1445.                             Fond%, NFich%, NomMarque%, Marque%, Cadre%, -
  1446.                             Ombre%, Tour%, Titre$, Blanc%
  1447.  
  1448.                       * NomFich$() :  Tableau comportant les rubriques de
  1449.                                       sélection
  1450.                                       Exemple : NomFich$(1) = " 1) Backup  "
  1451.                                                 NomFich$(2) = " 2) Restore " 
  1452.                                                 NomFich$(3) = " 3) Quitter "
  1453.                                                 ...   
  1454.                       * NbreEntree% : Nbre de rubriques de sélection
  1455.                                       Dans l'exemple précédent = 3
  1456.                       * Colone% :     Emplacement d'affichage [1,60]  SCREEN 12
  1457.                       * Rang% :       Emplacement d'affichage [1,80]  WIDTH 80
  1458.                                       Valeurs des couleurs [0,15]  
  1459.                       * ClNom% :      Couleur des rubriques de sélection
  1460.                       * Fond% :       Couleur du Fond
  1461.                       * NFich% :      Couleur de 1ère lettre des Rub de Sélect
  1462.                       * NomMarque :   Couleur du texte sélectionné  
  1463.                       * Marque% :     Couleur du curseur rotatif
  1464.                                       [Souris ou Flêches de déplacement] 
  1465.                       * Cadre% :      Valeurs entre [0,2]
  1466.                                        0 --> Pas de cadre
  1467.                                        1 --> Cadre en trait simple
  1468.                                        2 --> Cadre en trait double
  1469.                       * Ombre% :      Ombrage, Valeurs entre [0,2]
  1470.                       * Tour% :       Couleur du cadre
  1471.                       * Titre$ :      Insertion d'un texte sur ligne supérieure
  1472.                                       du cadre      
  1473.                       * Blanc% :      Valeur permettant d'élargir le cadre par
  1474.                                       la gauche et la droite
  1475.  
  1476.                     Exemple : Cf. EXEMPLE3.BAS
  1477.  
  1478.           *********************************************************************
  1479.  
  1480.           FONCTION:  MenuH
  1481.  
  1482.           OBJET:     Menu de sélection horizontal  
  1483.                      [Souris Optionnelle - Validation Bouton Droit]
  1484.  
  1485.           APPEL:     MenuH LigneMenu$, Position%, MenuFd%, MenuEc%, TailleM%, -
  1486.                            NbreMenu%, MaxiTaille%(), MaxiEntre%(), Entree$(), -
  1487.                            SelMenu%, SelEntr%, Bruit%
  1488.  
  1489.                       * Touche de Sortie : ECHAPPEMENT [ESCAPE] --> retourne la
  1490.                                            valeur -1 à SelEntr%   
  1491.  
  1492.                       <----TailleM%----->     
  1493.                      ┌───────────────────┬─────────────────────────────────┐
  1494.         LigneMenu$ = │ Choix Principal 1 │  Choix Principal 2 ...          │
  1495.                      ├───────────────────┼─────────────────────────────────┘
  1496.                      │    Sous Menu 1    │<----- MaxiEntre% (1) = 4 
  1497.                      │    Sous Menu 2    │       (Sous-Menu 1 à 4)
  1498.           MenuFd% ---┼->  Sous Menu 3    │
  1499.           MenuEc% ---┼--->Sous Menu 4    │
  1500.                      └───────────────────┘
  1501.  
  1502.           Entree$ (1,1) = " Sous Menu 1 "      
  1503.           Entree$ (1,2) = " Sous Menu 2 ", etc   [SelMenu% = 1, SelEntr% = 2]
  1504.  
  1505.  
  1506.                       * LigneMenu$ :  Choix Principaux           
  1507.                       * Position% :   Ligne de positionnement à l'écran de
  1508.                                       LigneMenu$
  1509.                       * MenuFd% :     Couleur du fond     [0,15]
  1510.                       * MenuEc% :     Couleur des écrits  [0,15] 
  1511.                       * TailleM% :    Taille du surlignement (en caractères)
  1512.                                       lors du déplacement du curseur pour les
  1513.                                       Choix Principaux     [Souris ou Flêches]
  1514.                       * NbreMenu% :   Nombre de Choix Principaux (Dans Exemple
  1515.                                       serait égal à 2 [Ch. Principal 1 et 2])
  1516.                       * MaxiTaille% : Tableau non disponible dans cette version
  1517.                                       Néanmoins, un dimensionnement aléatoire
  1518.                                       doit être effectué (Cf. EXEMPLE3.BAS)
  1519.                       * MaxiEntre% :  Tableau indiquant au programme le nombre
  1520.                                       de sous-menus par Choix Principaux  
  1521.                       * Entree$ :     Tableau indiquant les différents choix
  1522.                                       des sous-menus
  1523.                       * SelMenu% :    Valeur retournée par le programme et 
  1524.                                       représentant la valeur abscisse du
  1525.                                       Tableau Entree$ ()
  1526.                       * SelEntr% :    Valeur retournée par le programme et
  1527.                                       représentant la valeur ordonnée du
  1528.                                       Tableau Entree$ ()
  1529.                       * Bruit% :       0 --> Pas de Bip
  1530.                                        1 --> Bip sonore
  1531.  
  1532.                      Se reporter à EXEMPLE3.BAS pour un exemple concret 
  1533.  
  1534.           #####################################################################
  1535.  
  1536.                                      CHAPITRE 6  
  1537.                                      ==========
  1538.  
  1539.  
  1540.  
  1541.          GESTION DE LA VIDEO
  1542.          -------------------
  1543.    
  1544.           *********************************************************************
  1545.  
  1546.           SUB:       ImpEc
  1547.  
  1548.           OBJET:     Impression de l'écran sur une imprimante
  1549.                      [SCREEN 0 Uniquement]
  1550.  
  1551.           APPEL:     ImpEc
  1552.  
  1553.           *********************************************************************
  1554.  
  1555.           SUB:       Boite
  1556.  
  1557.           OBJET:     Représenter un encadrement à l'écran
  1558.                      SCREEN [0,13]
  1559.  
  1560.           APPEL:     Boite X1%, X2%, Y1%, Y2%, Coul%, Tour%
  1561.  
  1562.                       * X1% : Valeur entre 1 et 80   (WIDTH 80)
  1563.                       * X2% : Valeur entre 1 et 80   avec X2% > X1%  
  1564.                       * Y1% : Valeur entre 1 et 60   [SCREEN 12]
  1565.                       * Y2% : Valeur entre 1 et 60   avec Y2% > Y1%
  1566.         
  1567.                       * Coul%: Couleur de l'encadrement [0,15]
  1568.  
  1569.                       * Tour%: Valeurs entre [1,2]
  1570.                                1 --> Trait simple
  1571.                                2 --> Trait double 
  1572.  
  1573.           ********************************************************************
  1574.  
  1575.           SUB:       Entete
  1576.  
  1577.           OBJET:     Afficher un texte centré sur la première ligne de l'écran
  1578.                      SCREEN [0,13]
  1579.  
  1580.           APPEL:     Entete Texte$
  1581.  
  1582.           ********************************************************************   
  1583.           SUB:       Centre
  1584.  
  1585.           OBJET:     Afficher un texte centré sur une ligne déterminée
  1586.                      SCREEN [0,13]
  1587.  
  1588.           APPEL:     Centre Rang%, Texte$ 
  1589.  
  1590.           ********************************************************************  
  1591.           SUB:       Efface
  1592.  
  1593.           OBJET:     Effacer une partie de l'écran
  1594.                      SCREEN [0,13]
  1595.  
  1596.           APPEL:     Effacer DebLigne%, FinLigne%, DebCol%, FinCol%, Caract%,-
  1597.                      Coul%
  1598.  
  1599.                       * Caract%: Code ASCII du caractère désiré
  1600.  
  1601.                       Exemple : Effacer 1, 10 , 5, 12, 219, 12
  1602.                                 
  1603.                                 CHR$(219) = █   
  1604.        
  1605.           ********************************************************************            
  1606.           SUB:       Glisser
  1607.  
  1608.           OBJET:     Afficher un texte à l'écran en le faisant bouger de 
  1609.                      droite à gauche     
  1610.                      SCREEN [0,13]
  1611.  
  1612.           APPEL:     Glisser Texte$, Retard!, Rang%, Col%, Coul1%, Coul2%,-
  1613.                      Mode%
  1614.  
  1615.                      Exemple : Mode = 12
  1616.                                SCREEN Mode
  1617.                            Texte$ = "Tapez une touche ... "
  1618.                                InitPal
  1619.                                Pal 0, 11              
  1620.                                Glisser Texte$, .1, 15, 20, 14, 0, Mode
  1621.  
  1622.           ********************************************************************  
  1623.           SUB:       ImpMessage
  1624.  
  1625.           OBJET:     Afficher un message à l'écran en effacant jusqu'à la fin
  1626.                      de la ligne     
  1627.                      SCREEN [0,13]
  1628.  
  1629.           APPEL:     ImpMessage PosX%, PosY%, Texte$
  1630.  
  1631.                       * PosX% : Valeur entre 1 et 80   (WIDTH 80)
  1632.                       * PosY% : Valeur entre 1 et 60   [SCREEN 12]
  1633.  
  1634.           ********************************************************************  
  1635.           SUB:       Verif
  1636.  
  1637.           OBJET:     Déterminer la résolution maximale d'affichage (CGA à VGA,
  1638.                      MONO et HERCULES) et le nombre de lignes Maximum que
  1639.                      l'écran peut afficher
  1640.  
  1641.                      SOURCE à inclure dans votre programme        
  1642.                      SCREEN [0,13]
  1643.  
  1644.           APPEL:     Verif Valeur$
  1645.  
  1646.                       * Valeur$ : Valeurs entre [0,13] + [99]
  1647.  
  1648.                      Exemple : Verif 9 --> Contrôle si l'écran peut afficher                                    une résolution en EGA, à défaut Verif testera
  1649.                                la résolution inférieure                          
  1650.                                Verif 99 --> Rechercher la meilleure
  1651.                                résolution
  1652.  
  1653.                      (Cf. EXEMPLE1.BAS)
  1654.  
  1655.           ********************************************************************  
  1656.  
  1657.           FONCTION:  NoirBlanc%
  1658.  
  1659.           OBJET:     Tester si l'écran supporte ou non la couleur
  1660.                      SCREEN [0,13]
  1661.  
  1662.           APPEL:     NoirBlanc% 
  1663.  
  1664.                      Exemple : IF NoirBlanc% THEN
  1665.                                      PRINT "Ecran Monochrome"
  1666.                                  ELSE            
  1667.                                      PRINT "Ecran Couleur"
  1668.                                ENDIF
  1669.  
  1670.           ********************************************************************  
  1671.  
  1672.           SUB:       SV9, SV12, SV13
  1673.  
  1674.           OBJET:     Sauver un écran graphique sur support (C:, Disquette)
  1675.                      dans le mode approprié       
  1676.                      SCREEN [9,13]
  1677.  
  1678.           APPEL:     SV# "IMAGE.###"
  1679.  
  1680.           *******************************************************************
  1681.  
  1682.           SUB:       CH9, CH12, CH13
  1683.  
  1684.           OBJET:     Charger un écran graphique dans le mode approprié       
  1685.                      SCREEN [9,13]
  1686.  
  1687.           APPEL:     CH# "IMAGE.###"
  1688.  
  1689.           *******************************************************************
  1690.  
  1691.           SUB:       Sauve
  1692.  
  1693.           OBJET:     Sauver un écran Textes sur support dans le mode approprié                        [SCREEN 0 Uniquement]
  1694.         
  1695.           APPEL:     Sauve "IMAGE.###"
  1696.  
  1697.           *******************************************************************
  1698.  
  1699.           SUB:       Charge
  1700.  
  1701.           OBJET:     Charger un écran Textes dans le mode approprié                                   [SCREEN 0 Uniquement]
  1702.         
  1703.           APPEL:     Charge "IMAGE.###"
  1704.  
  1705.           *******************************************************************
  1706.  
  1707.           SUB:       Prendre
  1708.  
  1709.           OBJET:     Placer un écran Textes en mémoire                                                [SCREEN 0 Uniquement]
  1710.         
  1711.           APPEL:     Prendre Tableau% ()
  1712.  
  1713.           *******************************************************************
  1714.  
  1715.           SUB:       Rendre
  1716.  
  1717.           OBJET:     Afficher un écran Textes mis en mémoire par Prendre                              [SCREEN 0 Uniquement]
  1718.         
  1719.           APPEL:     Rendre Tableau% ()
  1720.  
  1721.                      Exemple : SCREEN 0
  1722.                                DIM Ecran% (2000)
  1723.                                CLS
  1724.                                FOR I% = 1 TO 100
  1725.                                PRINT "Essai Sauvegarde écran";
  1726.                                NEXT I%
  1727.                                Prendre Ecran% ()
  1728.                                CLS
  1729.                                PRINT "Tapez une Touche ..."       
  1730.                                Clef
  1731.                                Rendre Ecran% ()
  1732.                                END        
  1733.             
  1734.           #####################################################################
  1735.  
  1736.                                      CHAPITRE 7
  1737.                                      ==========
  1738.  
  1739.  
  1740.  
  1741.          GESTION DU CLAVIER
  1742.          ------------------
  1743.    
  1744.           *********************************************************************
  1745.  
  1746.           SUB:       CursVis
  1747.  
  1748.           OBJET:     Rendre le curseur visible                                                        [SCREEN 0 Uniquement]
  1749.         
  1750.           APPEL:     CursVis
  1751.  
  1752.           *******************************************************************
  1753.  
  1754.           SUB:       CursInv
  1755.  
  1756.           OBJET:     Rendre le curseur invisible                                                      [SCREEN 0 Uniquement]
  1757.         
  1758.           APPEL:     CursInv
  1759.  
  1760.           *******************************************************************
  1761.  
  1762.           SUB:       CursEf
  1763.  
  1764.           OBJET:     Effacer la ligne à partir du curseur                                             SCREEN [0,13]
  1765.         
  1766.           APPEL:     CursEf
  1767.  
  1768.           *******************************************************************
  1769.  
  1770.           SUB:       PasBouger
  1771.  
  1772.           OBJET:     Afficher un texte à l'endroit désiré sans bouger le
  1773.                      curseur de place
  1774.                      SCREEN [0,13]
  1775.         
  1776.           APPEL:     PasBouger Texte$, Ligne%, Col%
  1777.  
  1778.           *******************************************************************
  1779.  
  1780.           SUB:       Clef
  1781.  
  1782.           OBJET:     Attendre la pression d'une touche pour poursuivre le 
  1783.                      programme avec émission d'un Bip sonore
  1784.                      SCREEN [0,13]
  1785.         
  1786.           APPEL:     Clef
  1787.  
  1788.           *******************************************************************
  1789.  
  1790.           SUB:       Numon, Majon, Scrollon, Touchon
  1791.  
  1792.           OBJET:     Activer les Numériques, Majuscules, Scroll, et les trois
  1793.                      ensembles
  1794.                      SCREEN [0,13]
  1795.         
  1796.           APPEL:     Numon, Majon, Scrollon, Touchon
  1797.  
  1798.           *******************************************************************
  1799.   
  1800.           SUB:       Numoff, Majoff, Scroloff, Touchoff
  1801.  
  1802.           OBJET:     Dé-Activer les Numériques, Majuscules, Scroll, et les
  1803.                      trois ensembles
  1804.                      SCREEN [0,13]
  1805.         
  1806.           APPEL:     Numoff, Majoff, Scroloff, Touchoff
  1807.  
  1808.           *******************************************************************
  1809.  
  1810.           FONCTION:  Dentree
  1811.  
  1812.           OBJET:     Controler le paramètre d'entrée lors du lancement du
  1813.                      programme par l'utilisateur          
  1814.                      SCREEN [0,13]
  1815.         
  1816.           APPEL:     Dentree Entree$
  1817.  
  1818.                      Exemple : IF Dentree "MOTDEPASSE" THEN
  1819.                                   PRINT " Accés autorisé !"
  1820.                                 ELSE
  1821.                                   PRINT " Accés au programme refusé !"       
  1822.                                   PRINT " Ré-initialisation du système dans 
  1823.                                           3 secondes ..."
  1824.                                   Delai 3
  1825.                                   Bouter
  1826.                         
  1827.                      Pour avoir l'accès, l'utilisateur doit lancer votre
  1828.                      programme du DOS en tapant :
  1829.  
  1830.                      NOMDUPROGRAMME (.EXE [facultatif]) MOTDEPASSE    
  1831.  
  1832.           *******************************************************************
  1833.  
  1834.           FONCTION:  Commande
  1835.  
  1836.           OBJET:     Controler les paramètres d'entrée lors du lancement du
  1837.                      programme par l'utilisateur         
  1838.                      SCREEN [0,13]
  1839.         
  1840.           APPEL:     Commande Parametre$
  1841.  
  1842.                      Exemple : IF Commande "AIDE" THEN
  1843.                                   PRINT "Vous avez demandé l'aide "
  1844.                                   GOSUB ...
  1845.                                ENDIF
  1846.  
  1847.                                IF Commande "NB"
  1848.                                   PRINT "Version en Noir et Blanc "       
  1849.                                   GOSUB ...
  1850.                                ENDIF
  1851.  
  1852.                                IF Commande "CL"
  1853.                                   PRINT "Version en Couleur "       
  1854.                                   GOSUB ...
  1855.                                ENDIF
  1856.                                ...
  1857.  
  1858.                      Si l'utilisateur tape à la ligne DOS :
  1859.  
  1860.                      NOMDUPROGRAMME (.EXE [facultatif]) AIDE CL
  1861.  
  1862.                      --> Sortie écran :
  1863.                                         Vous avez demandé l'aide
  1864.                                         Version en Couleur
  1865.                                         ...  
  1866.     
  1867.           *******************************************************************
  1868.  
  1869.           SUB:       Clavier
  1870.  
  1871.           OBJET:     Modifier les vitesses d'affichage et de répétition des
  1872.                      touches du clavier      
  1873.                      SCREEN [0,13]
  1874.         
  1875.           APPEL:     Clavier Valeur$
  1876.  
  1877.                       * Valeur$ : [A,D] et [0,31]
  1878.  
  1879.                      Exemple : Clavier "A 31"
  1880.                                 --> Affichage sans retard
  1881.                                     Répétition très lente      
  1882.             
  1883.                                Clavier "D 0"
  1884.                                 --> Affichage avec retard important
  1885.                                     Répétition immédiate  (normale)     
  1886.  
  1887.           #####################################################################
  1888.  
  1889.                                      CHAPITRE 8
  1890.                                      ==========
  1891.  
  1892.  
  1893.  
  1894.          GESTION DE LA MEMOIRE
  1895.          ---------------------
  1896.    
  1897.           *********************************************************************
  1898.  
  1899.           FONCTION:  MemBase
  1900.  
  1901.           OBJET:     Indiquer la mémoire conventionnelle disponible
  1902.                      SCREEN [0,13]
  1903.         
  1904.           APPEL:     MemBase
  1905.  
  1906.                      (Cf. EXEMPLE2.BAS)   
  1907.  
  1908.           *******************************************************************
  1909.  
  1910.           FONCTION:  EmsExiste
  1911.  
  1912.           OBJET:     Indiquer si mémoire EMS disponible (avec Codes d'erreur)
  1913.                      SCREEN [0,13]
  1914.         
  1915.           APPEL:     EmsExiste
  1916.  
  1917.                      (Cf. EXEMPLE2.BAS)   
  1918.  
  1919.           *******************************************************************
  1920.  
  1921.           FONCTION:  EmsVersion
  1922.  
  1923.           OBJET:     Indiquer, si disponible, la version du DRIVER EMS
  1924.                      SCREEN [0,13]
  1925.         
  1926.           APPEL:     EmsVersion
  1927.  
  1928.                      (Cf. EXEMPLE2.BAS)   
  1929.  
  1930.           *******************************************************************
  1931.  
  1932.           FONCTION:  TotalPage
  1933.  
  1934.           OBJET:     Indiquer le nombre total de pages Mémoire
  1935.                      SCREEN [0,13]
  1936.         
  1937.           APPEL:     TotalPage
  1938.  
  1939.                      (Cf. EXEMPLE2.BAS)   
  1940.  
  1941.           *******************************************************************
  1942.  
  1943.           FONCTION:  PageDispo
  1944.  
  1945.           OBJET:     Indiquer le nombre de pages mémoire disponibles
  1946.                      SCREEN [0,13]
  1947.         
  1948.           APPEL:     PageDispo
  1949.  
  1950.                      (Cf. EXEMPLE2.BAS)   
  1951.  
  1952.           *******************************************************************
  1953.  
  1954.           FONCTION:  SegCadPage
  1955.  
  1956.           OBJET:     Indiquer le début du Segment de Cadre de Page
  1957.                      SCREEN [0,13]
  1958.         
  1959.           APPEL:     SegCadPage
  1960.  
  1961.                      (Cf. EXEMPLE2.BAS)   
  1962.  
  1963.           *******************************************************************
  1964.  
  1965.           FONCTION:  EmsStatus
  1966.  
  1967.           OBJET:     Indiquer si le DRIVER fonctionne normalement et si l'accès
  1968.                      à la mémoire paginée est possible     
  1969.                      SCREEN [0,13]
  1970.         
  1971.           APPEL:     EmsStatus
  1972.  
  1973.                      (Cf. EXEMPLE2.BAS)   
  1974.  
  1975.           #####################################################################
  1976.  
  1977.                                      CHAPITRE 9
  1978.                                      ==========
  1979.  
  1980.  
  1981.  
  1982.          DIVERS
  1983.          ------
  1984.    
  1985.           *********************************************************************
  1986.  
  1987.           SUB:       Alpha
  1988.  
  1989.           OBJET:     Police Vectorielle (Grand Format) 
  1990.                      SCREEN [7,13]
  1991.         
  1992.           APPEL:     Alpha X%, Y%, Lettre$, CoulLettre%, CoulFond%, Taille%, -
  1993.                            Angle%
  1994.  
  1995.                       * X%      : Valeur entre [0, 679]   [SCREEN 12]
  1996.                       * Y%      : Valeur entre [0, 479]   [SCREEN 12]
  1997.  
  1998.                       * Lettre$ : Lettre à reproduire     
  1999.  
  2000.                       * CoulL%  : Couleur du tour de la lettre [0,15]
  2001.                       * CoulF%  : Couleur du fond de la lettre [0,15]
  2002.  
  2003.                       * Taille% : Taille de la lettre
  2004.                                   Valeur entre [7, ...]
  2005.  
  2006.                       * Angle%  : Angle d'écriture en degrés
  2007.                                   Valeur entre [0, 360]
  2008.  
  2009.                      Exemple : Cf. EXEMPLE6.BAS   
  2010.  
  2011.           *********************************************************************
  2012.  
  2013.           SUB:       GselectL
  2014.  
  2015.           OBJET:     Afficher une liste d'entrées dans un tableau avec
  2016.                      possibilité de sélections multiples 
  2017.                      SCREEN 12
  2018.         
  2019.           APPEL:     GselectL Texte$, Y%, X%, NbreAffiEcran%, NbreEntree%, -
  2020.                               Choisi%, Entree$(), Marque%(), CoulMarque%, -
  2021.                               CoulEcrit%, CoulTexte%, CoulTour%, Ombre%, -
  2022.                               CoulOmbre%
  2023.  
  2024.                       * Texte$   : Insertion Texte dans Cadre supérieur du
  2025.                                    Tableau   
  2026.                       * Y%       : Positionnement du Tableau s/Rangée 
  2027.                                      Valeur entre [0, 20] 
  2028.                       * X%       : Positionnement du Tableau s/Colonne
  2029.                                      Valeur entre [0, 60] 
  2030.                       * NbreAf   : Nbre d'entrées affichables dans le tableau
  2031.                       * NbreEn   : Liste d'entrées à afficher       
  2032.                       * Choisi%  : Retourne le nombre d'entrées sélectionnées
  2033.                       * Entree$(): Retourne les entrées sélectionnées     
  2034.                       * Marque%(): Retourne Valeur entre [0,1]
  2035.                                       0 : Entrée non sélectionnée
  2036.                                       1 : Entrée sélectionnée  
  2037.                       * CoulMar  : Couleur d'écriture des entrées sélectionnées
  2038.                                       [0,15]
  2039.                       * CoulEcr  : Couleur d'écriture des entrées à sélection-
  2040.                                    ner 
  2041.                                       [0,15]
  2042.                       * CoulText : Couleur d'écriture du texte [0,15]
  2043.                       * CoulTour : Couleur d'encadrement du tableau
  2044.                       * Ombre%   : Ombrage [0,1,2,3,4] 
  2045.                       * CoulOmbr : Couleur de l'ombrage [0,15]
  2046.                                    Une valeur est nécessaire même si ombrage =0
  2047.     
  2048.                      Exemple : Cf. EXEMPLE7.BAS   
  2049.  
  2050.           NOTA : Pour SCREEN 0, Utilisez SELECTL
  2051.  
  2052.                      Exemple : Cf. EXEMPLE8.BAS   
  2053.  
  2054.           *********************************************************************
  2055.  
  2056.           SUB:       GselectD
  2057.  
  2058.           OBJET:     Afficher dans un tableau les fichiers d'un répertoire avec
  2059.                      possibilité de sélections multiples 
  2060.                      SCREEN 12
  2061.         
  2062.           APPEL:     GselectD Texte$, Y%, X%, Cherche$, NbreAffiEcran%,-
  2063.                               CoulMarque%, CoulEcrit%, CoulTour%, CoulTexte%,-
  2064.                               Ombre%, CoulOmbre%, Choisi%, Entree$() 
  2065.  
  2066.                       * Texte$   : Insertion Texte dans Cadre supérieur du
  2067.                                    Tableau   
  2068.                       * Y%       : Positionnement du Tableau s/Rangée 
  2069.                                      Valeur entre [0, 20] 
  2070.                       * X%       : Positionnement du Tableau s/Colonne
  2071.                                      Valeur entre [0, 60] 
  2072.                       * NbreAf   : Nbre d'entrées affichables dans le tableau
  2073.                       * CoulMar  : Couleur d'écriture des entrées sélectionnées
  2074.                                       [0,15]
  2075.                       * CoulEcr  : Couleur d'écriture des entrées à sélection-
  2076.                                    ner 
  2077.                                       [0,15]
  2078.                       * CoulTour : Couleur d'encadrement du tableau
  2079.                       * CoulText : Couleur d'écriture du texte [0,15]
  2080.                       * Ombre%   : Ombrage [0,1,2,3,4] 
  2081.                       * CoulOmbr : Couleur de l'ombrage [0,15]
  2082.                                    Une valeur est nécessaire même si ombrage =0
  2083.                       * Choisi%  : Retourne le nombre d'entrées sélectionnées
  2084.                       * Entree$(): Retourne les entrées sélectionnées     
  2085.  
  2086.                      Exemple : Cf. EXEMPLE7.BAS   
  2087.  
  2088.           NOTA : Pour SCREEN 0, Utilisez SELECTD
  2089.  
  2090.                      Exemple : Cf. EXEMPLE8.BAS   
  2091.  
  2092.           *********************************************************************
  2093.  
  2094.           SUB:       InfoManA, InfoManB
  2095.  
  2096.           OBJET:     Tester les manettes de Jeu A ou (et) B si disponibles, 
  2097.                      et retourner les positions écran (X & Y) avec pression 
  2098.                      ou non des boutons 1 et 2    
  2099.                      SCREEN [0,13]
  2100.         
  2101.           APPEL:     InfoManA AX, AY, A1, A2
  2102.                      InfoManB BX, BY, B1, B2
  2103.  
  2104.                      Exemple :   DO
  2105.                                  LOCATE 10, 10
  2106.                                  InfoManA AX, AY, A1, A2
  2107.                                  F$ = "#### ####  (##) (##)
  2108.                                  PRINT USING F$; AX; AY; A1; A2             
  2109.                                  IF AX < 10 AND A1 = -1 THEN PRINT "Bouton1"
  2110.                                  IF AY > 10 AND A2 = -1 THEN PRINT "Bouton2"
  2111.                                  LOOP UNTIL INKEY$ <> ""
  2112.                                  ...
  2113.  
  2114.           *******************************************************************
  2115.  
  2116.           FONCTION:  Duree
  2117.  
  2118.           OBJET:     Calculer le temps écoulé entre un moment et un autre                             SCREEN [0,13]
  2119.         
  2120.           APPEL:     Duree (T1, T2)
  2121.  
  2122.                      Exemple : SCREEN 12
  2123.                                T1 = TIMER
  2124.                                FOR I = 1 TO 25000
  2125.                                NEXT I
  2126.                                T2 = TIMER
  2127.                                TempsEcoule = Duree (T1, T2)
  2128.                                END     
  2129.  
  2130.           *******************************************************************
  2131.  
  2132.           SUB:       Alarme
  2133.  
  2134.           OBJET:     Emettre un bruit sonore
  2135.                      SCREEN [0,13]
  2136.         
  2137.           APPEL:     Alarme
  2138.  
  2139.           *******************************************************************
  2140.  
  2141.           SUB:       Delai
  2142.  
  2143.           OBJET:     Temporisation en secondes
  2144.                      SCREEN [0,13]
  2145.         
  2146.           APPEL:     Delai Retard%
  2147.  
  2148.                      Exemple : Delai 3   ' Délai d'attente de 3 secondes
  2149.                                Delai .5  ' Delai d'attente d'une demie seconde               
  2150.           *******************************************************************
  2151.  
  2152.           SUB:       Calendrier
  2153.  
  2154.           OBJET:     Afficher un calendrier
  2155.                      [SCREEN 0 Uniquement]
  2156.         
  2157.           APPEL:     Calendrier Mois%, Annee%, Rang%, Col%, Fond%, Cadre%, -
  2158.                      Coul1%, Coul2%, Ombre%
  2159.  
  2160.                      * Mois% :  Valeur entre [1,12]
  2161.                      * Annee% : Exemple 1994
  2162.                      * Rang% :  Rangée d'affichage
  2163.                      * Col% :   Colone d'affichage
  2164.                      * Fond% :  Couleur du fond 
  2165.                      * Cadre% : Vouleur du cadre
  2166.                      * Coul1% : Couleur des Jours
  2167.                      * Coul2% : Couleur de fond des jours
  2168.                      * Ombre% : Ombrage
  2169.                                  0 --> Pas d'ombrage
  2170.                                  1 --> Ombre à gauche
  2171.                                  2 --> Ombre à droite          
  2172.  
  2173.           #####################################################################
  2174.  
  2175.                                      CHAPITRE 10
  2176.                                      ===========
  2177.  
  2178.  
  2179.  
  2180.          AVERTISSEMENT
  2181.          -------------
  2182.  
  2183.          Le plus grand soin a été apporté à la programmation de ces fonctions
  2184.          et routines et aucune fonction dite "dangereuse" n'a été employée. 
  2185.  
  2186.          Je les utilise personnellement depuis plusieurs mois sur mon
  2187.          ordinateur et je n'ai jamais rencontré aucun problème.  
  2188.  
  2189.          Néanmoins, je tiens à préciser que l'emploi de la bibliothèque WBLIB
  2190.          pour QuickBASIC 4.# reste à l'appréciation de chacun et dans ce cas,
  2191.          à ses risques et périls.
  2192.         
  2193.          L'utilisation de ce produit indique que vous avez pris connaissance
  2194.          de l'avertissement de l'auteur, du contenu des fichiers SHAREWRE.TXT
  2195.          et LICENCE.TXT et que vous en acceptez les termes.
  2196.  
  2197.          A ce titre, aucune réclamation de quelque nature que ce soit et
  2198.          aucune responsabilité ne seront acceptées. 
  2199.  
  2200.  
  2201.          =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  2202.  
  2203.          La documention et les différents fichiers constituant ce produit ne
  2204.          doivent pas être modifiés.
  2205.  
  2206.  
  2207.          =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  2208.   
  2209.          QuickBASIC et Microsoft sont des marques déposées de MICROSOFT
  2210.          CORPORATION.  
  2211.  
  2212.          =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  2213.  
  2214.  
  2215.                      Copyright (C) Août.1994 :  BLAKE William
  2216.  
  2217.  
  2218.  
  2219.  
  2220.  
  2221.  
  2222.  
  2223.