Micro Systèmes n°98 juin 1989
Micro Systèmes n°98 juin 1989
  • Prix facial : 30 F

  • Parution : n°98 de juin 1989

  • Périodicité : mensuel

  • Editeur : Société Parisienne d'Edition

  • Format : (203 x 271) mm

  • Nombre de pages : 188

  • Taille du fichier PDF : 153 Mo

  • Dans ce numéro : choisir... logiciels intégrés.

  • Prix de vente (PDF) : gratuit

Dans ce numéro...
< Pages précédentes
Pages : 156 - 157  |  Aller à la page   OK
Pages suivantes >
156 157
TECHNIQUE n'est pas gênant. Il s'agit : - du champ Adr_Parametre du type T_Descripteur_Pile (inutile dans la version de base) ; - de l'affectation BP : = Limite_Pile - 10 (utile uniquement dans la version de Transfer avec paramètre). Finalement, nous disposons à la compilation de trois versions pour l'unité Coprogrammes : 1° version de base si aucun symbole n'est défini ; 2° passage de paramètre par Transfer si le symbole Parametre-Transfer est défini (menu Options/Compiler/Conditional defines pour l'environnement intégré, ou option/d pour le cas du compilateur en ligne) ; 30 passage de paramètre par NewProcess si le symbole Parametre_NewProcess est défini. On remarquera qu'une possibilité de passage de paramètre à la fois par Transfer et NewProcess est sans intérêt et que seule la version 2 nécessite la nouvelle implémentation de Transfer. Génération des différentes versions de l'unité Coprogrammes Pour une gestion efficace de ces différentes versions, nous donnons en annexe la liste du fichier COPROGRA.MAK à utiliser avec l'utilitaire Make (l'option/b (Build) du compilateur étant incapable de régénérer le fichier transfer.obj). Ce fichier contient deux règles explicites indiquant les dépendances pour coprogra.tpu et transfer.obj et utilise l'appel de macro $(option) dans la directive/d (Define) du compilateur et de l'assembleur. La macro « option » doit être définie sur la ligne de commande de Make (attention aux majuscules et minuscules pour les sélecteurs -f et -D) : make -fcoprogra.mak -Doption= est vide pour la version 1, égale à Parametre-Transfer pour la version 2 et à Parametre_NewProcess pour la version 3. Comme Make exécute les commandes des règles du fichier coprogra.mak en fonction de l'ancienneté des fichiers, il faut forcer la régénération de l'unité Coprogrammes par exemple avec l'utilitaire Touch appliqué au fichier transfer.asm. On pourra utiliser un fichier procédure pour assurer l'enchaînement des opérations (fichier COPROGRA.BAT) : REM REM Fichier procédure pour la compilation de l'unité Coprogrammes REM touch transfer.asm make -fcoprogra -Doption=%l Pour obtenir la version souhaitée de l'unité Coprogrammes, il suffit alors de taper l'une des commandes suivantes : version 1 > coprogra 2 > coprogra Parametre_Transfer 3 > coprogra Parametre_NewProcess (Ceci suppose que tous les fichiers utiles au projet sont dans le répertoire courant et que l'on a précisé les chemins d'accès au compilateur, assembleur..., à l'aide d'une commande Path.) Un exemple avec des paramètres Pour terminer, nous allons illustrer ces deux nouvelles versions de l'unité Coprogrammes par un exemple simple ; il s'agit de faire défiler plusieurs fois un poème d'une dizaine de lignes à l'écran. Le programme Demo_Parametre_Transfer utilise un coprogramme d'affichage créé sur la procédure Afficher qui écrit le message qu'on lui passe en paramètre et rend le contrôle au programme maître (on notera l'usage de Nil lorsqu'il n'y a pas de paramètre à fournir) ; celui-ci active le coprogramme d'affichage avec un nouveau paramètre à chaque fois. Programme maître lawn L + mow L Message j w* —1 Affichage I-> Message Ce programme fonctionne évidemment avec la version 2 de l'unité Coprogrammes (on notera les directives de compilation ($F), essentielles au fonctionnement correct, lors des déclarations des procédures supportant les coprogrammes). Le programme Demo_Parametre_NewProcess utilise quant à lui la version 3 de cette unité pour créer dix coprogrammes d'affichage sur la procédure Afficher, chacun étant chargé d'écrire un message particulier (toujours le même : un des vers du poème), et un coprogramme de comptage assurant le retour au programme maître après un certain nombre d'activations (na). 156 - MICRO-SYSTEMES Juin 1989
PROGRAMMATION Programme maître 4am mu = na < na Comptage f lem anal Mal 1'Affichage 10 Message 1 Message 2 Message 10 Les directives {$F+} sont là aussi nécessaires. La manière d'activer les coprogrammes successifs (rangés dans le tableau Table_Coprogrammes) à l'aide de la procédure Activer—Suivant préfigure la méthode que nous utiliserons lorsque nous développerons notre noyau multitâche dans un prochain article. Michel Rambouillet ANNEXE Listes des programmes PROCEDURE Selectionner ; TYPE T_Table_Commandes = Array CT_Indice) of T_Commande ; PROGRAM Totalisation_des_Commandes (Fichiers_Entree, Fichier_Sortie) ; USES Coprogrammes ; Déclarations propres à l'application CONST Infini = False ; Reference Bidon = 65535 ; Nombre_Representants = 3 ; TYPE T_Indice = 1.. Nombre_Representants ; T_Commande = RECORD Reference, Quantite END ; Nord T_Commande_Client = RECORD Commande Numero_Client END ; T_Commande ; Mord T_Fichier_Entree = File of T_Commande_Client ; T_Fichier_Sortie = File of T_Commande, T_Extension = String (2] ; CONST Commande_Nulle T_Commande = (Reference. Reference_Bidon, Quantite. 0) ; VAR Fichiers_Entree. Array (T_Indice] of T_Fichier_Entree ; Fichier_Sortie : T_Fichier_Sortie ; Ptr_Fichier Ptr_Commande ^ T_Fichier_Entree : T_Commande ; I T_Indice ; Déclarations pour la gestion des coprogrammes CONST Taille Pile = 1024 ; VAR Pilel, Pilet, Pile3 Array (1..Taille_Pilel of Byte ; Lecture, Selection, Totalisation, Maitre T_Coprogramme ; VAR Commandes : T_Table_Commandes ; I. T_Indice ; FUNCTION Encore_desCommandes Boolean ; (retourne vrai s'il existe une commande non nulle dans la table) VAR I T_Indice ; BEGIN (Encore_des_Commandes) Encore_des_Commandes : = False ; FOR I : = 1 TO Nombre_Representants DO IF Commandes [I].Reference <> Reference_Bidon THEN Encore_des_Commandes : = True END C Encore_des_Commandes) ; FUNCTION Indice_Plus_Petite_Reference_Commande T_Indice ; (retourne l'indice de la commande ayant la plus petite référence dans la table) VAR I. T_Indice ; Reference_mini Nord ; BEGIN (Indice_Plus_Petite_Reference_Commande) ludice_Plus_Petite_Reference_Commande.= 1 ; Reference_Mini.. Commandes (1].Reference ; FOR I.= 2 TO Nombre_Representants DO IF Commandes CI].Reference < Reference_Mini THEN BEGIN Indice_Plus_Petite_Reference_Commande.= I ; Reference_Mini : = Commandes Cl] Reference END END Indice_Plus_Petite_Reference_Commande) ; BEGIN (Selectionner) (Lecture initiale des fichiers) FOR I.= I TO Nombre_Representants DO BEGIN Ptr_Fichier.= @ Fichiers_Entree CI] ; Ptr Commande @ Commandes [Il ; Transfer (Selection, Lecture) END ; (Balayage des fichiers) PROCEDURE Lire ; JAR Commande Client T_Commande_Client ; BEGIN (Lire) REPEAT IF Eof (Ptr_Fichier-) THEN Pt r _Commande-.= Commande _Nu e ELSE BEGIN Read (Ptr_Fichier, Commande_C1 lent) ; Pt r _Commande- = Commande_Cli ent. Comande END ; Transfer(Lecture, Selection) OUTIL Infini END (Lire) ; WHILE Encore_des_Commandes DO BEGIN I s= Indice_Plus_Petite_Reference_Commande ; Ptr_Fichier.= @ Fichiers_Entree [I] ; Ptr_Commande : = @ Commandes CI] ; Transfer (Selection, Totalisation) ; Transfer (Selection, Lecture) END ; C Forcer la terminaison du dernier cumulet rendre la main Ptr_Commande pointe sur une commande nulle puisque le balayage est terminé) Transfer (Selection, Totalisation) ; Transfer (Selection, Maitre) À



