Brevet FR2559909A1 — publié le 19850823

Un analyseur de spectre est essentiellement un récepteur qui est syntonisé sur une bande de fréquences ou balaye cette dernière et dans lequel l'amplitude des signaux reçus est affichée sur un tube cathodique en fonction de la fréquence. Il est souvent souhaitable d'apporter des réglages à l'information du signal affiché à des fins d'étalonnage, et il est également souhaitable de quantifier les caractéristiques de l'information affi- chée, telles que l'amplitude et la fréquence du signal. Ces fonctions sont mises en oeuvre efficacement si l'in- formation est convertie de la forme analogique à la forme numérique et est stockée dans une mémoire. Une telle numérisation de l'information facilite également l'auto- matisation des fonctions de l'analyseur de spectre. Dans les brevets US n 4.253.152; 4.264.958; 4.257.104; et 4.244.024 se trouve décrit un analyseur automatique de spectre, qui possède un cer- tain nombre de dispositifs avancés de traitement et d'ana- lyse des données, dont plusieurs sont raccordés à des marques qui peuvent être placées sur l'écran d'affichage. Ces dispositifs permettent à l'utilisateur de déterminer par exemple la fréquence et l'amplitude d'un point parti- culier sur le tracé d'un signal de l'affichage, o il a placé une marque. L'utilisateur peut également désirer que la marque soit placée au niveau du signal le plus intense représenté sur l'affichage, avec une fonction de recherche de pics, et l'affichage représentera la fréquence et l'amplitude du point trouvé lors de la re- cherche. Un autre analyseur de spectre de l'art anté- rieur, à savoir le modèle 8566A de la société dite Hewlett- Packard, comportait un dispositif supplémentaire per- mettant à l'utilisateur de placer une marque sur le pic le plus élevé en second. Une autre caractéristique du dispositif de l'art antérieur permet à l'utilisateur de spécifier une fréquence particulière sur le dispositif d'affichage, puis de déclencher la mise en place d'une marque sur le tracé du signal dans l'affichage, pour cette fréquence. L'analyseur de spectre affiche alors l'amplitude du si- gnal pour la fréquence choisie. L'analyseur de spectre de l'art antérieur peut être commandé à partir d'un clavier situé sur le panneau avant de l'appareil ou à partir d'un ordinateur à distance raccordé à l'analyseur au moyen du bus d'in- terface (HP-IB) créé par la société dite Hewlett-Packard. Un ordinateur à distance peut par conséquent, en utili- sant les commandes qui-représentent les fonctions dispo- nibles à partir du panneau frontal de l'appareil, comman- der par programmation l'analyseur de spectre. La forme de réalisation préférée de la pré- sente invention est un perfectionnement de l'analyseur de spectre de l'art antérieur mentionné précédemment et fournit un certain nombre de fonctions qui ne sont pas disponibles dans cet analyseur de spectre de l'art antérieur. Ces nouvelles fonctions présentent des avan- tages importants du point de vue de l'acquisition et de l'utilisation de données de l'analyseur de spectre. L'une de ces nouvelles fonctions assume l'exécution automatique de fonctions définies par l'uti- lisateur, à la fin de chaque balayage de l'analyseur de fréquence. Dans l'art antérieur, l'utilisateur devait effectuer essentiellement un traitement complémentaire des données délivrées par l'analyseur de spectre, au moyen de ou sous la commande d'un ordinateur extérieur, et il existait un retard lié à un tel traitement. Dans la forme de réalisation préférée selon la présente inven- tion, le traitement peut être effectué beaucoup plus rapidement étant donné qu'il est réalisé par l'analyseur de spectre lui-même lorsqu'il atteint la fin d'un balaya- ge. Cette fonction permet par exemple à l'utilisateur de commander l'analyseur pour qu'il indique si les résul- tats d'un essai en cours sont hors des limites réglées par l'utilisateur ou bien si un signal particulier recher- ché a été trouvé. Une autre nouvelle fonction fournie permet a l'utilisateur de spécifier une amplitude particulière d'un signal et de demander qu'une marque soit placée sur le signal affiché, au niveau de cette amplitude. Cette fonction de mise en place d'une marque d'amplitude facilite grandement le contrôle des dispositifs électro- niques tels que des filtres et des amplificateurs et facilite également le repérage ou l'identification de signaux. Il s'agit d'un perfectionnement important par rapport aux dispositifs disponibles antérieurement qui permettaient uniquement la mise en place manuelle d'une marque sur le dispositif d'affichage ou la spécification de la fréquence pour laquelle une marque devait apparaî- tre, étant donné que ceci élimine essentiellement des tentatives par tâtonnements pour détecter des amplitudes spécifiques du signal. Fréquemment un certain nombre de signaux possédant des amplitudes variables sera affiché sur l'é- cran d'un analyseur de spectre et l'utilisateur décidera de déterminer la fréquence et l'amplitude de chacun des signaux. Un dispositif de l'art antérieur fournit une fonction appropriée de mise en place d'une marque sur le signal le plus intense et d'affichage-de la fréquence et de l'amplitude de ce signal. Une fonction de mise en place d'une marque pour le signal le plus intense en second peut être utilisée pour mesurer chacun des autres signaux dans l'ordre de leurs amplitudes. Cepen- dant, étant donné que les amplitudes des signaux peu- vent n'avoir aucune relation avec leur ordre sur le dis- positif d'affichage, la marque peut sauter sur de l'écran d'une manière peu appropriée, lorsqu'elle est déplacée d'un signal à un autre. L'une des nouvelles caractéristiques de la forme de réalisation préférée permet à l'utilisateur de commander l'analyseur de spectre pour qu'il place la marque sur le pic immédiatement suivant à droite ou a gauche de la position actuelle de la marque. Le fait de prévoir une fonction de mise en place d'une marque à gauche ou à droite du pic immédiatement suivant a pour effet que la forme de réalisation préférée de la présente invention fournit un moyen grandement perfectionné pour mesurer la fréquence et l'amplitude de chaque signal dans l'ordre o il apparaît sur le dispositif d'affichage. D'autres caractéristiques et avantages de la présente invention ressortiront de la description donnée ci-après prise en référence aux dessins annexés, sur lesquels: - les figures lA-1F et 2A-2E sont des sché- mas d'un ensemble contrôleur pour un analyseur de spectre selon la forme de réalisation préférée de la présente invention; - les figures 3 et 4 sont des organigramems d'une fonction permettant l'exécution de programmes défi- nis par l'utilisateur, à la fin d'un balayage de l'analy- seur de spectre; - les figures 5A-5B représentent un organi- gramme d'une fonction de mise en place d'une marque d'am- plitude; - la figure 6 illustre la mise en oeuvre de la fonction de mise en place d'une marque d'amplitu- de de la figure 5; - la figure 7 est un organigramme général illustrant la mise en oeuvre de plusieurs fonctions de mise en place d'une marque sur un pic; - les figures 8A-8B représentent des orga- nigrammes d'une fonction servant à placer une marque sur le pic immédiatement suivant à droite ou à gauche de la position actuelle de la marque; et - la figure 9 illustre la mise en oeuvre de la fonction des figures 8A-8 B. Ci-après on va donner une description dé- taillée de la forme de réalisation préférée de l'inven- tion. La présente invention inclut des perfection- nements appliqués à l'appareil décrit dans le brevet US n 4.253.152. Cet appareil est un analyseur de spec- tre comportant des circuits servant à numériser des si- gnaux analogiques mesurés et à afficher et à analyser de différentes manières les signaux mis sous forme numé- rique. La description donnée ci-après concerne les as- pects de la présente forme de réalisation de la présente invention, qui diffèrent de la forme de réalisation anté- rieure. La première différence réside dans le dispositif contrôleur, représenté sur les figures 38 et 39 du bre- vet mentionné plus haut et dont la description est donnée principalement dans le passage compris entre la colonne 24, ligne 65 et la colonne 25, ligne 47 dudit brevet. Les figures lA-lF et 2A-2E représentent l'ensemble contrôleur de la forme de réalisation préfé- rée, qui remplace l'ensemble contrôleur du brevet anté- rieur. Les composants représentés sous la forme de blocs sur ces figures sont identifiés dans l'annexe III. Le bloc 102 désigne une horloge comportant un oscillateur à quartz qui fonctionne à une fréquence égale approxima- tivement à 14,7 mégahertz. Le signal de sortie de l'os- cillateur est subdivisé une fois pour l'obtention du signal d'horloge du processeur et deux fois pour la com- mande cadencée servant à faire fonctionner la micropla- quette du bus HP-IB. Un circuit 104 de remise à l'état initial vérifie que l'alimentation en énergie 106 se situe dans les tolérances avant que le processeur commence à fonc- tionner, de sorte qu'il n'existe aucune perte ou destruc- tion par inadvertance du contenu de la mémoire. Des cir- cuits 108 de tamponnage pour le décodage de lecture/enre- gistrement forment les tampons prévus pour les mémoires (RAM et ROM), servant à valider des sorties de sélection de débit binaire élevé ou de débit binaire faible. Un décodeur d'adresses 110 comporte cer- tains décodeurs de type standard (modèles LS139 et LS138) et un couple de décodeurs du type réseaux logiques pro- grammables, qui effectuentl'adressage des mémoires ROM et RAM. Le décodeur d'adresses 112 fournit un décodage des adresses pour plusieurs autres circuits situés dans l'ensemble contrôleur, comme par exemple une micropla- quette de minuterie d'interface en parallèle, une micro- plaquette du bus HP-IB et des tampons du bus de trans- mission de données, qui réalisent un tamponnage du bus de l'appareil. Les tampons sont représentés dans le bloc 114 et isolent le bus de l'appareil du bus de transmis- sion de données du processeur afin de le protéger vis- à-vis d'interférences à haute fréquence à l'intérieur de l'appareil. La sortie de ces tampons commande le reste de l'appareil. Les bus et les types de signaux dispo- nibles dans ces bus sont les mêmes que ceux présents dans l'appareil décrit dans le brevet antérieur. Le bloc 116 inclut des dispositifs de com- mande pour des tampons du bloc 114. Le bloc 118 comporte des générateurs d'échantillons pour le bus d'entrée/ sortie (I/O), afin de permettre une sélection entre la section d'affichage et la section à haute fréquence, dont chacune possède son propre jeu d'adresses. Une microplaquette 120 de l'interface péri- phérique et de la minuterie est utilisée pour s'occuper de différentes lignes de commande et pour commander cer- taines diodes à luminescence LED pour l'analyse de signa- ture pour le diagnostic de défauts. Le bloc 122 inclut une microplaquette du bus (HP-IB) d'interface fabriquée par Hewlett-Packard, ainsi que deux microplaquettes de tampon. En outre il est prévu un jeu de commutateurs d'adresses et un tampon U14 (un circuit LS244) permettant de les renvoyer en retour par lecture dans le bus de transmission des don- nées du processeur. Le bloc 202 est un décodeur d'interruptions (un circuit LS148). Un bloc d'auto-test 204 inclut cer- tains registres qui sont utilisés lors d'un contrôle de procédure à autotest. Ce sont des registres o l'on peut introduire une adresse et l'extraire ensuite en la renvoyant dans le bus de transmission de données afin de détecter s'ils sont réellement ce qu'ils sont censés être. Un microprocesseur 206 est utilisé pour commander le fonctionnement de l'analyseur de spectre. Un microprocesseur modèle 68000 fabriqué par la société dite Motorola et fonctionnant & une fréquence de 8 méga- hertz est utilisé à la place du processeur 2015 représen- té sur la figure 38A du brevet antérieur. Le micropro- cesseur modèle 68000 est un microprocesseur standard disponible dans le commerce, et le jeu d'instructions-, pour ce microprocesseur peut être trouvé dans bon nombre de livres publiés par la société dite PrentissHall, tel que le "Manuel d'utilisation du microprocesseur a 16 bits MC68000", troisième édition, 1982. Etant donné que le jeu d'instructions de microprogrammation pour ce processeur est différent du jeu d'instructions pour le processeur décrit dans le brevet cité, les programmes indiqués dans les annexes de ce brevet ont été compilés à nouveau pour s'appliquer au microprocesseur MC68000. Cependant toutes les fonc- tions décrites dans le brevet cité sont également effec- tuées par la présente forme de réalisation, et ce essen- tiellement de la même manière, en tenant compte des dif- férences entre les deux processeurs et leurs jeux d'ins- tructions. Il faut noter que le signal de remise à l'état initial du processeur, désigné sous le terme POP dans le brevet antérieur cité, est maintenant désigné sous le terme RESET (remise à l'état initial) dans la présente forme de réalisation, et que l'adresse de départ 40 pour l'exécution des programmes est maintenant devenue 0. Il faut également noter que la ligne HSTM n'est plus utilisée, et qu'un circuit de blocage 3801 n'est plus nécessaire, cette fonction étant maintenant effectuée par le microprocesseur. Le bloc 208 comporte un dispositif logique de décodage des interruptions et le bloc 210 comporte des cavaliers pour l'analyse de signature, qui peuvent être raccordés de manière à obliger le microprocesseur 206 à effectuer, d'une manière répétitive, un certain nombre d'opérations présélectionnées, à des fins de dia- gnostic. Le bloc 212 contient des mémoires mortes (ROM) qui contiennent les programmes pour les différentes fonctions exécutées par l'analyseur de spectre. Ces pro- grammes incluent les programmes décrits dans le brevet antérieur cité ainsi que les programmes décrits ci-après. Le bloc 214 contient une mémoire à accès direct (RAM), dans laquelle des données collectées par l'analyseur de spectre ainsi que les résultats de manipulations sur les données et différents paramètres et instructions modifiables sont mémorisés. A la fois la mémoire RAM et les mémoires ROM sont incluses sur la même plaquette à circuits imprimés que le microprocesseur, plutôt que d'être situées sur des plaquettes à circuits imprimés séparées, comme dans le dispositif de l'art antérieur. Bien que l'ensemble contrôleur précédent utilisant le microprocesseur MC68000 soit décrit en tant que forme de réalisation préférée, les spécialistes de la technique comprendront que les programmes suivants pourraient tout aussi aisément être utilisés dans la forme de réalisation décrite dans le brevet antérieur cité, moyennant leur compilation pour qu'ils travaillent avec le processeur de cette forme de réalisation. Les figures 3 et 4 représentent des dia- grammes pour une fonction qui exécute automatiquement un programme défini par l'utilisateur, à la fin de chaque balayage de l'analyseur de spectre. A titre de simplifi- cation, cette fonction est désignée sous le terme de "à la fin du balayage" ou ONEOS. La caractéristique ONEOS inclut en réalité deux fonctions séparées dans le temps. L'une est l'intro- duction d'une suite de commande à distance standards introduite dans l'analyseur de spectre par l'utilisateur. L'analyseur de spectre mémorise ces commandes en vue de leur utilisation ultérieure, et positionne un dra- peau en mémoire pour indiquer qu'une telle suite de com- mande a été mémorisée. L'autre fonction intervient en- suite à la fin de chaque balayage de l'analyseur de spec- tre, lorsque ce dernier accède à la suite de commande et exécute les commandes. Des exemples de ces suites de commande sont le contrôle de limite ou la reprogram- mation de la fréquence centrale de l'appareil. Toute commande valable de l'analyseur de spectre peut être introduite dans la suite de commandes. La figure 3 représente la séquence d'entrée de la suite de commandes. Tout d'abord l'utilisateur sélectionne un dispositif d'entrée, de façon typique le clavier ou un ordinateur à distance raccordé à l'ana- lyseur de spectre par l'intermédiaire du bus HP-IB, bien qu'il soit possible d'introduire tout aussi bien de tel- les suites de commande à partir du panneau frontal de 2559909- l'analyseur de spectre. On introduit la suite de comman- des en introduisant tout d'abord une commande "ONEOS" suivie par une suite de commandes entre des guillemets doubles pour que l'analyseur de spectre fonctionne. La suite de commandes est ensuite mémorisée dans la mémoire de l'analyseur de spectre et un drapeau est positionné pour indiquer que cette suite de commandes a été intro- duites. Un exemple d'une telle suite de commandes est le suivant: ONEOS "MKPK HI; IF MA, LT, -30 THEN TEXT 'SIGNAL TOO LOW'; SRQ 1;ENDIF;" Cette suite de commande provoque l'exécution d'une recher- che d'un pic & marquer,puis le contrôle de l'amplitude que la marque a trouvé, pour voir s'il est inférieur J à - 30 dBm. S il est inférieur à ce niveau, alors l'analyseur de spectre affiche sur l'écran le message "SIGNAL TOO LOW" (signal trop faible) pour alerter l'opé- rateur de cet état indésirable, si bien que l'opérateur peut prendre les dispositions appropriées. L'appareil produit également une demande de service par l'inter- médiaire de l'accès distant situé sur le bus HP-IB afin de notifier à un contrôleur que quelque chose fonctionne mal, de sorte qu'il peut délivrer une alarme ou prendre une autre disposition prédéterminée. La figure 4 est un organigramme de la pro- cédure servant à contrôler s'il existe une suite de com- mandes ONEOS devant être exécutée et à en déclencher l'exécution, si c'est le cas. Dans la programmation de l'analyseur de spectre, il existe un sous-programme qui fonctionne à tout moment et qui fait redémarrer le bala- yage, chaque fois que l'analyseur arrive à la fin d'un balayage. Ce sous-programme est désignéparDOEOSetestrepro- duit aux lignes 125 à 140 dans l'annexe II. Dans:ce sous- programme, on effectue un contrôle pour voir si le dra- peau ONEOS a été positionné, pour indiquer qu'une com- mande ONEOS a été introduite. S'il a été introduit, on appelle une procédure désignée DOSOFTKEY(-1) (lignes 553-567 dans l'annexe II) et la suite de commandes est transmise & l'interpréteur de commande du bus HPIB, pour être exécutée comme si elle constituait un ensemble quel- conque de comlandes périphétiques.Lorsque l'exécution de la suite de commandes est achevée, le balayage suivant est alors déclenché. Ce programme se déroule alors sur une base continue. Il faut noter que la fonction ONEOS est utile non seulement dans des analyseurs de spectre, mais dans d'autres types d'appareils de mesure à fréquence de balayage. Un exemple serait des analyseurs automati- ques de réseaux, contenant des processeurs.ou des contrô- leurs incorporés analogues aux contrôleurs de la forme de réalisation préférée. Une fonction exécutée par la présente forme de réalisation est la mise en place d'une marque sur une trace située sur le dispositif d'affichage de l'ana- lyseur de spectre, au niveau d'une amplitude spécifiée. Cette fonction de mise en place d'une marque d'amplitude est illustrée sur les organigrammes des figures 5A-5C et le résultat de la fonction est illustré sur la figure 6. La fonction est appelée au moyen tout d'a- bord de la spécification d'une marque du type t'amplitude" et ceci règle le mode de fonctionnement. Ensuite le ni- veau d'amplitude, sur lequel la marque doit être placée, est spécifié, et l'analyseur de spectre place la marque au niveau de cette amplitude sur la trace des données sur l'écran (s'il peut la trouver). S'il ne peut pas trouver une trace qui passe par cette amplitudes il dé- termine l'élément qui en est le plus rapprochée de sorte que si quelque chose est situé au-dessus ou au-dessous, il détecte respectivement le point le plus élevé ou le point le plus bas sur la trace. Ce programme de recherche pour la marque est désigné par MKASRCH dans les organigrammes et dans les listings du programme de soutien (voir lignes 107 et suivantes dans l'annexe I). Au début du sous-programme, certains paramètres, incluant un réseau désigné AVOID (voir lignes 155-209 dans l'annexe I), sont initialisés. Ce réseau spécifie les positions, qu'il faut éviter sur le dispositif d'affichage, afin que la marque ne soit pas positionnée au sommet d'autres marques qui existent déjà. Ensuite la trace affichée est extraite et intro- duite dans le tampon o elle peut continuer à être trai- tée. Une fois que ceci est accompli, certains paramètres initiaux de recherche sont initialisés. En particulier la position et l'amplitude de la marque actuelle ainsi que l'amplitude, qui est cherchée, sont réglées. Au début de la recherche, un test est effec- tué dans le bloc de décision 510 pour déterminer si la marque doit réellement être déplacée ou si elle se trouve déjà au niveau de l'amplitude désirée. Si la réponse est oui, la recherche e'st effectuée et rien d'autre n'a besoin d'être effectué. Normalement ce n'est pas le cas, en sorte que le sous-programme de recherche à gauche et à droite de la position actuelle de la marque est déclenché. Son but est d'effectuer une recherche des deux côtés de la position actuelle de la marque pour voir si la trace intersecte le niveau d'amplitude désirée, * à un endroit quelconque sur le dispositif d'affichage. Tout d'abord la recherche-s'effectue dans une direction vers le bord de l'écran puis dans l'autre direction vers l'autre bord de l'écran, sauf si un point satisfaisant à la condition de recherche est trouvé avant que le bord de l'écran ne soit atteint. Le programme pour les sous-programmes de recherche à gauche et de recherche à droite est indiqué aux lignes 116 à 153 de l'annexe I. La recherche s'effec- tue sur une valeur de donnée à la fois. Une seule va- leur de donnée est extraite à la fois pour savoir si elle est supérieure ou inférieure à la valeur désirée. Le programme recherche quelque chose qui soit est égal à la valeur désirée, soit passe par la valeur désirée d'un point au suivant. Si la valeur de donnée est initia- lement supérieure à la valeur désirée, alors le programme recherche quelque chose qui est inférieur ou égal à la valeur désirée. Lorsque ce quelque chose est trouvé, c'est qu'alors la trace est passée par la valeur désirée entre ces deux points numérisés. Une fois qu'une valeur possible est trouvée, elle est mémorisée en vue de son utilisation ultérieure au cours de la procédure. Si la recherche à gauche a été couronnée de succès,mais que le point de donnée trouvé est une marque existante, cette valeur n'est pas mémorisée et la recherche à gauche se poursuit étant donné qu'il faut éviter des marques existantes. Une fois que la recherche à gauche est achevée, la recherche à droite est effec- tuée de la même manière. Si deux positions possibles ont été trouvées pour la marque, l'une à gauche et l'autre à droite de la position initiale d'une marque, on choisit la position qui est la plus proche de la position ini- tiale dans le domaine des fréquences. Si une seule po - sition possible a été trouvée, on choisit cette position en tant que position pour la marque. Si aucune position possible n'a été trouvée,alors le programme effectue un contrôle pour voir si la posi- tion actuelle de la marque est supérieure à la position désirée. Si c'est le cas, une recherche minimum est ef- fectuée pour déterminer l'élément le plus bas sur l'écran étant donné que ce sera le plus proche de la valeur dési- rée, du point de vue amplitude. De façon analogue, si l'amplitude actuelle de la marque n'est pas inférieure & l'amplitude désirée, une recherche de pic sera effec- tuée étant donné que tous les éléments sur l'écran ont alors une amplitude inférieure à l'amplitude désirée. La marque sera alors placée sur le point le plus élevé du dispositif d'affichage. Une fois que la position de la marque est repérée, la marque est enregistrée sur le dispositif d'affichage et le balayage suivant commence. Cette recher- che est effectuée à chaque fin de balayage, alors que la fonction est validée. La figure 6 illustre les résul- tats d'une opération de mise en place d'une marque d'am- plitude, avec une marque 602 placée au niveau spécifié de - 40 dBm sur les pans d'une trace de signal 604 sur le dispositif d'affichage. Les figures 7, 8A-8B et 9 illustrent une fonction de marque qui identifie le pic suivant sur le dispositif d'affichage comme étant soit à droite, soit à gauche de la position actuelle de la marque. Pour exé- cuter cette fonction, il existe fondamentalement deux sous-programmes dont l'un appelle l'autre. Le premier sous-programme est désigné sous le terme de pic à marquer (MKPK) et détermine tel type de recherche de pic doit être effectué. Il commence sur la ligne 71 de l'annexe I. Comme représenté sur la figure 7, des recherches de pics sont possibles pour le pic le plus élevé et pour le pic le plus élevé en second, ce qui ne sera pas décrit de façon plus détaillée ici, et pour le pic suivant situé à droite ou à gauche, ce qui sera décrit ci-après. Lorsque le sous-programme désiré est spé- cifié par l'utilisateur, le programme extrait les données correctes de la trace et les introduits dans un tampon dans lequel la recherche doit être effectuée, puis se branche sur le sous-programme de recherche approprié. Lorsque les fonctions suivantes de recherche à droite ou à gauche sont spécifiées, le premier sous-programme appelle le second sous-programme et lui transmet les paramètres appropriés pour lui indiquer dans quelle di- rection la recherche doit être effectuée. Une fois que la nouvelle position de la marque a été trouvée, cette marque est enregistrée sur le dispositif d'affichage. Le sous-programme du pic suivant, représen- té sur les figures 8A-8B et listé dans l'annexe I en partant de la ligne 34, utilise un certain nombre de paramètres. Ces derniers incluant la position de départ pour la recherche, la direction de la recherche, la lon- gueur du réseau dans lequel est effectuée la recherche, le seuil audessus ou au-dessous duquel les points de données doivent être ignorés, et un paramètre d'excur- sion qui décrit la hauteur d'un pic par-rapport aux don- nées environnantes. Par exemple un pic pourrait être spécifié en tant que signal dans le réseau de données, qui est plus intense, d'au moins 6 dB, que les données de l'autre côté du pic, ce qui fournit une excursion de 6 dB pour chaque mesure. Ces paramètres sont spéci- fiés par l'utilisateur de sorte que ce dernier peut déci- der quelle valeur de pics il faut rechercher -et o il faut les rechercher. Une fois que les valeurs initiales ont été Positionnées, la recherche est déclenchée dans la direc- tion indiquée. Le but de la recherche est de trouver un point de données qui est plus élevé, d'une valeur égale au moins à la valeur de l'excursion, que les points situés des deux côtés de lui. Pour le but de la recherche, il existe trois variables que l'on utilise pour détermi- ner lorsque le moment o un pic a été trouvé: PEAK(pic)-, la valeur de courant la plus intense trouvée lors de la recherche; VALLEY1 (vallée), la valeur la plus faible trouvée sur le côté proche du PEAK; et VALLEY2, la valeur la plus faible trouvée sur le côté éloigné du PEAK. La recherche commence avec le sous-program- me de recherche de VALLEY1, qui consiste à rechercher un point bas ou une vallée entre le point de départ et le pic qui doit être trouvé. La première valeur, qui est extraite du tampon de données, est alors conservée en tant que première valeur VALLEY1 dans le bloc 802. Ensuite un contrôle est effectué pour s'assurer que le point de donnée se situe dans les limites de l'ensemble des paramètres. Simultanément un contrôle est effectué pour savoir si un pic a été trouvé, et s'il l'a été, la procédure est arrêtée et la marque peut être placée sur le dispositif d'affichage à l'emplacement de ce point de données. Ensuite le point de données immédiatement suivant est extrait du tampon et est testé de la même manière pour savoir s'il se situe à l'intérieur des li- mites. Etant donné que l'appareil est encore dans le mode de recherche de VALLEY1, il effectue aussitôt après un contrôle pour voir si le point de donnée est plus bas que le point VALLEY1 actuellement mémorisé. Si c'est le cas, ce point devient le point VALLEY1 étant donné qu'il est plus bas, ce qui indique une pente des- cendante dans la direction de la recherche. Si, d'autre part, le point est plus élevé que le point VALLEY1 actuel, alors le point de donnée est mémorisé en tant que valeur pic et l'appareil passe au mode de recherche du PEAK. A la suite de cela, le point immédiatement suivant de donnée est extrait. Par conséquent, pour chaque point de donnée, un contrôle est tout d'abord effectué pour s'assurer que ce point se situe à l'intérieur des limites, puis une détermination à trois critères est effectuée pour savoir dans lequel des trois modes de recherche suivants 1' appareil se trouve: VALLEY1, VALLEY2 ou PEAK. Alors la poursuite du test des données est effectuée en fonc- tion du mode de recherche qui est utilisé. Une fois que l'appareil se trouve dans le mode de recherche PEAK, chaque nouveau point de donnée sera mémorisé en tant que PEAK tant qu'il est plus éle- vé que la valeur actuelle non mémorisée du PEAK. Lorsque l'on trouve un point de donnée plus bas que le PEAK, alors l'appareil effectue un contrôle pour voir si la différence entre VALLEY1 et PEAK est supérieure au para- mètre d'excursion. Si c'est le cas, alors l'appareil passe au mode de recherche VALLEY2, étant donné que la valeur actuelle de PEAK a été déterminée comme étant un pic lors de l'un des essais. Afin de qualifier un pic devant être marqué sur le dispositif d'affichage, il faut que la différence entre PEAK et VALLEY2 soit également supérieure au para- mètre d'excursion. Si c'est le cas avec le premier point de données une fois que le pic est trouvé, alors la re- cherche est terminée. Si ce n'est pas le cas, alors il faut tester des points successifs de données au moyen de la recherche de VALLEY2. Une fois que l'on a trouvé un point qui est suffisamment bas, la recherche est ter- minée et la marque peut être mise en place sur le dispo- sitif d'affichage. Si l'on trouve un point de donnée qui est plus élevé que le PEAK avant que la condition VALLEY 2 soit satisfaite, l'appareil passe à nouveau au mode de recherche de PEAK. Lorsque l'appareil est dans le mode PEAK, le point immédiatement suivant de données peut être plus bas que le PEAK, diminué du paramètre d'excursion, ce qui ne satisfait pas la première condition pour un pic réel. Comme on peut le voir d'après les blocs en aval du bloc 820 sur la figure 8b, l'appareil revient au mode de recherche de VALLEY 1 jusqu'à ce qu'un nouveau pic possible soit trouvé. Cette partie du sous-programme permet à l'appareil d'éviter l'interprétation de petits bombements ou dents de scie sur le côté d'une trace en tant que pics, si la hauteur du bombement ne dépasse pas le paramètre d'excursion. Comme cela a été mentionné précédemment, une fois que l'on a trouvé un point de données qui satis- fait aux conditions de recherche correspondant au fait que PEAK moins VALLEY1 et PEAK moins VALLEY2 sont tous deux supérieurs aux paramètres d'excursion, alors le point de donnée mémorisé en tant que PEAK est le point désiré, et une marque peut être placée en ce point sur le dispositif d'affichage. La figure 9 illustre le fonctionnement de la fonction de recherche du pic immédiatement suivant à droite. La marque commence sur le pic 910. Lorsque la fonction de recherche du pic immédiatement suivant à droite est effectuée, la marque est déplacée jusqu'au pic 911, à savoir le nouveau pic à droite du pic 910. On peut voir que si la fonction de recherche du pic immé- diatement suivant à droite est à nouveau mise en oeuvre, la marque sera placée sur le pic 912, tandis que si l'on utilisait la fonction de recherche du pic immédiatement suivant du brevet antérieur cité, la marque serait située,- au lieu de cela, sur le pic 913. Il faut noter que, bien que la caractéris- tique de mise en place d'une marque d'amplitude et les caractéristiques de mise en place d'une marque sur le pic immédiatement suivant à droite et à gauche ont été décrites en liaison avec l'analyseur de spectre, il se- rait possible de les utiliser dans d'autres appareils à fréquence de balayage tels que des analyseurs de ré- seaux. En outre les caractéristiques de mise en place d'une marque sur le pic immédiatement suivant à droite et à gauche pourraient être adaptées de manière à repé- rer des vallées ou des points de minimum pour leur uti - lisation dans des analyseurs de réseaux. Les annexes I et II indiquées ci-après four- nissent les instructions de programmes pour la mise en oeuvre des fonctions décrites ci-dessus et représen- tées sur les figures. La majeure partie des programmes listés dans l'annexe II sont des programmes qui sont appelés par les programmes situés dans l'annexe I, lors- qu'ils sont en cours d'exécution. Ces programmes sont écrits selon le langage ALGOL et peuvent être compi- lés de manière à être utilisés sur n'importe quel proces- seur approprié. L'annexe III est une liste des compo- sants à circuits intégrés situés dans l'ensemble contrô- leur représenté sur les figures lA-lF et 2A-2E. APPENDIX I 1 M68KL,L,P, "MRERS" 2 BEGIN 4 EXTERNAL ARRAY NEWSTATE[0:11,MsTATE[0:38]1,MKBLK,TBUF,TRCD[O:11]; INTEGER CONSTANT MKRMODE:=30,MKR:=28,MKRLVL:=29,AMKR:=26,AMLVL:=27, 6 LEVLIN:=15,THRESH:=16,FSTIM: =38; 7 INTEGER TABLE MKRDSP.L:=2050,2055,2155,2160; 8 EXTERNAL. INTEGER MKPX,MKACT; 9 PROCEDURE AFILL(A,LENGTH,VAL); VALUE LENGTH,VAL; ARRAY A[*]; INTEGER LENGTH,VAL; EXTERNAL; 11 PROCEDURE LOADTRC(TADR,TLEN,BUF); VALUE TADR,TLEN; INTEGER TADR,TLEN; 12 ARRAY BUF[*]; EXTERNAL; 13 BYTE PROCEDURE TR662(A); VALUE A; DOUBLE A; EXTERNAL; 14 DOUBLE PROCEDURE TRCADRS(TRC,LEN); VALUE TRC; ALPHA TRC; INTEGER LEN; EXTERNAL; 16 DOUBLE PROCEDURE TRCSETUP(TRC,LEN); VALUE TRC; ALPHA TRC; INTEGER LEN; 17 EXTERNAL; 18 PROCEDURE UPDATEMKR; EXTERNAL. L; 19 BOOLEAN PROCEDURE MEREL; EXTERNAL.L; INTEGER SUBROUTINE MKRTRC; EXTERNAL.L; 22 BYTE SUBROUTINE MKATST; ENTRY; 23 MKATST:=((RIGHT(MSTATE[MKRMODE],8) AND 15)/5)=2; PROCEDURE MRSAVE; ENTRY; 26 IF MSTATE[MKM4ODEI<>O THEN BEGIN 27 INTEGER POINTER MKPTR; 28 STPNTR(MKPTR,ADRS(MKBLK[3*(RIGHT(MSTATE[MKRMODE],12) AND 3)1)); 29 MKPTR:=MSTATE[MKRMODE]; MKPTR[1]:=MSTATE[MRKR]; 31 IF NOT MKATST THEN MKPTR[2]:=MSTATE[MKRLVL]; 32 END; 34 INTEGER PROCEDURE NXTPK(STRT,XINC,BUF,LEN,THR,XCR); VALUE STRT,XINC,LEN,THR,XCR; 36 INTEGER STRT,XINC,LEN,THR,XCR; ARRAY BUF[*]; 37 BEGIN INTEGER POINTER TRC=REGISTER 11; 38 INTEGER CONSTANT VlSRCH:=O,PKSRCH: =I,V2SRCH:=2,FOUND:=-1; 39 INTEGER NPY=REGISTER 7,NPX,VIY=REGISTER 6,PKY=REGISTER 5,PKX, V2Y=REGISTER 4,MODE; 41 DOUBLE TADR=REGISTER 11; 42 PKX:=STRT; 43 VIY:=V2Y:=PKY:=NPY:=IF BUF[STRT] 44 MODE:=V1SRCH; NPX:=STRT+XINC; 46 WHILE NPX=0 AND NPX 47 NPY:=BUF[NPX]; 148 IF NPY 49 CASE MODE OF BEGIN &vlsrc& IF NPY 51 ELSE IF NPY>PKY OR NPY>V1Y+XCR THEN BEGIN 52 PEX:=NPX; 53 PKY:=NPY; 54 MODE:=PKSRCE; END; 56 &pksrc& IF NPY>PKY THEN BEGIN PKY:=NPY; PKX:=NPX; END 57 ELSE IF NPY 58 ELSE IF NPYPKY AIND VIY APPENDIX I (suite) 59 BEGIN V2Y:=NPY; MODE: =V2SRCH; END ELSE IF NPY 62 ELSE IF NPY 63 ELSE IF NPY>PKY THEN 64 BEGIN PKY:=NPY; PKX:=NPX; MODE:=PKSRCH; END; END; 66 NPX:=NPX+XINC; 67 END; 68 NXTPK:=IF MODE=FOUND THEN PKX ELSE STRT; 69 END; 71 PROCEDURE MKPK(C); VALUE C; ALPHA C; ENTRY; 72 BEGIN BYTE POINTER BP=C; 73 INTEGER MRKRX,MRMRY,NEW,NP, PKT R,PKXCR,CNT,I; 74 IF BP[1]='H THEN LDKEY(@113) ELSE BEGIN 76 LOADTRC(MERTRC,1001,TBUF); 77 MRKRX:=MSTATE [MRKR] -1; 78 MRKRY:=MSTATE[MKRLVL]; 79 PKT: =MSTATE [THRESH]; PKXCR:=AMPADC ( "MKPX"); 81 IF BP[2]='H THEN BEGIN 82 NEW:=O; CNT:=0; 83 DO BEGIN NP:=NEW; NEW:=NXTPK(NP,1,TBUF,1001,PKTHR,PKXCR); 84 IF NP<>NEW AND NEW<>MRKRX THEN BEGIN I:=CNT; 86 WHILE 1>0 AND TBUF[TRCD[I-11] 87 TRCD[I]:=TRCD[I-1]; 88 I:=I-1; 89 END; TRCD[I]:=NEW; 91 CNT:=CNT+1; 92 END; 93 END UNTIL NEW=NP;. 94 I:=O; WHILE I 96 TRCD[I]≤MRKRX) DO I:=I+1; 97 IF I 98. MSTATE [MER]:=MRKRX+1; 99 END ELSE MSTATE[M!RI:=NXTPK(MROEX, 101 IF BP[2]='L THEN -1 ELSE 1, 102 TBUF,1001,PKTIHR,PIKXCR)+1; 103 UPDATEMKR; 104 END; END; 107 PROCEDURE MKASRCH; ENTRY; 108 IF MKATST THEN BEGIN 109 INTEGER I=REQISTER 7,J=REGISTER 6,MRKRY=REGISTER 5,SLVL=REGISTER 4; DOUBLE PBUF=REGISTER 9,RBUF=REGISTER 10; 111 INTEGER POINTER PBUFP=PBUF,RBUFP=RBUF; 112 ARRAY AVOID[0:31; 113 INTEGER MRERX,ILAST,JLAST; 114 BYTE SRCH; 116 SUBROUTINE SLFT; 117 BEGIN 118 PBUF:=PBUF+2; APPENDl o i (suite) 22 119 SRC: =FALSE; LOOPNI: ASSEMBLE(CMP -(PBUF),SLVL; DENE I,LOOPN1); 121 IF c TEEN BEGIN 122 I:=I-1; 123 IF I>O THEN 124 LOOPI: ASSEMBLE( CMP -(PBUF),SLVL; DBGE I,LOOP1; SGE SRCH) END ELSE IF > THEN BEGIN 126 I: I-1; *127 IF I>O TEEN 128 LOOP2: ASSEMBLE( CMP -(PBUF),SLVL; DBLE I,LOOP2; SLE SRCR); 129 END; IF SRCH AND ABS(PBUFP-SLVL)>ABS(PBUFP[1]-SLVL) TEN 131 PBUF:=PBUF+2; 132 1:=IF SRCH THEN ARIGHT(PBUF-ADRS(TBUF),1) ELSE -1; 133 END; SUBROUTINE SRGT; 136 BEGIN 137 SRCH:=FALSE; 138 J:=1000-J; 139 LOOPN2: ASSEMBLE(CMP (RBUF)+,SLVL; DBNE J,LOOPN2); IF 141 J:=J-1; 142 IF J>0 THEN 143 LOOP3: ASSEMBLE( CMP (RBUF)+,SLVL; DBGE J,LOOP3; SGE SRCH) 144 END ELSE IF > THEN BEGIN J:=J-1; 146 IF J>O THEN 147 LOOP4: ASSEMBLE( CMP (RBUF)+,SLVL; DBLE J,LOOP4; $SLE SRCH); 148 END; i49 RBUF:=RBUF-2; IF SRCE AND ABS(RBUFP[-1]-SLVL)eABS(RBUFP-SLVL) THEN 151 RBUF:=RBUF-2; 152 J:=IF SRCH THEN ARIGHT(RBUF-ADRS(TBUF),1) ELSE 1001; 153 END; SUBROUTINE SETAVOID; 156 IF I>0 THEN BEGIN 157 I:=I-1; 158 IF (RIGHT(MBLK[tI*3],8) AND 15)/5=2 THEN AVOID[I]:=MKBLK[I*3+1]-1; 159 END; 161 AFILL(AVOID,4,-1); 162 ILAST:=-1; 163 JLAST:=1001; 164 -:=(RIGHT(MSTATE[MKRMODE],12) AND 3); IF I<>MKACT-1 THEN BEGIN 166 WHILE 1>0 DO SETAVOID; 167 I:=MKACT; 168 SETAVOID; 169 END; LOADTRC(MKRTRC,1001,TBUF); 171 SLVL:=MKBLK[3*(RIGHT(MSTATE[MRMODEI,12) AND 3)+.2]; 172 I:=J:=MRKRX:=MSTATE[MRER]-1; 173 PBUF:=RBUF:=ADRS(TBUF[I]); 174 MRKRY:=RBUFP; IF MRY SLVL THEN BEGIN SLFT; SRGT; END; 176 WHILE I>0 AND (I=AVOID OR I=AVOID[1] OR I=AVOID[21 OR I=AVOID[3]) 177 AND I 178 BEGIN ILAST:=I; SLFT; IF I APP.iJ-z -1 (5- t.,. 23 2559909 179 WHILE J≤1000 AND(J=AVOID OR J=AVOID[(1l OR J=AVOID[2] OR J=AVOID[31) AND J<>JLAST 181 DO BEGIN JLAST:=J; SRGT; IF J>1000 THEN J:=JLAST; END; 182 IF I>0 AND J≤1000 THEN 183 MRKRX:=(IF (MRKRX-I 184 (J=AVOID OR J=AVOID(1].OR J=AVOID[2] OR J=AVOID[3])) AND NOT (I=AVOID OR I=AVOID[1] OR I=AVOID[2] OR I=AVOID[31)THEN I ELSE J) i86 ELSE IF I>-O THEN MRKRX:=I 187 ELSE IF J≤1000 TMN MRKRX:=J 188 ELSE BEGIN DOUBLE PBUF=REGISTER 9,PKPIT=REGISTER 10; 189 ASSEMBLE( LEA TBUF,PBUF); -- I:=1000; 191 IF SLVL>MRKRY THEN BEGIN 192 LABEL LOOPG,NOPEAK; 193 J:=-32767; 194 LOOPG:. ASSEMBLE( CMP (PBUF)+,J; BGE NOPEAK; LEA -2(PBUF),PKPIT; MOVE (PKPIT),J; 196 NOPEAX: DBRA I,LOOPG); 197 END ELSE BEGIN 198 LABEL LOOPM,NOPIT; 199 J: =32767; LOOPM: ASSEMBLE( CMP (PBUF)+,J; BLE NOPIT; LEA -2(PBUF),PKPIT; 201 MOVE (PKPIT),J; 202 NOPIT: DBRA I,LOOPM); 203 END; 204 ASSEMBLE( LEA TBUF,PBUF; SUB PBUF,PKPIT); 205 MRKRX:=RIGHT(PKPIT,l1); 206 END; 207 MSTATE [MRKR]:=MRKRX+1; 208 MSTATE [MKRLVL]: =TBUF[MRXRX]; 209 END; 211 SUBROUTINE MKRSPOT; EXTERNAL.L; 212 SUBROUTINE MKneRAD; EXTRNAL.L; 213 PROCEDURE NEWMRKRS; ENTRY; 214 BEGIN INTEGER I,J; 215 INTEGER POINTER MKPTR; 216 SAVE(MSTATE[MKRMODE J,MSTATE[MRKR],MSTATE [MKRLVL]); 217 MKRSAVE; 218 FOR I:=l TO 4 DO BEGIN 219 STPNTR(MKFIR,ADRS(MKBLK[(I-1)#3])); 220 J:=(RIGHT(MKPTR,8) AND 15)/5; 221 IF MKACT<>I AND MKPTR 222 METATE[MKRMODE]: =MKPTR; 223 MSTATE[MR]RI:=MKPTRfl]; 224 MSTATEfMERLVL]:=MKP4CR[21; 225 IF J=2 THEN MKASRCH 226 ELSE IF J=O THEN BEGIN 227 MKRAD; 228 MSTATE[MKRLVL]:=ARIGHT(LEFT(READ(ADRS(DSTRD):NOT FLAG),5),5); 229 END; 230 MKRSPOT; 231 MKRSAVE; 232 END; 233 END; 234 RESTORE(MSTATE[MERMODE],MSTAIE[MRKR I,MSTATE (MKRLVLI]); 235 END newmrkrs; 237 END$ 238 #EOF# 24 2559909 APPENDIX II I M68KLP,"PAT 2" 2 BEGIN 3 GLOBAL INTEGER ARRAY MSTATE[0:38]; 4 BCDL LTEMP1,LTEMP2,LTEMP,XL,MANT,EEVAL; GLOBAL BCDL FSTEP=MSTATE[221,MKRFRQ,AZSPAN,CSIGNL, 6 CFREQ=MSTATE,SPAN=MSTATE [4],AMF=MSTATE [31], 7 FOFSET=MSTATE[18],EPVAL; 8 GLOBAL INTEGER XFLAG,DSPSIZ,PREFIX,EPEXP, 9 BLEDS=MSTATE[8],TLEDS=MSTATE[9]-,RFAT=MSTATE[10], _ SINDEX=MSTATE[36],STIM=MSTATE[37], 11 FSTIM=MSTATE[38,STRIG=mSTATE[14], 12 RLVL=MSTATE[11l],RVBW=MSTATE[12], VIDCON=MSTATE[13], 13 MRKR=MSTATE[28],MKRMODE=MSTATE[30],AMLVL=MSTATE[27], 14 AMKR=MSTATE[261],MKRLVL=MSTATE[29],KFLAG=MSTATE [35], ROFSET=MSTATE[17],THRESH=MSTATE[16],LEVLIN=MSTATE[15], 16 DAC1,DAC2,DAC4,ALIM,ACNT,SRCEID,EFLAG,BITSI=EFLAG, 17 lUFLAG,IFI,IF2,GIN1,GIN2,SRQEN,RPGPTR,RPGSWP, 18 SCANSL,SATN,PLOCK,LEMSK,HPBC,CTIM,CTBASE; 19 GLOBAL BYTE MKRMD=MIMODE+i,MKRTYP=MKRMODE; 21 PROCEDURE SETRCAD(A); VALUE A; INTEGER A; ENTRY; 22 & set trace address in 85662& 23 IF Ac>O THEN 24 WRITE(ADRS(DSAD):NOT FLAG,LEFT(A-1,10)+1); 26 PROCEDULRE LOADTRC(TADR,TLEN,BUF); VALUE TADR,TLEN; INTEGER TADR,TLEN; 27 ARRAY BUF[*]; ENTRY; 28 BEGIN 29 INTEGER CNT=REGISTER 5,DATA=REGISTER 6; DOUBLE PTR=REGISTER 9; 31 SETRCAD(TADR); 32 PTR:=ADRS(BUF); 33 CNT:--TLEN-1; 34 LOOP: READ(ADRS(DSTRD):NOT FLAG,DATA); ASSEMBLE(LSL #5,DATA; ASR #5,DATA; MOVE DATA,(PTR)+; 36 DBRA CNT,LOOP); 37 END loadtrc; 39 BOOLEAN SUBROUTINE MKlEL; ENTRY; MKREL:=MKRMD MOD 3=1; 41 BOOLEAN SUBROUTINE MRKROK; 42 MRSROK:=NOT(FSTIM 43- 44 INTEGER TABLE MKRDSP:=2050,2055,2155,2160; 46 INTEGER SUBROUTINE MERTRC; ENTRY; 47 MKRTRC:= CASE RIGHT(MKRTYP,6) OF ( 148 IF TBIT(VIDCON,11) AND TBIT(TLEDS,1) OR 49 NOT TEST(TLEDS,0,@201) THEN 1 ELSE 2,1,2,4); 51 SUBROUTINE MKEAD; ENTRY; 52 IF MRROK THEN 53 WRITE(ADRS(DSAD):NOT FLAG,MRKR+10214*(MKRTRC-1)) 54 ELSE BEGIN SAVE(MRER,MERMODE,BLEDS); KREY(@114); RESTORE(MRMR,MRMODE,BLEDS); 56 END MKRAD; 58 SUBROUTINE MERsEPOT; ENTRY; APPENDIX II LsutLe. 2559909 59 BEGIN D&RTITE(i, DSP[RIGhT (MKTYP94) AND 3],Q2202) 61 DSITM(LIMIT(MR-4,1000)); 62 D-SITM(LIMIT(MKRLVL-4,1015)+2052); 63 gif; INTEGER SUBROUTINE MKRDOUT; ENTRY; 66 MXDOUT:=(MEKTYP AND 15) MOD 5; 68 PROCEDURE MKRON; ENTRY; 69 BEGIN LABEL EXIT; INTEGER I,KKX; 71 IF MRKR=1023 THEN BEGIN MRER:=501; MKRFRQ:=CFREQ; END; 72 IF NOT TBIT(BLEDS,13) THEN BEGIN 73 CASE MKRDOUT OF BEGIN 74 BEGIN MKRFRQ:=CFREQ+DRIGHT(ROUND((MRKR-501)*SPAN,12),3); 76 IF MKREL THEN MKRFRQ:=MKRFRQ-AMF; END; 77 MIRFRQ:=DRIGHT(EXPSIX(SINDEX+24),3)* 78 (MRKR+MKREL*(AMeR-1)-1); 79 MKRFRQ:=IF MKREL AND MRR=AMKR THEN 1000000000 ELSE 1@6/REAL(DRIGHT(EXPSIX(SINDEX+24). 3)* 81 (MRKR+MEREL*(AMKR-1)-1)); 82 MKRFRQ:=5@2*(MRKR-1+MKREL*(AMKR-1))/ 83 REAL(DRIGHT(EXPSIX(SINDEX+24),3)); 84 BEGIN MKRFRQ:=CFREQ+DRIGHT(ROUND((MRKR-501)*SPAN,12),3); MKRFRQ:=1l12/REAL(MKRFRQ)-(IF MKREL THEN 112/REAL 86 (CFREQ+DRIGHT(ROUND((AMKR-501)*SPAN,12),3)) ELSE 0); 87 END; 88 END; 89 END; IF MRKROK THEN MKRAD 91 ELSE BEGIN SAVE(MRKR,MKRMODE,BLEDS); KEY(@114); 92 RESTORE(MRER,MKRMODE,BLEDS); 93 IF KEYCODEI@113 OR K#5 THEN GO TO EXIT; END MKRAD; 94 IF (MKRTYP AND 15)/5=0 THEN BEGIN IF TBIT(BLEDS,3) THEN BEGIN SAVE(MRKR); 96 MRKR:=LIMIT(MRER-17,968)+l; 97 MKRLVL:=O; MKRAD; 98 REPEAT 32 DO BEGIN 99 READ(ADRS(DSTRD):NOT FLAG,KK); MKRLVL:=MKRLVL+ARIGHT(LEFT(KK,5),5); 101 END; 102 MKRLVL: LIMIT(ARIGHT(MKRLVL,5),1023); RESTORE(MRKR); 103 END ELSE BEGIN 104 MIKRLVL:=ARIGHT(LEFT(READ(ADRS(DSTRD):NOT FLAG),5),5); END; IF TBIT(BLEDS,5) AND MKRLVL(THRESH AND @177774) THEN 106 MKRLVL:=THRESH AND @177774; 107 END; 108 MKRSPOT; 109 IF K#3 THEN BEGIN READ(ADRS(DSRDSCAN):NOT FLAG,I); READ(ADRS(DSTRD):NOT FLAG,I); 111 WRITE(ADRS(DSLDMRKR):NOT FLAG,(IF (I AND ?7777) 112 THEN MRKR ELSE 1001)+ 113 (IF NOT TBIT(KFLAG,2) THEN O ELSE 3072)); 114 BLKAD(17); READ(ADRS(DSTRD):NOT FLAGI); IF (I AND @1777)=146 THEN BEGIN 116 NBLK(MKRMD); DSITM(146); NBLK(17); EBD; END; 11.7 IF NOT TBIT(BLEDS,13) THEN BEGIN BLKAD(MKP2D); 118 DSITM(IF TEST(IF1,10000,t160000) AND APPENDIX Il (suit e) 2559909 119 MIRLVL IF NOT TBIT(BLEDS,13) OR NOT TBIT(UFLAG,6) AND K#2 121 OR SCANSL=O THEN RJUST(MEMD,1040); 122 RJUST(17,1024); 123 EXIT: END MRKR ON; PROCEDURE DOEOS; ENTRY; 126 &eos& BEGIN INTEGER I,J,K; BCDL LTEMP1; 128 IF MKRMD#O AND NOT MKIS THEN 129 BEGIN MEASRCH; MKRON; MERACT; END; %"WMRKRS; 131 IF TBIT(IOFLAG,14) THEN BEGIN 132 DOSOFTKEY(-1); & execute ONEOS command string & 133 END; 134 IF TBIT(TLEDS,10) AND NOT (TBIT(EFLAG,12) OR TBIT(XFLAG,9) OR TBIT(KFLAG,2) AND ACNT 136 THEN BEGIN UNCAL; 137 STRIG:=$20000; END ELSE BEGIN 138 IF NOT SREQ THEN BEGIN XFLAG:=XFLAG OR 6; GO TO RESET; END; 139 IF TBIT(XFLAG,5) THEN YIGSHFT; TRIGR; END; END SCAN;- 142 PROCEDURE DOMRKR; ENTRY; 143 & mrkr & IF MERMD#O THEN BEGIN 144 MKASRCH; MKRON; XFLAG:=SBIT(XFLAG,3); 146 IF TBIT(BLEDS,13) THEN MRKRCNTR; 147 IF (EFLAG AND 3)#0 THEN BEGIN 148 CSIGNL:=COUNTIF(EFLAG.AND 3); 149 IF RPGPTR=18 THEN BEGIN PREFIX:=35+(EFLAG AND 3); DSPITEM; ABLK; END; END ELSE NKRACT; 151 XFLAG:=RBIT(XFLAG,3); 152 IF TBIT(XFLAG,13) AND NOT TBIT(XFLAG,9) 153 THEN STRIG:=@20000; 154 IF MEPAUSE<>O THEN SETDLY(MKPAUSE*1000.0); * IF TBIT(EFLAG,12) THEN BEGIN HPBC:=SBIT(HPBC,13); 156 IF TSCHX="TS" THEN BEGIN 157 TSCHK:=0; 158 AUXCA:=RHDF; 159 END; IOFLAG: =RBIT(IOFLAG,12); 161 EFLAG:=RBIT(EFLAG,12); END; 162 IF MRKR=1001 OR MXPAUSE=O AND NOT TBIT(TLEDS,10) 163 AND TBIT(XFLAG,13) THEN DOEOS; 164 END MRI R; 167 INTEGER CONSTANT NEWLEN:=25; 168 GLOBAL INTEGER CONSTANT NEWLENG:=NEWLEN; 169 DOUBLE TABLE SYMTABADRS: --%FF4006; GLOBAL INTEGER POINTER SYMTAB=SYMTABADRS; 171 GLOBAL INTEGER ARRAY NEWSTATE[O:NEWLEN]; 172 GLOBAL REAL MKPAUSE=NEWSTATE[19]; 173 GLOBAL INTEGER MKACT=NEWSTATE, 174 MKBLK=NEWSTATE[1], & through NEWSTATE[9] & MKFC=NEWSTATE[101, 176 MKNOISE=NEWSTATE[18], 177 MXPX=NEWSTATE [211, 178 MKTRACK=NEWSTATE [22], LÄAL).L 27 sx(5 _2559909 179 AM=NEWSTATE [111], ANNOT=NEWSTATE[121], 181 DLE=NEWSTATE[13], 182 GRAT=NEWSTATE[14], 183 MDS=NEWSTATE[15], 184 TDF=NEWSTATE[16], THE=NEWSTATE 17]; 186 ARRAY NEWSAVE[1:7,0:NEWLEN]; 187 - 188 EXTERNAL INTEGER ARRAY MSTATE[0:38]; 189 INTEGER CONSTANT M ODE:=30,MRR:=28,MKRLVL:=29,AP8:=26,AMLVL:=27; EXTERNAL INTEGER SYMLEN; 192 INTEGER CONSTANT SFTNEST:=lO,SFTLIM:=12+5*SFTNEST; 193 GLOBAL INTEGER ARRAY SFTBLX[O:SFTLIM]; GLOBAL INEiGER TABLE MNEM.L:="MB","WR",%O280,%OOCD,%3004 196,"MB","RD",%0283,%OOCA,%3004 197,"MW","RB",%0280,%00C7,%3004 198,"MR"',"DB",%0196,%00C5,%3004 199,"MW","R ",%0280,%00C2,%3003 ,"MR","D ",%0196,%00CO,%3003 201,"BW","R ",%0280,%00BD,%3003 202,"BR","D ",%0196,%00BB,%3003 203,"SN","GL","S ",%4000,49,%1005, 204 "S2",0,0,2 205,"CO","NT","S ",%4ooo00,59,%1005, 206 "S1",O,O,2 207,"RC","LS",%4o000oo,68,%1004, 208 "RC",0,0,2 209,"SA","VE","S ",%4000,78,%1005, 210 "SV",,0,,2 211,"ML",%4000,87,',1002, 212 "XS",", ",0,0,3 213,'RO","FF","SE","T ",%4000,99,%1007, 214 "RS","Z ",0,0,3 215,"FO","FF","SE","T ",%4000,111,%1007, 216 "KS","V ",0,0,3 217,"VB","o ",%0180,%00B9,%3003 218,"SR","Q ",%0180,%00E7,%3003 219,"RQ","S ",%0180,%00B5,%3003 220,"ID",%0083,%00B4,%3002 221,"ME","M ",%0098,%00B3,%3003 222,"TM",%0180,%OOB1,%3002 223,"DE","T ",%0180,%00AF,%3003 224,"MD","U ",%0083,%00AE,%3003 225,"CL",'RA","VG",%0080,%00AD,%3006 226,"TE","XT",%0180,%00AB,%3004 227,"OP",%0083,%00AA,%3002 228,"RE","V ",%0083,%00A9,%3003 229,"ER","R ",%0083,%00A8,%3003 230,"DO","NE",%0083,%00A7,%3004 231,"CT","M ",%0280,%00A4,%3003 232,"CT","A ",%0280,%00A1,%3003 233,"AU","NI","TS",%0180,%009F,%3006 234,"TH","E ",%1DC1,%0011,%4003 235,"TD","F ",%1CD4,%0010,%4003 236,"MD","S ",%lBD4,%OOOF,%4003 237,"GR","AT",%1AC1,%000E,%4004 238,"DL","E ",%19C1,%OOOD,%4003 oWo N C e e- *C%5 OD,F0s aO) X:p. fw f =_: r.> O O O O0. H: H U' vD^ \0^ UN m O\DU' \O UNVIU.'o xDU-NUItoN W%\D\. D "O\0 ' o'o ' 0 O O r " "t -_'t'O O I*.%'' ^ O. . r o 0 D0 oCo oo t-aT -o.o'.o o: 00 0 O.*.? O O 02 0 0 0 0 0 0 "' O O (Oà -O o-4 C ^ D00*Oo t O O O O-, O 0 0 0OOOOC O O coC 0 00 C0 0Lr '- O.' 00 O O X: O O O stg o g O U testwtS X sWtRwtit È È O o b %P, IIA o o % AÈ ' wÈ 't bt l t 9 1 :,:: i.e.:::::0:.::U *J 0:::a. os:0::ae::e:. 0:::.:.::c- 00........ e...c. ....DTD: :=:::::.:::.:. -::::. - - - -:::: :: :: -': -0--,:: : -0 0.: -:: 0: 0:: : :::::::::::::::::O::......O... -:. 2C>::-- -: 2::::::: 2:::::::. -:::::i.: 2 *- to t 0 ...................-..e.:..... | v- N 0t\ 0 9 w U) \ 0 t 4 N\ Pl 0$ thCC 0\ 0 N0 H C ? V' t-C 0C N Nt LNN N N N N N N N N N N N N N N N N N N N N N N N N N N N N N tN N N N N N N N N N N N C N NCC N N N NC, N N N N N N N APPENDIX II -(suite) 2559909 299 "; ",oo,59 300,"TR",'"MA","TH",%0180,%0015,%3006 301,"TR","DS","P ",%0280,%0012,%3005 302,"MX","MX",%0180,%0010,%3004 303,"CL","RW",%0180,%000E,%3004 304,"BL","AN","K ",%0180,%000C,%3005 305,"VA","VG",%4000,613,%1004, 306 "'S","G ",0,0,3 307,"BX","C ",%4000,623,%1003, 308 "KS","i ",0,0,3 309,"BT","C ",%4000,633,%1003, 310 "KS","l ",,0,,3 311,"BM","L ",%4000,643,%1003, 312 "BL","; ",0,0,3 313,"AX","B ",%4000,653,%1003, 314 "EX","; ",0,0,3 315,"AP","B ",%4000,669,%1003, 316 "AD","D ","TR","A,","TR, A,","TR","B;"0,0,16 317,"AM","BP","L ",%4000,694,%1005, 318 "SU","B ","TR","D,","TR","A,","TR","B;","AD", 319 "D ","TR","A,","TR","D,","DL",";,0,0,31 320,"AM","B ",%17C1,%OOOB,".4003 321, 'MK'","CO","NT",%0080,%OOOB,%3006 322,"MK","MI","N ",%0080,%OOOA,%3005 323,"MX","OF","F ",%0180,%0008,%3005 324,"MX","P ",%16D6,%FFFD,%4003 325,"MX","F ",%15DE,%FFFE,%4003 326,"MX","A ",%14D0,%FFFF,%4003 327,"MX","TR","AC","K ",%13C1,%oo0016,%4007 328 "MX","TY","PE",%0180,%0006,%3006 329,"MX","TR","AC","E ",%0180,%0004,%3007 330,"MX","ST","OP",%4000,763,%1006, 331 "KS","u ",0,0,3 332,"MX","SP",%4000,773,%1004,333 "KS","O ",0,0,3 334,"MK","SS",%4000,783,%1004, 335 "E3","; ",0,0,3 336,"MK","RL",%4000,793,%o1004, 337 "E4","; ",0,0,3 338,"MX","RE","AD",%0180,%0002,%3006 339,"MX","PX",%llDO,%0015,%4004 340 o,"MK","PK",%0180,%0000,%3004 341,"MR","PA","US","E ",%OFD9,%0013,%4007 342,"MK","NO","IS","E ",%12C1,%0012,%4007 343,"MK","N ",%4000,832,%1003, 344 "M2",0,0,2 345,"MK","FC","R ",%4000,843,%1005, 346 "KS","= ",0,0,3 347,"MK","FC",%OECl,%OOOA,%4004 348,"MX","D ",%4000,857,%1003, 349 "M3",0,0,2 350,"MK","CF",%4000,867,%1004, 351 "E2","; ",0,0,3 352,"MX","AC","T ",%0DD6,%0000,%4005 353,"TR","D ",%0ACO,%003F,%4003 354,"TR","C ",%09C0,%003F,%4003 355,"TR","8 ",%08C0,%003F,%4003 356,"TR","A ",%07CO,%003F,%4003 357; 358 GLOBAL INTEGER CONSTANT MLEN:=893; APPENDIX Il (Suite) 25999 S9909 359 INTEGER CONSTANr HASHCODE:-13; 360 GLOBAL INTEGER TABLE HASHPTR.L:=0,6,15,23,29,36,4O, 361 48,59,70,83,92,100,108; 362 GLOBAL INTEGER TABLE OLDCMDS.L:="UP","T2","D3","DM", 363 "CV", "A4", "T3", "SV", "Ml", "LG", "HD", "GZ" "EE", "DN", 364 "DA", "UR", "T,4" "TA", "SW", "OT", "M2", "DB", "CI", "US", 365 "TB", "Si", "M3", "MZ", "C2", "S2", "M4", "MA", "LO", "ES", 366 "Il", "DD", "PA", "I2", "DR", "CA", "UV", "0", "MC", "LL", 367 "GR", "FA", "B.", "AT", "'TS", "Ri", "02", "OL", "FB","El", 368 "EX", "EK", "DT", "B2", "BL", "VB","SP", "SC", "R2","RL", 369 "PD", "O3", "LN", "IB", "E2", "B3 ", "TH", "R3", "PR", "04", 370 "OA", "MS", "MF", "LB","IP","E3","EM", "CR", "B4", "R4", 371 "PS", "T",, E"HZ" 4 W, "'CS', ",",CF, "AI", "TO", "5", 372 "RB", "KZ", "FS", "DI", CT, A2, T","ST","RC", "PU" 373 "MV", "D2", "DL", "A3"; 374 GLOBAL BYTE TABLE KEYTAB.L:=85,119,163,47,66,101, 375 120,0,76,1,42,47,2,84,3,124,121,4,166,5,6,47,99, 376 32,7,116,8,35,102,117,9,10,109,115,60,11,12,62, 377 13,68,32,8,14,122,15,16,103,17,2,6,11,18,19,75, 378 105,29,20,104,108,21,22,35,4,23,27,14,114,24,78, 379 1o6,25,7,26,9,27,38,28,29,16o,81,5,65,1oT,o,i65, 380 30,32,82,31,69,32,97,111,33,34,38,44,161,67,98, 381 118,35,36,28,38,162,37,100; 382 GLOBAL BYTE TABLE IMEDBITS.L:=127,173,229,58,167, 383 75,231,102,183,202,223,154,159,11; 384 GLOBAL DOUBLE TABLE sFLGVAL.L:=%18040028,%06120071, 385 %lB07005B, %28050019,%00230012,%00250015,%1207004D, 386 %00230013,%1207004F,%12070050,%11330011,%0003000F, 38? %29050021,%00250014,%0001007D,%290500A4,%09070058, 388 %04130049,%00230016,%0A070059,%00020024,%02070047, 389 %08070057,%0510005A,%0003000C,%OF100070,%29050022, 390 %0025001E,%12270010,%29030018,%0001007E,%2905001A, 391 %07070056,%0B07004A,%01070046,%03090048,%19040029, 392 %0E10006E; 393 GLOBAL BYTE TABLE PARMTYPE.L:=0,3,1,3,2,3,3,3,4,3,5,6,7,3,8,3 394,9,3,10,3,1,11,3,12,13,3,14,3,3,15,3,3,3,16,3,3,25,-1T,3",3,3 395,18,3,3,3,19,3,3,25,20,3,3,25,21,3,3,3,22,3,3,3,23,3,3,3,24 396,3,22,25,3,3,3,26,3,3,27,3,3,28,3,3,3,29,3,3,30,3,3,25,31,3 397,3,32,3,3,33,22,22,22,22,3,34,3,3,3,35,3,3,16,36,3,3,37,3,3 398,3,38,3,25,39,3,40,3,41,3,42,3,43,3,44,3,45,25,25,25,25,46,3 399,47,3,48,29,16,49,3,29,50,3,22,51,3,52,22,3,53,3,3,54,22,55 400,3,56,3,22,57,3,25,58,59,60,61,62,3,63,64,65,3,66,3,67,68,69 401,22,70,22,71,22,72,22,73,22,22,74,24,75,24,22,76,24,77,24,22 402,78,24,22,79,24,3; 403 EXTERNAL LABEL MKPK,MKREAD,MKTRACE,METYPE,MKOFF,MKMIN 404,MKCONT,BLANK,CLRW,MXMH,TRDSP,TRMATH,TRSTAT,VIEW,MOV 405,ADD,AVG,CONCAT,DIV,TRCLOG,TRCEXP,MIN,MPY,MXM,SMOOTH 406,SUB,SQR,XCH,FFT,FFTKNL,FFTMPY,FFTCNV,TWNDOW,TRGRPH 407,COMPRESS,PDA,PDF,PEAKS, PWRBW, MEAN,VARIANCE,STDEV 408,SUM,SUMSQR,RMS,PLOT,ONEOS,ONSWP,DSPLY,VARDEF,TRDEF 409,DISPOSE,KEYDEF,FUNCDEF,KEYEXC,AUNITS,CTA,CTM,DONE 410,ERR,REV,OP,TEXT,CLRAVG,MDU,DET,TM,MEM,ID,RQS,SRQ 411,VBO,BRD,BWR,MRD,MWR,MRDB,MWRB,MBRD,MBWR; 412 GLOBAL DOUBLE TABLE PRCADRS.L:=ADRS(MKPK),ADRS(MKREAD) 413,ADRS(MKTRACE),ADRS(MKTYPE),ADRS(MKOFF),ADRS(MKMIN) 414,ADRS(MKCONT),ADRS(BLANK),ADRS(CLRW),ADRS(MXMH),ADRS(TRDSP) 415,ADRS(TRMATH),ADRS(TRSTAT),ADRS(VIEW),ADRS(MOV),ADRS(ADD) 416,ADRS(AVG),ADRS(CONCAT),ADRS(DIV),ADRS(TRCLOG),ADRS(TRCEXP) 417,ADRS(MIN),ADRS(MPY),ADRS(MXM),ADRS(SMOOTH),ADRS(SUB) 418,ADRS(SQR),ADRS(XCH),ADRS(FFT),ADRS(FFTKNL),ADRS(FFTMPY) * APPENDIX Il ute) 31 2 559909 419,ADRS(FFTCNV),ADRS(TWNDOW),ADRS(TRGRPn),ADRS (COMPRESS) 420,ADRS(PDA),ADRS(PDF),ADRS(PEAKS),ADRS(PWRBW),ADRS(MEAN) 421,ADRS(VARIANCE),ADRS(STDEV),ADRS(SUM),ADRS(SUMSQR) 422,ADRS(RMS),ADRS(PLOT),ADRS(ONEOS),ADRS(ONSWP),ADRS(DSPLY) 423,ADRS(VARDEF),ADRS(TRDEF),ADRS(DISPOSE),ADRS(KEYDEF). 424,ADRS(FUNCDEF),ADRS(KEYEXC),ADRS(AUNITS),ADRS(CTA) h25,ADRS(CTM),ADRS(DONE),ADRS(ERR),ADRS(REV),ADRS(OP) 426,ADRS(TEXT),ADRS(CLRAVG),ADRS(MDU),ADRS(DET),ADRS(TM) 427,ADRS(MEM),ADRS(ID),ADRS(RQS),ADRS(SRQ),ADRS(VBO) 428,ADRS(BED),ADRS(BWR),ADRS(MRD),ADRS(MWR),ADRS(MRDB) 429,ADRS(MWRB),ADRS(MBRD),ADRS(MBWR); 430 GLOBAL BYTE TABLE PFXSCALE.L:=0,7,7,9,19,16,18,7, 431 - 7,7,7,7,0,5,16,16,0,16,7,7,7,77,7,4,14,5,5,0,16, 1432 0,7,5,0,16,7,7,7,7,9,5,5,16,5,7; 434 INTEGER PROCEDURE SYMPTR(SYMTAB,PTR); VALUE PTR; INTEGER PTR; 435 ARRAY SYMTAB[*]; ENTRY; 436 SYMPTR:=PTR-2-RIGHT((SYMTAB[PTR] AND %FFF)+I,1); 438 INTEGER PROCEDURE NEWCMD(FLG,SYMTAB,SYMLEN,NAME); 439 VALUE FLG,SYMLEN; INTEGER FLG,SYMLEN; ARRAY SYMTAB,NAME[*], 440 ENTRY; 441 IF SYMLEN>O THEN BEGIN LABEL FLOOP,AGAIN,LENCHK,SCOMP,SLOOP,EXIT; 442 INTEGER WORDCNT=REGISTER 2,WORDINIT=REGISTER 3,FLGBITS=REGISTER 1; 443 DOUBLE CBUF=REGISTER 10,SBUF=REGISTER l; 444 WORDINIT:=RIGHT((FLG AND %FFF)-1,1); 445 FLGBITS:=FLG; 446 ASSEMBLE( 447 MOVE.L SYMTAB,SBUF; 448 MOVE SYMLEN,R6; 449 ADD R6,R6; 450 MOVE.L =HlAOO1A,R5; Bits de drapeaux pour comparaison de symboles 451 FLOOP: MOVE O(RI1l,R6),RO; Extraction longueur 452 ROL #4,RO; Isolation des bits de drapeau 453 ETST RO,R5; Vérification du drapeau du symbole 454 BNE LENCEH; Saut si drapeau du symbole 455 LSR #4,RO; Isolation de la longueur du symbole 456 AGAIN: ADDQ #7,RO; Calcul du décalage jusqu'au symbole suivant 457 AND =HFFE,RO; Elimination des informations parasites 458 SUB Ro,R6; Décrémentation du pointeur 459 BGT FLOOP; - Essai du symbole suivant 460 4OVE - #-l,RO; Positionnement du résultat non présent 461 BRA EXIT; 462 LENCHX: LSR #4,RO; Isolation de la longueur du symbole h63 CMP RO,R1; Vérification de la longueur 464 BNE AGAIN; Comparaison de la suite si = 465 SCOMP: MOVE R3,R2; Initialisation du compteur des symboles 466 MOVE.L NAME,R10; Initialisation cmdbuf ptr 467 LEA -6(R11,R6),R9; Initialisation du pointeur symtab 468 SUB R2,R9; A effectuer deux fois (adressage de multiplets) 469 SUB R2,R9; Maintenant pointage sur le début du symbole 470 SLOOP: CMPM (R9)+,(R10)+; Comparaison de mots 471 DBNE R2,SLOOP; 472 BNE AGAIN; Nouvel essai 473 MOVE R6,RO; Calcul de symtab indx 474 LSR #1,RO); 475 EXIT: END ELSE NEWCMD:=-1; 477 INTEGER PROCEDURE OLDCMD(CMD); VALUE CMD; INTEGER CwD; *478 BEGIN INTEGER I,J,K,L; 32 2559909 APPENDIX II (suite)- 479 I:--CMD MOD HASHCODE; 480 J:=HASHPTR[I]; 481 K:=HASHPTR[I+1]-J; 482 L:=SEARCH(OLDCMDS[J]=CMD,K); 483 OLDCMD:=IF L 484 ED OLDCMD; - 486 BCDL PROCEDURE PFVAL(CMD); VALUE CMD; INTEGER CMD; ENTRY; 487 BEGIN DOUBLE SVF; INTEGER SFLG=SVF,SVAL=SVF+2,J; 488 IF (J:=OLDCMD(CMD))≥O AND 489 NOT TBIT(IMEDBITS[RIGHT(J,3)],J AND 7) THEN BEGIN 490 SVF:=SFLGVAL[KEYTAB(J]]; 491 PFVAL:=IF NOT TEST(SFLG,2,30) THEN ACTVAL(RIGHT(SFLG,8)) ELSE O; 492 END ELSE PFVAL:=0; 493 END pfval; 495 INTEGER PROCEDURE TVSRCH(SFLG,LENFLG); VALUE SFLG,LENFLG; 496 INTEGER SFLG,LENFLG; ENTRY; 497 BEGIN INTEGER J; 498 J:=SYMLEN; 499 WHILE J>0 AND ((SYMTAB[J] AND %F000)<>LENFLG OR SYMTAB[J-2]<>SFLG) 500 DO J:=SYMPTR(SYMTAB,J)-1; 501 TVSRCH:=J; 502 END tvsrch - trace/variable/softkey search; 504 BYTE PROCEDURE TR662(A); VALUE A; DOUBLE A; ENTRY; 505 TR662:=A>0 AND A≤4; 507 DOUBLE PROCEDURE TRCADRS(TRC,LEN); VALUE TRC; ALPHA TRC; INTEGER LEN; 508 ENTRY; 509 BEGIN ARRAY NAME[0:12]; BYTE ARRAY NB[0:1]=NAME; 510 DOUBLE TABLE TADR.L:=1,2,4,ADRS(TRCD); 511 INTEGER SLEN,J,K; 512 SLEN:=LENGTH(TRC); 513 MOVE NB:=TRC; 514 NB[SLEN]:=32; 515 IF SLEN=3 AND NAME="TR" AND NB[21≥'A AND NB[2]≤'D THEN BEGIN 516 TRCADRS:=TADR[NB(2]-'A]; 517 LEN:=1001; 518 END ELSE IF (J:=NEWCMD(SLEN,SYMTAB,SYMLEN,NAME))>0 AND 519 TEST(SYMTAB[J],%1000,%F000) AND 520 TEST(SYMTAB[J-2],1,-1) AND 521 (K:--TVSRCH(SYMTAB[J-1],%5000))>O0 THEN BEGIN 522 LEN:=SYMTAB[K-1]; 523 TRCADRS:=ADRS(SYMTAB [SYMPTR(SYMTAB,K)]); 524 END ELSE BEGIN 525 TRCADRS:=O; 526 LEN:=O; 527 END; 528 END TRCADRS; 530 PROCEDURE DOSTRING(I,SYMTAB); VALUE I; INTEGER I; ARRAY SYMTAB[#]; 531 ENTRY; 532 BEGIN DOUBLE SKADRS=SFTBLK[8]; 533 IF I>O THEN BEGIN 534 SFTBLK[12]:=SFTBLK[12]+1; 535 IF SFTBLXKt[12]≤SFTLIM THEN BEGIN 536 IF SFTBLK[12]>1 THEN 537 MOVE SFTBLK[SFTBLK[12]*5+31:=SFTBLK[7],+(5); 538 SFTBLK[71:=SFTBLK[11l]:=SYMTAB[I] AND %FFF; & length of key & APPENDIx 1L (suite) 33 25599O9 o39 STBLKt71:2FTL[j: +1; h 1 SDR S: -= RS (SE $ AB [MPTR (SYMTAB, I)); i42 PARSE(SFTBLK); !43 WHILE SFTBLK[I12]>0 AND SFTBLt[10]=SFTBLK[ll] DO BEGIN i44 SFTBLK[12]:=SFTBLK[12]-1; 545 IF SFTBLK[12]j0 THEN 46 MOVE SFTBLK[7]:=SFTBLK[SFTBLK[12]*5+8],+(5); 547 END; 548 IF SFTBLK[12]=0 THEN SQUEEZE(TVSRCH(1000,%2000)); 549 END ELSE DSMSG(AFB,"SOFTKEY OVERFLOW"); 550 END ELSE DSMSG(AFB,"UNDEFINED SOFTKEY: "); 551 -END dostring; 553 PROCEDURE DOSOFTKEY(N); VALUE N; INTEGER N; ENTRY; 554 BEGIN & search for key & 555 INTEGER K,TSAVE; 556 K:=TVSRCH(N,%2000); 557 IF K>O THEN BEGIN 558 IF -10 559 IF CMDLEN<>O THEN BACKUP(LASTBLK,CMDLEN); 560 CMDLEN:=0; 561 TSAVE:--TLEDS; 562 TLEDS:=RBIT(TLEDS,9); 563 END; 564 DOSTRING(X,SYMTAB); 565 IF TBIT(TSAVE,9) AND -10 566 END; 567 END dosoftkey; 569 PROCEDURE NEWPARM(PARM,FLG); VALUE PARM,FLG; BCDL PARM; INTEGER FLG; 570 BEGIN 571 INTEGER PARMI=PARM; 572 CASE RIGHT(FLG,8)-13 OF BEGIN 573 & mkact & 574 BEGIN 575 INTEGER POINTER MKPTR=REGISTER 9; 576 MKACT:-=LIMIT(MKACT-1,3)+1; 577 MXRSAVE; 578 STPNTR(MKPTR,ADRS(NEWSTATE[MKACT3-2])); 579 MSTATE[MKRMODE]:= 580 TURN(MSTATE[MKRMODE],MKPTR,IF MXREL THEN %FFOO ELSE %FFFF); 581 MSTATE[MRKR]:=MXPTR(l]; 582 MSTATE[MKRLVL]:=MKPTR[2 1; 583 MSTATE[MKRMODE]:=TURN(MSTATE[MKRMODE],LEFT(MKACT-1,12),%3000); 584 IF MSTATE[MRKR]=O0 THEN MSTATE[MRKR]:=501; 585 IF TEST(MSTATE[MKRMODE]I,0,%FF) THEN BEGIN 586 LDKEY('M); 587 MM; 588 IF MKATST THEN MKASRCH; 589 UPDATEMKR; 590 END activate marker; 592 & mkfc & 593 IF ANALYZER=8568 THEN BEGIN PUT(ETBLK,F175); LDKEY(MFC); END; 595 & mkpause & BEGIN PUT(KEYBLK,'s); LDEY('u); LDEY('t); END; 597 & mkpt & COMMENT - MEPT - NOTHING TO DO; APPENDIX II (suite) 2559909 599 & mkpx & COMMENT - MKPX - NOTEING TO DO; 601 & mknoise & BEGIN PUT(KEYBLK,'s); LDKEY(aL+(MKOISE AND 1)); END; 603 & mktrack & BEGIN PUT(EEYELK,176); LDKEY(MTRACK); END; 6o4 605 & mka & IF MKACT>O THEN BEGIN INTEGER RL,LG; 606 LG:=PFVAL("LG"); 607 RL:=PFVAL("RL"); 608 MSTATE[M{RLVL]:= 609 NEWSTATE[MKACT*31:=IF MEREL THEN 610o (IF LG=O THEN PARMI/10 ELSE PARMI/LG)+MSTATE([AMLVL] 611 ELSE (IF LG=0 THEN PARMI/10 ELSE 612 (PARMI-RL)/LG+1000); 613 IF MKATST THEN MKASRCH; 614 UPDATEMKR; 615 END; 617 & mkf & 618 BEGIN ARRAY TBLK[0:12]; 619 BCDL LTEMP--TBLK; 620 TBLE[6:=0; 621 IF ANALYZER=8568 THEN BEGIN 622 LTEMP:=DRIGHT(PARM,2); 623 TBLK[5]:--TBLK[4]:=18; 624 END ELSE BEGIN 625 LTEMP:-PARM; 626 TBLK[4]:=10; 627 END; 628 DOENTRY(TBLK); 629 END; 631 & mkp & 632 BEGIN 633 MSTATE[MRKR]:= 634 LIMIT(PARMI+(IF MKREL THEN MSTATE[AMKR] ELSE 0)-1.1000)+1; 635 UPDATEMKR; 636 END; 638 & amb & LDKEY(IF AMB THEN 'f ELSE 'c); 640 & annot & BEGIN PUT(EEYBLK, 's); LDKEY((ANNOT AND 1)+'o); END; 64î 642 & 41de & LDKEY((DLE AND 1)+'m); 644 & grat k BEGIN PUT(KEYBLK,'s); LDKEY((GRAT AND 1)+'m); END; 646 & mds & COMMENT - MDS - NOTHING TO DO; 648 & tdfr & COMMENT - TDF - NOTHING TO DO; 650 & the & LD1{T((THE AND 1)+'o); 652 END of newparm case; 653 END newparm; 655 END$ 656 tEOF# APPENDIX III LISTE DES CIRCUITS INTEGRES DES FIGURES 1 ET 2 NOM ET N DE REF. DES BLOCS N DU C.I. TYPE HORLOGE U25 XTAL OSC 14.7MHZ 102 U27B 74HC112 U27A 74HCl12 REMISE A L'ETAT INITIAL U43A IC LM339 104 U43B - IC LM339 U43C IC LM339 U43D IC LM339- DECODEUR D'ADRESSES U9 PAL16L8 Programmé U20 PAL16R4 Programmé U28 74LS139 DECODEUR D'ADRESSES U7 74LS138 LT10/LB10 U1LA 74ALS1032 118 Ull 74ALS1032 COMMANDES DU TAMPON U6A 74LS74 116 U63B 74LS74 TAMPONS DESLIGNESDETRANSMISSION U15 74LS373 D'ADRESSES ET DE DONNEES U16 74LS646 - 114 U17 74LS646 INTERFACE PERIPHERIQUE U21 MC68230 ET MINUTERIE HP-IB U14 74LS244 122 U18 TMS9914A U19 75160 U20 75161 DECODEUR D'INTERRUPTIONS U22 74LS148 AUTO-TEST U12 74LS374 204 U13 74LS374 PROCESSEUR U25 MC68000 CD o 0% an OC) DODOOCC P4 P4 04 ne P. C)C D % O% oa o %DD'DD %D %OD'D % H] M M ufln rUL tn tncge4C4 4 4 i-4 cq (4ftrIc'4 cq D 'D D%D t--- --t- r4 P c- z4 Wn D D D DDD t) D DuDCDD p.4c-> cp c pl. o ó Ji U> rt.. o W > H ta XN Z - INPdC REVENDICATIONS 1. Appareil de mesure de fréquences de ba- layage, caractérisé en ce qu'il comporte: - des moyens d'entrée servant à recevoir un signal, - des moyens formant générateur de balayage servant à produire un signal de balayage et une fin du signal de balayage, - des moyens de mesure de fréquences variables, raccordés aux moyens d'entrée et aux moyens formant générateur de balayage de manière & produire un signal de mesure en réponse à la réception d'un signal par les moyens d'entrée, - des moyens de traitement de signaux, raccordés aux mo- yens de mesure de fréquences variables en vue de trai- ter el signal de mesure de manière à produire un signal traité, - des moyens d'affichage raccordés auxmoyensde traitement des signaux pour afficher les signaux traités, - des moyens de mémoire pour mémoriser une séquence d'opé- rations devant être effectuées, et - des moyens de commande raccordés aux moyens de mémoire, aux moyens de traitement des signaux et aux moyens for- mant générateur de balayage de manière à provoquer l'exécution d'une séquence mémorisée d'opérations en réponse à la réception d'une commande prédéterminée. 2. Procédé pour effectuer des mesures de fréquences de balayage, incluant les phases opératoires consistant à - établir une suite d'opérations devant être effectuées sur une grandeurmesurée, comme résultat d'une mesure de fréquences de balayage, - recevoir un signal électrique devant être mesuré, - produire un signal de balayage et une fin de ce signal de balayage, - effectuer une mesure de fréquences de balayage sur le signal électrique reçu de manière à obtenir une gran- deur mesurée en réponse au signal de balayage, et - exécuter la suite établie d'opérations sur la grandeur mesurée en réponse à la fin du signal de balayage.