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 : 158 - 159  |  Aller à la page   OK
Pages suivantes >
158 159
TECHNIQUE END - Selectlonner) ; Structure de la pile (après. sauvegarde des registres ou avant leur restauration par Transfer) PROCEDURE Totaliser ; VAR Commande_Totale T_Commande ; BEGIN (Totaliser) REPEAT Initialiser référence courante et cumul) Commande_Totale : = PtrCommande- ; Transfer (Totalisation, Selection) ; (Cumuler les valeurs tant que la Référence ne change pas) WITH Commande_Totale DO WH1LE Ptr_Commande-.Reference = Reference DO BEGIN Quantite : = Quantite + Ptr_Commande-.Quantite ; Transfer (Totalisation, Selection) ; END ; Ecrlre la commande cumulée 1 Write (Fichier_Sortie, Commande_Totale) UNTIL Infini END Totaliser) ; FONCTION Extension (I T_Indlce) T_Extension ; Retourne l'extension du fichier d'indice 1 lex.'02'si I = 2)) BEGIN Extension) Extension Chr(Ord('0'). I div 10) ChrlOrd('0') I mod10) END (Extension) ; T_Desc_Pile_Transfer STRUC ; (Adresses basses) Registres DW 10 DUP(,) SS:SP : BP de Coprog.. : autres Reg. Adresse_Retour DD,. : retour Coprog : Ptr_Param T_Ptr_Param C> ; , : OParametre (B) : ; facultatif : v : @Parametre (11) : ; -. Ptr_Coprog2 DD, ; Paramètres : @Coprogramme2 : ; de Transfer Ptr_Coprogl DD, ; v : teoprogrammel : T_Desc_Pile_Transfer ENDS : Pile : Coprogramme : T_Desc_Pile_Coprog STRUC : (var. locales) : DW BP ancien ; Zone : DD ; initialisée : NIL ; par Adr_Param T_Ptr_Param ; NeuProcess : @Parametre (B) ; T_Desc_Pile_Coprog ENDS Pile Lg_Par v : @Parametre (H)://i/ : (Adresses hautes) EQU [BPI EQU SIZE T_Desc_Pile_Transfer - Ptr_Param BEGIN Programme principal) Ouvrir les fichiers) FOR I -= 1 TO Nombre_Representants DO CODE SEGMENT BYTE PUBLIC ASSUME CS:CODE PUBLIC Transfer BEGIN Assign (Fichiers_Entree Cl),'CMD.'Reset (Fichiers_Entree [I)) ; END ; Assign (Fichier_Sortie,'CMD.TOT') ; Rewrite) Fichier Sortie) ; Extension(111 ; PROCEDURE Transfer (VAR Coprogrammel, Coprogramme2 : T_Coprogrammei PtrParametre Pointer) I Créer les coprogrammes) NewProcess (8 Lire, @ Pilel, Taille_Pile, Lecture) ; NewProcess (M Selectionner, O Pile2, Taille_Pile, Selection) ; NewProcess I@ Totaliser, O Pile3, Taille_Pile, Totalisation) ; (Activer le coprogramme principal I Transfer (Maitre, Selection) ; Fermer les fichiers) FOR I : = 1 TO Nombre_Representants DO Close (Fichiers_Entree Close (Fichier Sortie) ; END Programme principal). Transfer PROC FAR PUSHF PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DI PUSH DS PUSH ES PUSH BP MOV BP,SP CLD IFDEF Parametre_Transfer ; Sauver les registres - IMPLEMENTATION de la Procédure TRANSFER Auteur. Michel RAMBOUILLET Version 2.1 Création : 14/04/89 IFDEF Parametre_Transfer DISPLAY "Assemblage de Transfer avec paramètre" ELSE DISPLAY "Assemblage de Transfer sans paramètre" ENDIF T_Ptr_Param STRUC IFDEF Parametre_Transfer Bas Haut DW DW ENDIF ; CX:DX : = Ptr_Param (on récupère l'adresse du paramètre avant de changer de pile MOV DX,Pile.Ptr Param.Bas NOV CX,Pile.Ptr:Param.Haut ENDIF ; Ptr_Coprogl : = SS:SP courant ; 1 : LES DI,Pile.Ptr_Coprogl ; ES:DI > : SP courant : MOV AX,SP ; (Ptr_Coprogl) : STOSW : SS courant : MOV AX,SS : STOSW ; SS:SP courant : = Ptr_Coprog2 LDS SI,Pile.Ptr_Coprog2 ; idem avec DS:91 LODSW ; avec une variante car il vaut mieux NOV SS,CSI3 ; ne pas être interrompu lors de la MOV SP,AX ; restauration de SS:SP POP BP ; Restaurer BP de Coprogramme2 IFDEF Parametre_Transfer ; Adr_Param CX:DX (Copier l'adresse du paramètre dans Adr_Param) T_Pcr_Param ENDS NOV Pile.Adr_Param.Bas,DX
PROGRAMMATION MOV Pile.Adr_Param.Haut,CX VAR Limite_Pile Word ; ENDIF POP ES POP DS POP DI POP SI POP DX POP CX POP BX POP AX POPF RET Lg_Par Restaurer les autres registres Transfer ENDP CODE ENDS END IMPLEMENTATION des COPROGRAMMES Auteur Michel RAMBOUILLET Version 2.2 Création : 14/04/89 BEGIN Limite_Pile : = T_Ptr(Adresse_Pile).0fset Taille_Pile ; WITM Coprogramme DO BEGIN SS T Ptr(Adresse_Pile).Segment : SP : = Limite_Pile - SizeOf(T_Descripteur_Pilel : WITH T_Ptr_Descripteur_PilelPtr(SS,SP))- DO BEGIN BP : = Limite_Pile - 10 ; % tree : se_Procedure = 50200 ; DS Sortie : = Nil : (SIFDEF Parametre_NeuProcess) AdrParametre : = Ptr_Parametre (RENDIF) END ; END END : END. Fichier Make pour l'unité Coprogrammes, oprogra.tpu e coprogra.pas transfer.obj tpc/df(option) coprogra UNIT Coprogrammes ; transfer.obj tranefer.asm INTERFACE TYPE T_Coprogramme = RECORD SP, SS END : MORD (RIFDEF Parametre_Transfer) PROCEDURE Transfer (VAR Coprogrammel, Coprogramme2 Ptr_Parametre Pointer) ; CRELSE) PROCEDURE Transfer (VAR Coprogrammel, Coprogramme2 (RENDIF) (fIFDEF Parametre_NeuProcess) T_Coprogramme ; T_Coprogramme) : tasm/df(option) transfer FOGRAM Dem, _Par.metre_Transfer (Output) ; C'oprobrammes, iver paysage de paramètre par Transfer Coprogrammes ;'JAR Affichage, Maitre e T_Coprogramme ; Pile : - Byte ; (pointeur pour l'allocation dynamique des piles I,J : Integer ; (compteurs)'OUST Table_Messages Array fl..101 of String = (le poêlée) PROCEDURE NewProcess (Adresse_Procedure, Adresse_Pile. Pointer ; Taille_Pile Word ; VAR Coprogramme T_Coprogramme : Ptr_Parametre e Pointer) ; (SELS !) PROCEDURE NewProcess (Adresse_Procedure, Adresse Pile : Pointer ; Taille Pile : Word : VAR Coprogramme T_Coprogrammel : fliENDIF) IMPLEMENTATION ($L TRANSFER)) ('Un chien vint dans 1"office','Et prit une andouillette','Alors à coups de louche','Le chef le mit en miettes','Les autres chiens ce voyant','Vite vite l"ensevelirent','Au pied d"une croix en bois blanc','Où le passant pouvait lire ") ; (*F+ pour forcer des appels longs (adresse de retour sur 4 octets) I PROCEDURE Afficher (VAR Message e String) : Ecrit Message à l'écran puis passe la main) CONST Infini = False ; PROCEDURE Transfer : EXTERNAL ; PROCEDURE NewProcess : TYPE T_Descripteur_Pile = (Description de la pile à initialiser) RECORD : (Adresses basses)) BP,ES,DS,DI,SI, C Regitres') DX,CX,BX,AX,Fg Word : empilés : C) Entree, C : @Programme : ) (sIFDEF ParametreTransfer) Ptr_Param, : < facultatif) (liENDIF) Ptr_Coprog2, Ptr_Coprogl Pointer : C : (8) C "›, (H) : <- Limite_Pile - 10) C (valeur de BPI) Sortie Pointer ; f NIL C : Adr_Parametre e Pointer C : @Paramètre : END ; C :) : /<- Limite_Pile (Adresses hautes)) T_Ptr_Descripteur_Pile = T_Descripteur_Pile ; T_Ptr = RECORD Ofset, Segment END ; Nord BEGIN REPEAT Writeln (Message) ; Transfer (Affichage, Maitre, Nil) UNTIL : nfini END ; ($1,- appels courts ou longs gérés par le compilateur) BEGIN f Créer le coprogramme) GetMem (Pile, 1024) ; NeuProcess (E ! Afficher, Pile, 1024, Affichage) ; (Déclencher l'affichage) FOR I : = 1 TO 3 DO FOR J : = 1 TO 10 DO Transfer (Maitre, Affichage, @ Table_Messages (.7)) : Writeln (Writeln('END. Samuel Beckett,') ; En Attendant Godot, acte 11') PROGRAM Demo_Parametre_NewProcess (Output) ; (Création dé plusieurs coprogrammes sur la même procédure avec passage de paramètre par NewProcess) USES Coprogrammes,



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