Autres parutions de ce magazine  voir tous les numéros


Liens vers cette page
Couverture seule :


Couverture avec texte parution au-dessus :


Couverture avec texte parution en dessous :


Micro Systèmes numéro 98 juin 1989 Page 1Micro Systèmes numéro 98 juin 1989 Page 2-3Micro Systèmes numéro 98 juin 1989 Page 4-5Micro Systèmes numéro 98 juin 1989 Page 6-7Micro Systèmes numéro 98 juin 1989 Page 8-9Micro Systèmes numéro 98 juin 1989 Page 10-11Micro Systèmes numéro 98 juin 1989 Page 12-13Micro Systèmes numéro 98 juin 1989 Page 14-15Micro Systèmes numéro 98 juin 1989 Page 16-17Micro Systèmes numéro 98 juin 1989 Page 18-19Micro Systèmes numéro 98 juin 1989 Page 20-21Micro Systèmes numéro 98 juin 1989 Page 22-23Micro Systèmes numéro 98 juin 1989 Page 24-25Micro Systèmes numéro 98 juin 1989 Page 26-27Micro Systèmes numéro 98 juin 1989 Page 28-29Micro Systèmes numéro 98 juin 1989 Page 30-31Micro Systèmes numéro 98 juin 1989 Page 32-33Micro Systèmes numéro 98 juin 1989 Page 34-35Micro Systèmes numéro 98 juin 1989 Page 36-37Micro Systèmes numéro 98 juin 1989 Page 38-39Micro Systèmes numéro 98 juin 1989 Page 40-41Micro Systèmes numéro 98 juin 1989 Page 42-43Micro Systèmes numéro 98 juin 1989 Page 44-45Micro Systèmes numéro 98 juin 1989 Page 46-47Micro Systèmes numéro 98 juin 1989 Page 48-49Micro Systèmes numéro 98 juin 1989 Page 50-51Micro Systèmes numéro 98 juin 1989 Page 52-53Micro Systèmes numéro 98 juin 1989 Page 54-55Micro Systèmes numéro 98 juin 1989 Page 56-57Micro Systèmes numéro 98 juin 1989 Page 58-59Micro Systèmes numéro 98 juin 1989 Page 60-61Micro Systèmes numéro 98 juin 1989 Page 62-63Micro Systèmes numéro 98 juin 1989 Page 64-65Micro Systèmes numéro 98 juin 1989 Page 66-67Micro Systèmes numéro 98 juin 1989 Page 68-69Micro Systèmes numéro 98 juin 1989 Page 70-71Micro Systèmes numéro 98 juin 1989 Page 72-73Micro Systèmes numéro 98 juin 1989 Page 74-75Micro Systèmes numéro 98 juin 1989 Page 76-77Micro Systèmes numéro 98 juin 1989 Page 78-79Micro Systèmes numéro 98 juin 1989 Page 80-81Micro Systèmes numéro 98 juin 1989 Page 82-83Micro Systèmes numéro 98 juin 1989 Page 84-85Micro Systèmes numéro 98 juin 1989 Page 86-87Micro Systèmes numéro 98 juin 1989 Page 88-89Micro Systèmes numéro 98 juin 1989 Page 90-91Micro Systèmes numéro 98 juin 1989 Page 92-93Micro Systèmes numéro 98 juin 1989 Page 94-95Micro Systèmes numéro 98 juin 1989 Page 96-97Micro Systèmes numéro 98 juin 1989 Page 98-99Micro Systèmes numéro 98 juin 1989 Page 100-101Micro Systèmes numéro 98 juin 1989 Page 102-103Micro Systèmes numéro 98 juin 1989 Page 104-105Micro Systèmes numéro 98 juin 1989 Page 106-107Micro Systèmes numéro 98 juin 1989 Page 108-109Micro Systèmes numéro 98 juin 1989 Page 110-111Micro Systèmes numéro 98 juin 1989 Page 112-113Micro Systèmes numéro 98 juin 1989 Page 114-115Micro Systèmes numéro 98 juin 1989 Page 116-117Micro Systèmes numéro 98 juin 1989 Page 118-119Micro Systèmes numéro 98 juin 1989 Page 120-121Micro Systèmes numéro 98 juin 1989 Page 122-123Micro Systèmes numéro 98 juin 1989 Page 124-125Micro Systèmes numéro 98 juin 1989 Page 126-127Micro Systèmes numéro 98 juin 1989 Page 128-129Micro Systèmes numéro 98 juin 1989 Page 130-131Micro Systèmes numéro 98 juin 1989 Page 132-133Micro Systèmes numéro 98 juin 1989 Page 134-135Micro Systèmes numéro 98 juin 1989 Page 136-137Micro Systèmes numéro 98 juin 1989 Page 138-139Micro Systèmes numéro 98 juin 1989 Page 140-141Micro Systèmes numéro 98 juin 1989 Page 142-143Micro Systèmes numéro 98 juin 1989 Page 144-145Micro Systèmes numéro 98 juin 1989 Page 146-147Micro Systèmes numéro 98 juin 1989 Page 148-149Micro Systèmes numéro 98 juin 1989 Page 150-151Micro Systèmes numéro 98 juin 1989 Page 152-153Micro Systèmes numéro 98 juin 1989 Page 154-155Micro Systèmes numéro 98 juin 1989 Page 156-157Micro Systèmes numéro 98 juin 1989 Page 158-159Micro Systèmes numéro 98 juin 1989 Page 160-161Micro Systèmes numéro 98 juin 1989 Page 162-163Micro Systèmes numéro 98 juin 1989 Page 164-165Micro Systèmes numéro 98 juin 1989 Page 166-167Micro Systèmes numéro 98 juin 1989 Page 168-169Micro Systèmes numéro 98 juin 1989 Page 170-171Micro Systèmes numéro 98 juin 1989 Page 172-173Micro Systèmes numéro 98 juin 1989 Page 174-175Micro Systèmes numéro 98 juin 1989 Page 176-177Micro Systèmes numéro 98 juin 1989 Page 178-179Micro Systèmes numéro 98 juin 1989 Page 180-181Micro Systèmes numéro 98 juin 1989 Page 182-183Micro Systèmes numéro 98 juin 1989 Page 184-185Micro Systèmes numéro 98 juin 1989 Page 186-187Micro Systèmes numéro 98 juin 1989 Page 188