FR 2472783 A1 19810703 FR 8027615 A 19801226 1 2472783 La présente invention concerne des systèmes de traite- ment de données, et elle a trait plus particulièrement à un système de traitement de données comportant des moyens d'auto- contrôle commandés par programme et des moyens établissant un plan de configuration du système à chaque fois que le programme d'auto-contrôle est appliqué. Il est de plus en plus courant dans les installations de traitement de données d'utiliser des réseaux d'unités de traitement qui sont couplés ensemble par des liaisons de com- munication. La capacité globale de traitement du système est répartie entre ses unités individuelles. Cette évolution a été rendue possible par la mise en application de techniques de fabrication de circuits intégrés à grande échelle, ce qui a permis de réaliser commodément de petits modules de circuits de microprocesseurs relativement peu coûteux qu'on peut faire intervenir commodément en un grand nombre d'endroits différents d'un système. Dans de tels systèmes de traitement de données pré- sentant une telle distribution des modules, il devient de plus en plus important, à mesure que la complexité et la capacité de traitement de chacune des unités individuelles sont augmen- tées, de.-prévoir des moyens et des procédés permettant de vérifier automatiquement l'état de fonctionnement, bon ou mauvais.des unités. En outre, du fait que chaque unité est conçue pour fonctionner de façon plus souple et est par conséquent agencée pour opérer dans différents modes, on doit prévoir des moyens et des procédés permettant d'indiquer la configuration particulière et l'état de chacune des unités aux autres unités du système et pour assurer la mise à jour des informations de configuration et d'état à chaque fois qu'une unité est commutée dans un mode opératoire différent. L'invention a en conséquence pour but de fournir un système de traitement de données qui soit amélioré, en même temps que les procédés selon lesquels il fonctionne. L'invention a également pour but de fournir un système de traitement de données perfectionné, dans lequel une unité indidividuelle de traitement intervenant dans un réseau de traitement réparti, possède des moyens d'auto-contrôle automatiques et pré-programmés. L'invention a en outre pour but de fournir un système du type défini ci-dessus, dans lequel les moyens d'auto-contrô- le sont combinés avec des moyens et des procédés pour indiquer l'état de fonctionnement et la configuration de l'unité. L'invention a également pour but de fournir un système du type défini cidessus, dans lequel les informations d'état et de configuration établies pour une unité individuelle sont automatiquement mises à jour à intervalles périodiques. Pour résoudre les problèmes définis ci-dessus, et conformément à un premier aspect de la présente invention, il est prévu un système de traitement de données comportant un dispositif de traitement et une mémoire et pourvu dé moyens permettant l'exécution des phases opératoires d'un premier programme de test pour déterminer l'état de fonctionnement d'une première section de la mémoire, pour empêcher toute autre opération du système si la première section de mémoire a été déterminée comme fonctionnant de façon erronnée, pour exécuter un second programme de test en vue de déterminer l'état de fonctionnement d'une seconde section de la mémoire et pour mémoriser dans la première section de mémoire les résultats obtenus pendant l'exécution du second programme de test. Conformément à un autre aspect de l'invention, il est prévu un système de traitement de données comportant un processeur, une mémoire à accès sélectif (RAM) et une mémoire fixe (ROM), ledit système comportant des moyens permettant la lecture séquentielle des données contenues dans les emplace- ments de la mémoire fixe, pour calculer un mot de signature basé sur les contenus lus dans des emplacements de la mémoire (ROM) et pour mémoriser le mot de signature dans un emplacement prédéterminé de la mémôire à accès sélectif (RAM). Conformément à un autre aspect de l'invention, il est prévu un système de traitement de données comportant un processeur, une mémoire et plusieurs contrôleurs d'entrée/sortie; ledit système étant pourvu d'un dispositif servant à exécuter les opérations consistant à fournir un signal de demande d'interruption à un contrôleur d'entrée/sortie sélectionné pour le contrôler, à recevoir un signal de réponse d'inter- ruption provenant du contrôleur d'entrée/sortie sélectionné, et à comparer le signal à une valeur de réponse d'interruption prédéterminée, à engendrer un mot d'état d'interruption, comportant un bit d'indication d'erreur, en réponse aux résultats de l'opération de comparaison effectuée dans la phase mentionnée en dernier, et à mémoriser le mot d'état d'interruption dans un emplacement prédéterminé de la mémoire. D'autres avantages et caractéristiques de l'invention seront mis en évidence, dans la suite de la description, donnée à titre d'exemple non limitatif, en référence aux dessins et tableaux annexés dans lesquels: La fig. 1 est un schéma synoptique montrant l'appli- cation de la présente invention à un système de commande d'un terminal de guichet bancaire automatique; La fig. 2 est un schéma synoptique montrant d'autres détails de l'unité de commande à microprocesseur (MPC) et du connecteur d'interface du système de la fig. 1; Les Fig. 3a et 3b, lorsqu'elles sont placées côte-à- côte avec la fig-. 3a située à gauche, représentent un schéma synoptique des circuits intervenant dans l'unité de commande à microprocesseur (MPC) de la fig. 2; Les Fig. 4 à 15 sont des organigrammes mettant en évidence la partie micrologique de microprogrammeblqui réside dans l'unité de commande à microprocesseur (MPC) pour la commande des fonctions d'auto-contrôle et d'état de configura- tion du système; Les tableaux 1 à 23 donnent un exemple des listes de microinstructions intervenant dans la partie microprogrammxe représentée par l'organigramme des Fig. 4 à 15. La Fig. 1 montre l'application de la présente inven- tion à un système de commande d'un guichet bancaire automati- que. Le système comprend une unité de commande à microproces- seur (MPC) 100 qui est couplée, par l'intermédiaire d'un connecteur d'interface 150, à plusieurs contrôleurs d'entrée/ sortie VIOC) 200, 202, 204, 206, 208, un module de mémoire externe 210 et une unité de sécurité 212. Cette dernière comprend un circuit d'interface de sécurité 226, les commuta- teurs de fonctions 226, une unité de distribution d'argent 230 et une unité de dépôt 232. L'organisation générale et la fonction d'un système de ce type, ainsi que les détails d'un type d'unité de sécurité 212 et d'un appareil de distribution d'argent et de dépôt pouvant opérer avec cette unité ont été décrits dans les demandes de brevets (copending)(6088 FR, 6108 FR et 6126 FR). 'Le système de la Fig.l peut former une interface avec tout contrôleur d'opérations par l'intermédiaire d'une liaison de communication comportant un modulateur-démodula- teur 214, qui est relié à un contrôleur decommunication- 200. Un contrôleur d'imprimante 202 forme une interface entre l'unité de commande à microprocesseur MPC et une imprimante de journal 216 ainsi qu'une imprimante de réception 218 qui sert à établir deux formes de sortie sur support en papier pour le système. Un contrôleur de clavier 204 forme une interface entre l'unité de commande à microprocesseur MPC et une unité à clavier 220 à distance qui peut être placée, par exemple, sur le panneau de commande par client qui est prévu avec le terminal de guichet-bancaire. Un contrôleur de lecteur de cartes 206 constitue une interface pour un lecteur de cartes magnétiques 222, agencé par exemple pour lire les données codées magnétiquement se trouvant sur une carte d'identifica- tbn de client qui est inséréedans le panneau de commande. Un contrôleur 208 forme une interface entre l'unité de comman- de à microprocesseur MPC et une unité d'affichage 224 à tube cathodique, également prévue sur le panneau de commande par client, pour fournir des données visuelles d'instructions servant à guider le client dans l'exécution d'une opération. Un module de mémoire externe 210 est relié à l'unité de commande à microprocesseur MPC pour permettre la mémorisation des microprogrammes de système d'exploitation ainsi que pour créer une capacité supplémentaire de mémorisation de données d'utilisation générale.-L'unité de sécurité 212 est reliée à l'unité de commande à microprocesseur MPC par l'intermédiaire de la porte de communication en série de l'unité de commande MPC, et elle établit une communication entre le microprocesseur et l'unité de sécurité par l'intermédiaire d'un circuit d'inter- face 226, en concordance avec un protocole de communications avec transmission de bits en série. La Fig. 2 représente les entrées et les sorties de l'unité de commande à microprocesseur MPC ainsi que le connec- teur d'interface 150, de façon plus détaillée. Le connecteur utilisé dans le mode de réalisation représenté comprend dix logements de connexion de plaquettes de circuits. Les six premiers logements désignés par 151, 152, 153, 154, 155 et 156, sont utilisés pour recevoir respectivement les cinq contrôleurs 200, 202, 204, 206, 208 et la mémoire externe 210. Les logements 7 à 10 sont prévus pour l'extension du système et ils ne sont pas utilisé dans le mode de réali- sation considéré. Comme indiqué sur la Fig. 2, un bus de sélection de contrôleur d'entrée/sortie 157 est prévu pour connecter l'unité de commande à microprocesseur MPC 100 aux dix logements de connexion. Chacune des dix lignes O1XX-OAXX (désignées conformément à une notation hexadécimale) est connectée à une borne de contact spécifiée dans chacun des dix logements d'interface. Lorsque l'unité de commande MPC effectue une opération d'entrée/sortie,une des dix lignes du bus 157 est validée de manière à activer le contrôleur d'entrée/sortie particulier sélectionné. Les contrôleurs d'entrée/sortie insérés dans les logements d'interface ont leurs dix bornes supérieures connectées en commun, de sorte que le dispositif est validé par un signal de sélection de IOC (contrôleur d'entrée/sortie), quel que soit le logement dans lequel le dispositif est inséré. Un bus d'interruption de IOC 158 relie également les logements d'interface 1-10 à l'unité de commande MPC 100. Il est prévu dans le bus onze lignes d'interruption qui sont désignées par IR11-IR14 et IR16-IR22 et qui ont pour effet d'autoriser chacun des contrôleurs d'entrée/sortie à envoyer des signaux de réponse à un ou deux niveaux d'interruption à l'unité de commande MPC. Les lignes de réponse d'interruption sont connectées à la même--paire de bornes de contact dans chacun des logements d'interface, suivant le mode en cascade mis en évidence sur la Fig.2. Cela permet l'affectation correcte des lignes d'inter- ruption aux différents contrôleurs d'entrée/sortie tout en offrant encore la possibilité d'insérer, avec un minimum de restrictions, un contrôleur d'entrée/sortie dans un logement d'interface. La restriction imposée par l'agencement d'inter- face représenté consiste en ce que, si l'un des contrôleurs d'entrée/sortie nécessite deux niveaux d'interruption, le contrôleur inséré dans le logement de-numéro immédiatement supérieur ne doit pas nécessiter un niveau d'interruption. Avec l'agencement à dix logements représenté, cette restric- tion limite le système à l'utilisation d'au maximum cinq dispositifs à deux niveaux d'interruption (insérés dans les logements 1, 3, 5, 7 et 9, ou bien 2, 4, 6, *8 et 10). Il est évident que le connecteur d'interface 150 peut recevoir jusqu'à dix dispositifs à un seul niveau d'interruption. Comme cela sera précisé dans la suite, le microprogramme d'auto-contrôle utilisé dans le système exerce un test de conflit d'interruptions pour vérifier que les restrictions d'interruption définies ci-dessus sont correctement observées. La connexion entre l'unité de commande à microproces- seur MPC et le connecteur d'interface 150 comprend en outre un bus de commande 159 à 8 lignes, un bus d'adresse 160 à 20 lignes et un bus de données 161 à 8 lignes. Les 36 lignes intervenant dans ces trois bus sont reliées en parallèle aux mêmes 36 bornes de contact intervenant dans chacun des loge- ments de connexion. Une seule ligne 162 est connectée à la porte de communication en série avec l'unité de commande MPC et, comme indiqué surJa Fig. 1, elle est réservée à l'unité de sécurité 212. Les Fig. 3a et 3b représentent un schéma de circuit montrant les composants qui interviennent dans l'unité de commande à microprocesseur MPC 100. Pour faciliter la compré- hension du dessin, il faut placer les fig. 3a et 3b l'une à côté de l'autre, la Fig. 3a étant située à gauche. L'unité de commande à microprocesseur MPC comprend un microprocesseur 102 qui peut, par exemple, être un microprocesseur classique fabri- qué sous le numéro de modèle 8088 par la Société "Intel Corporation". Le microprocesseur 102 comprend un bus d'entrée/ sortie multiplexé 103 à 8 lignes, servant à transmettre huit signaux d'adresse ADO-AD7 et à échanger des multiplets de données à 8 bits en parallèle avec un circuit émetteur-récep- teur 108. Ce dernier est relié à un bus interne de données 105 à 8 lignes, qui est lui-même connecté avec un émétteur-récep- teur de IOC 142. Le bus de données 105 permet le transfert des données entre le microprocesseur 102, le contrôleur d'interruption 124 et les modules de mémoire 130, 132, 136 et 138 qui sont prévus à l'intérieur de l'unité de commande MPC, ainsi qu'entre le microprocesseur àt les contrôleurs d'entrée/ sortie. Les données sont transférées vers et à partir des contrôleurs d'entrée/sortie, couplés avec-le connecteur d'in- terface 150 par l'intermédiaire du bus interne de données 105, de l'émetteur-récepteur 142, et du bus de données de IOC 161. Des données sont transférées vers et à partir du microproces- seur et de l'unité de sécurité 212 par l'intermédiaire du bus interne de données 105, de la porte de communication en série 128, et du bus de porte de communication en série 162 à une seule ligne. Un circuit de verrouillage d'adresse à 8 bits 106 est également connecté au bus multiplex 103 et il est utilisé pour-verrouiller les adresses de sortie ADO-AD7 du micropro- cesseur et pour les mémoriser en vue de fournir des signaux d'adresse au reste du système. Un signal de commande ALE est engendré pour verrouiller les signaux sur le bus 103 et pour les transmettre, en même temps que les douze signaux d'adresse MA8-MA19 fournis par le microprocesseur, à un circuit-tampon d'adresse 114 par l'intermédiaire du bus d'adresse 113 à vingt lignes. Les vingt signaux de sortie du circuit tampon 114 constituent des signaux d'adresse MAO-MA19 qui sont transmis par le bus d'adresse 111 à vingt lignes, en vue de l'alimenta- tion des différents circuits de mémoire et de commande de l'unité de commande à microprocesseur MPC et, également, des dispositifs d'entrée/sortie qui sont couplés avec le connecteur d'interface 150. Les signaux d'adresse sont appliqués au dispositif d'entrée/sortie par l'intermédiaire du tampon -d'adresse 144 et du bus d'adresse de IOC 160. Le microprocesseur 102 émet également des signaux de commande SO-S2 par l'intermédiaire du bus de sortie 64 à trois lignes. Les signaux de commande SO-S2-, sont décodés, en même temps qu'un signal d'horloge engendré par un oscillateur 104,; par un circuit de décodage 116, *de façon à obtenir neuf signaux de commande-transmis par le bus de commande 115 à 9 lignes. Un premier signal de commande constitue la commande d'écriture en mémoire avancée AMWC, qui est transmise par l'intermédiaire -d'un circuit tampon 120 et d'un bus de commande de IOC 159 au module de mémoire externe 210 o elle est utilisée pour l'échan- tillonnage des opérations d'écriture de données dans ledit module. Le signal de commande de lecture en mémoire MRDC est utilisé dans l'unité de commande à microprocesseur MPC pour échantillonner ides opérations de lecture en mémoire-dans les modules de mémoire à accès sélectif (RAM) 130 et 132 et dans les modules de mémoire fixe programmable (PROM) 136-138. Le signal MRDC est également transmis, par l'intermédiaire du tampon 120 et du bus de-commande de IOC 159, aux dispositifs d'entrée/sortie pour commander des opérations de lecture en mémoire. Le signal de validation de verrou d'adresse ALE est utilisé seulement dans l'unité de commande à microprocesseur MPC et, comme mentionné précédemment, il assure l'échantillon- nage du verrou.d'adresse 106 pour la génération des signaux d'adresse MAO-MA7. Le signal de validation de données DEN, transmis par le bus de commande 115, est appliqué à l'émetteur-récepteur de données de IOC 142 pour le conditionner en vue de l'exécution d'opérations de transfert de données. Le signal DEN est également appliqué, par l' intermédiaire du tampon 120 et du bus de commande de IOC 159, aux dispositifs d'entrée/sortie. Un signal de commande d'émission-réception de données DR/R est transmis, à l'intérieur de l'unité de commande à micropro- cesseur MPC à l'émetteur-récepteur 142 et il assure le conditionnement correct des circuits de commande de bus de ce dernier pour l'exécution d'opérations d'émission ou de réception. Le signal DT/R est également appliqué aux dispositifs d'entrée/ sortie par l'intermédiaire du bus de commande de IOC 159. Une commande de lecture/sortie IORC est fournie dans le bus de commande 115 et elle est appliquée, à l'intérieur de l'unité à microprocesseur MPC, au contrôleur d'interruption 124, à la porte de communication en série 128 et à la mémoire fixe de diagnostic PROM 110 pour produire des signaux de vali- dation de lecture qui sont appliqués auxdits circuits pendant des opérations d'entrée/sortie. Le signal IORC est également transmis aux contrôleurs d'entrée/sortie par l'intermédiaire du bus de commande 159. Une commande d'écriture d'entrée/sortie IOWC est également engendrée en vue de son application au contrôleur d'interruption 124, à la porte de communication en série 128, et à la mémoire fixe de diagnostic (PROM) 110 pour valider des opérations d'écriture effectuées par l'intermé- diaire des bornes d'entrée/sortie desdits circuits. Le signal IOWC est également transmis par l'intermédiaire du bus de commande de IOC 159. Un signal de commande d'écriture d'entrée-sortie avancée AIOWC-est engendré et utilisé sur le bus de commande de IOC pour activer des registres sélectionnés des dispositifs d'entrée/sortie avant la génération du signal IOWC. Un signal d'accusé de réception d'interruption INTA, également transmis par le bus de commande 115, est appliqué au contrôleur d'interruption 124, ainsi qu'aux contrôleurs d'entrée/sortie en vue de confirmer la réception des signaux d'interruption établis par ces contrôleurs. L'oscillateur 104 applique le signal d'horloge CLK au microprocesseur 104 à des fins classiques de synchronisa- tion et de commande et, en outre, il applique un signal d'entrée au circuit de décodage 116 pour permettre la géné- ration des neuf signaux de commande décrits ci-dessus. En outre, l'oscillateur 104 applique le signal d'horloge à un circuit d'horloge en temps réel 118 qui produit à son tour un signal d'interruption IR8. Le signal IR8 est appliqué au contrôleur d'interruption 124 pour établir une capacité d'interruption interne à l'intérieur de l'unité de commande à microprocesseur MPC. L'unité de commande à microprocesseur MPC est pourvue d'une pastille de mémoire à accès sélectif (RAM) 130 qui a une capacité de mémoire de 256 multiplets. En outre, l'unité de commande à microprocesseur MPC comporte une seconde pas- tille de mémoire à accès sélectif (RAM) 132 qui a une capacité de mémoire de 1 K multiplet. Il est également prévu dans l'unité de commande à microprocesseur MPC une pastille de mémoire fixe programmable de diagnostic (ROM) 110 qui a pour fonction de mémoriser les microprogrammes d'auto-contrôle et de commande de plan de configuration, qui seront décrits en détail dans la suite. Les mémoires à accès sélectif (RAM) 130 et 132 et la mémoire fixe programmable (PROM) 110 sont comman- dées par un circuit de sélection de pastille de mémoire 134 qui reçoit les huit signaux d'adresse MA8-MA15, provenant du bus d'adresse 111 et qui appliquent un signal de sortie de validation aux mémoires (RAM) 130, 132 ou (PROM) 110 en fonc- tion de l'emplacement de mémoire qui fait 1' objet d'un accès par les signaux MA8-MA15. La pastille de-mémoire à accès sélectif (RAM) 130 est adressée par des signaux d'adresse MAO- MA6 qui sont appliqués, à partir du bus d'adresse 111, aux entrées d'adresse À de la pastille (RAM) 130. La pastille de mémoire à accès sélectif (RAM) 132 est adressée par les signaux MAO-MA9. La mémoire fixe programmable de diagnostic (PROM) 110 est adressée, par l'intermédiaire du bus multiplex 103, par les signaux ADO-AD7 provenant directement du microprocesseur 102. Comme mentionné précédemment, des commandes de lecture MRDC sont appliquées aux mémoires à accès sélectif (RAM) 130 et 132, tandis que la commande de lecture IORC est appliquée à la mémoire fixe programmable (PROM) 110. Les données lues dans les mémoires (RAM) 130 et 132 sont transmises, par l'in- termédiaire du bus interne de données 105 et de l'émetteur- récepteur 108, au microprocesseur, tandis que les données lues dansJa mémoire fixe programmable (PROM) 110 sont transmises au microprocesseur par l'intermédiaire du bus multiplex 103. il L'unité de commande à microprocesseur MPC comporte également huit modules de mémoire fixe programmable (PROM) de 2K multiplets 136-138, qui sont utilisés pour mémoriser les microprogrammes utilisés par le système. Les mémoires fixes programmables (PROM) 136-138 sont validées par les signaux de sortie fournis par un circuit de sélection de pastille de mémoire fixe programmable (PROM) 140. Ce dernier circuit est validé par un signal IO/-MEM qui est appliqué à son entrée de commande G et il est en outre commandé par des entrées des signaux d'adresse MA11-MA13 arrivant par l'intermédiaire du bus d'adresse 111. La sortie du circuit de sélection de pas- tille 140 sélectionne une des huit pastilles de mémoire fixe programmable (PROM). Chaque-mémoire fixe programmable (PROM) reçoit à son entrée d'adresse A des signaux d'adresse MAO-MA10 de façon à sélectionner un -emplacement particulier de multiplet. La commande de lecture MRDC est également appliquée aux mémoi- res fixes programmables (PROM) 136-138 sous la forme d'un signal d'échantillonnage de lecture. Il est prévu un décodeur de sélection de dispositif de MPC 122 pour produire des signaux de validation qui sont appliqués à la mémoire fixe programmable de diagnostic PROM 110, au contrôleur d'interruption 124, et à la porte de communica- tion en série 128. Le décodeur 122 décode les signaux d'adresse MA4-MA7 provenant du bus d'adresse 111 et il est commandé par un signal de sortie provenant du décodeur de sélection de dispositif d'entrée/sortie 126. Ce dernier décodeur assure le décodage des signaux d'adresse MA8-MA11 et il est lui-même commandé par un signal IO/MEM qui est fourni par le bus de commande de microprocesseur 164. Les seize signaux de sortie du décodeur 126 représentent le signal d'entrée de commande du décodeur 122 et les quinze signaux de bus de sélection de IOC,' désignés par I/O O1XX-I/O AXX. La porte de communication en série 128 est constituée par un circuit de communication programmable qui reçoit des données d'adresse d'entrée par l'intermédiaire des signaux d'adresse MAO-MA2 ainsi qu'un signal de validation provenant du décodeur de sélection de dispositif de MPC 122. La porte de 12 '2472783 1 2 communication en série 128 reçoit des multipletsde données de 8 bits en parallèle provenant du bus interne de données 105 et elle les transmet, par bits en série, à l'unité de sécurité 212 par l'intermédiaire du bus de données de porte de communi- cation en série 162. Inversement, le circuit de porte de com- munication 128 reçoit des données transmises sous la forme de bits en série par la ligne 162 et il les transmet sous la forme de multiplets de 8 bits en parallèle au bus interne de données 105. Le circuit 128 utilise les signaux de commande de lecture et d'écriture IORC et IOWC et il engendre les signaux d'interruption IR9 et IR10 qui sont respectivement des inter- ruptions d'émission et de réception. Le contrôleur d'interruption 124 est validé par le signal MAO provenant du bus d'adresse 111 et il répond à des signaux d'interruption IR8-IR22, reçus en provenance de l'hor- loge en temps réel 118, de la porte de communication en série 128 et des dispositifs d'entrée/sortie, par l'intermédiaire du bus d'interruption de IOC 158, en engendrant le bignal d'inter- ruption INTR qui est appliqué au microprocesseur 102. Le microprocesseur engendre à son tour le signal de reconnaissance d'interruption INTA qui est appliqué au contrôleur d'inter- ruption 124 et aux dispositifs d'entrée/sortie pour leur signa- ler que le microprocesseur est prêt à traiter l'interruption. Ensuite, le contrôleur d'interruption 124 transmet un vecteur d'interruption au microprocesseur par l'intermédiaire du bus interne de données 105. Le vecteur d'interruption IR est un mot de 32 bits qui est mémorisé dans le contrôleur d'inter- ruption et qui définit au processeur quel emplacement des circuits de mémoire à accès sélectif RAM contient les instruc- tions de traitement de l'interruption-particulière. Les signaux d'adresse MAO-MA7 sont utilisés pour fournir des instructions d'opération aux dispositifs d'entrée/ sortie quand ces derniers sont validés par les signaux de sélection de IOC, désignés par I/O O1XX - I/O OAXX. En consé- quence, chacun des dispositifs d'entrée/sortie qui est connec- té au connecteur d'interface 150 peut décoder les signaux MAO- MA7 de façon à obtenir jusqu'à 256 fonctions de commande. 13 2472783 La mémoire fixe programmable de diagnostic (PROM) 110 mémorise le microprogramme de diagnostic se trouvant dans l'unité de commande à microprocesseur MPC en vue de l'exécution des opérations d'auto-contrôle et de plan de configuration qui sont prévues dans le système selon l'invention. La partie matérielle du système est agencée pour faire en sorte que le microprocesseur 102 émette l'adresse hexadécimale FFFFO pen- dant le cycle de mise sous tension, lorsque le système est initialement mis en service. Lorsque l'adresse FFFFO est appliquée au bs d'adresse 111 et qu'une commande de lecture de mémoire est produite, la première microinstruction des microprogrammes se trouvant dans la mémoire fixe programmable de diagnostic (PROM) 110 est appliquée au microprocesseur et le système commence la routine d'auto-contrôle. Cette dernière peut également être demandée par le logiciel de diagnostic non-résidant, qui est fourni par le contrôleur principal par l'intermédiaire d'un contrôleur de communication 200. Le but de la routine d'auto-contrôle est d'exécuter un contrôle de fonctionnement bon ou mauvais du système. En outre, la routine crée un plan de configuration de système. L'état correct/incorrect du système, après qu'il a été défini par la routine d'auto-contrôle, apparaît visuelle- ment sur un dispositif d'affichage à diodes électrolumines- centes 112, qui est activé par l'intermédiaire de la mémoire fixe programmable de diagnostic (PROM) 110. Il est prévu dans le dispositif d'affichage 112 neuf diodes électroluminescentes qui sont allumées pour indiquer la sous-routine d'auto-contrôle mise en pratique en particulier et qui sont éteintes seulement après que toute la routine a été terminée avec succès. En cas d'incident, un code de défaut particulier est affiché par les diodes pour alerter l'opérateur de la cause du défaut. La routine d'auto-contrôle opère avec le maximum de fiabilité puisqu'elle est contenue dans une mémoire fixe programmable de diagnostic (PROM), elle-même couplée directe- ment avec le microprocesseur 102 par l'intermédiaire du bus multiplex 103. Cette architecture de bus assure l'exécution du microprogramme d'autocontrôle aussi longtemps qu'au moins le 14 2472783 microprocesseur et la mémoire fixe programmable de diagnostic (PROM) soht en fonction. Le processus d'auto-contrôle pour la détection des pannes se déroule de manière qu'une panne exis- tant dans l'unité de commande à microprocesseur MPC, ou bien une réduction de la capacité de mémoire à accès sélectif du module externe 210 à moins de 16 K multiplets soient considé- réescomme une panne catastrophique et provoquent un arrêt de fonctionnement du système, le point de la panne étant codé sur le dispositif d'affichage à diodes 112. Dans ce cas, le déroulement du microprogramme d'auto-contrôle progresse suivant une boucle qui continue à répéter le contrôle de défaut. Si le programme permet de détecter des défauts non catastrophiques, des drapeaux appropriés de signalement d'erreur sont établis, et les indicateurs d'état sont engendrés et introduits dans une table de configuration se trouvant dans la-mémoire RAM 132 de 1' unité de commande à microprocesseur MPC, et le système continue à fonctionner. La routine d'auto-contrôle exécute les opérations de test suivantes dans l'otdre défini ci-dessous 1. Test du microprocesseur (CPU) 2. Test de la mémoire à accès sélectif (RAM) 3. Test de l'horloge en temps réel 4. Test du contrôleur de communication en boucle fermée avec MPC. 5. Calcul de signature de mémoire fixe ROM 6. Test de contrôleur d'entrée/sortie (I/O) 7. Etablissement de configuration de système Les Fig. 4 à 15 représentent un organigramme de fonc- tionnement des circuits des Fig. 1 à 3 avec le microprogramme d'autocontrôle selon la présente invention. Les tableaux 1 à 23 en annexe donnent un exemple des instructions contenues dans un microprogramme d'auto-contrôle, selon l'invention et codées suivant un code d'origine Intel 8088, bien connu des spécia- listes en la matière. Comme indiqué précédemment, le mi-cropro- cesseur 102 peut être par exemple une pastille de microproces- seur du type Intel 8088 et il est par conséquent capable d'exécuter en association avec les autres circuits des Fig.1 à 3 le microprogramme, représenté fonctionnellement sur les Fig. 4 à 15 et détaillé dans les tableaux 1 à 23 en annexe. On va maintenant décrire le fonctionnement du système. La Fig. 4 montre la boucle fondamentale de commande d'auto-contrôle qui, comme précédemment décrit, est amorcée pendant le cycle de mise sous tension du système et qui se déroule sous la forme d'un certain nombre de sous-routines d'auto-contrôle. Dans le processus d'exécution, la routine effectue la compilation de tables de configuration qui donne des informations concernant l'état du système et sa configura- - tion en vue de leur utilisation par le système d'exploitation et par des unités éloignées intervenant dans le réseau de traitement et qui doivent, de temps à autre,- former une inter- face avec l'unité de commande à microprocesseur MPC et ses différents dispositifs d'entrée/sortie. Comme le montre la Fig.4, la première phase A de la boucle de commande d'auto-contrôle assure l'activation du dispositif d'affichage à diodes 112 pour indiquer 0000 0001, ce qui avertit l'opérateur que le système est en train d'exécuter le contrôle initial de la routine, c'est-à-dire le test de l'unité centrale de traitement CPU, ou microprocesseur. La boucle de commande passe ensuite successi- vement aux différentes sous-routines de test B, C, D, E, Y, G et H. Après établissement des tables de configuration de système dans la phase H, le système exécute la phase I o le dispositif d'affichage à diodes est soit activé pour fournir l'indication d'erreur appropriée, *s:'il s'est prôduit des défauts, soit éteint pour signaler la condition correcte. Ensuite, une phase de branchement K est exécutée pour déterminer si le système doit poursuivre dans le mode de diagnostic, auquel cas le branchement OUI est utilisé pour passer à une sous-routine de contrôle de diagnostic L. Lorsque le système doit passer dans le mode opératoire normai il sort de la phase K par l'intermédiaire du branchement NON, la diode no 4 est allumée dans la phase M et le système passe au microprogramme opéra- tionnel dans la phase N pour commencer des opérations normales. Les instructions de microprogramme incluses dans la 16 2472783 boucle de commande d'auto-contrôle de la Fig. 4 ont été repré- sentées en détail, en commençant par la légende "L'auto-contrôle commence ici" du tableau 3,et en poursuivant jusqu'à la légende "fin de la boucle de commande d'auto-contrôle" indiquée dans le tableau 4. La boucle de commande commence par-une série de sept instructions d'initialisation qui commencent par l'instruction ORG OFO0OH et qui se-terminent par l'instruction MOV SP, STACKH. Les instructions suivantes de la boucle de commande sont dési- gnées par les lettres A-N dans les tableaux 3 et 4, en corres- pondance à des désignations semblables utilisées sur la Fig.4. Les informations données dans les tableaux 1 et 2 et en haut du tableau 3 concernent les définitions nécessaires pour la compréhension du programme. Les instructions réelles apparais- sent dans les colonnes n 2 et n 3 de la liste. Comme indiqué dans le tableau 3, la première instruction de la phase A est MOV AL,LEDCPU. Cette instruction charge le registre AL avec un mot de données représentant la combinaison de test d'unité CPU "LEDCPU". Comme indiqué dans le tableau 1, "LEDCPU" est égal à 01 (0000 0001 en notation binaire). A la fin de la phase A, le programme exécute l'instruction JMP CPUTST, qui est l'instruction initiale de la sous-routine de test de CPU et qui commande le programme de façon à passer à l'emplacement-de cette sous-routine. TEST DE CPU La sous-routine de test de CPU, désignée par B, a été mise en évidence dans l'organigramme de la Fig. 5, et a11e va être décrite en détail en référence aux instructions de micro- programme qui sont données dans les tableaux 4 à 7 et qui sont désignées par BO-B6. Ces désignations correspondent aux dési- gnations BO-B6 utilisées dans l'organigramme de la Fig. 5. Le groupe d'instructions B1 contrôle les bus de données du système en transmettant des combinaisons de plusieurs 1 et O alternés par l'intermédiaire des bus et en vérifiant les données reçues pour déterminer s'il existe une condition d'erreur. Si aucune erreur n'est détectée,-la routine progresse jusqu'au groupe d'instructions B2 pour contrôler les différents * modes d'adressage et de transfert de données du microprocesseur. Ensuite, le groupe d'instructions B3 est exécuté pour contrôler la capacité de transfert de commande du microprocesseur d'abord par une vérification des opérations de transfert de commande conditionnel puis par vérification des opérations de transfert de commande par itération. Ensuite, l'unité arithmétique et logique du micropro- cesseur est contrôlée par exécution des instructions B4.Comme indiqué en haut du tableau 6, des instructions sont exécutées pour vérifier des opérations d'incrément, de décrément, de rotation à droite, de-rotation à gauchedabsence d'opération et d'addition. Les opérations finales exécutées dans la sous- routine de test de CPU sont effectuées par exécution des ins- tructions B5 qui contrôle l'aptitude du microprocesseur à exécuter certaines opérations d'analyse de flux de données et de recherche. Si les tests du microprocesseur ont été satis- faisants, le programme exécute l'instruction B6 (JMP SELFLP2) qui permet de passer à l'instruction (SELFLP2) dans la boucle de commande d'autocontrôle. Comme indiqué dans le tableau 3, SELFLP2 est l'instruction initiale de la sous-routine de test de mémoire à accès sélectif C. Puisque cette instruction est JMP MEMTST qui impose de passer à MEMTST, le programme passe à l'instruction CO indiquée dans le tableau 7 pour amorcer la sous-routine RAM TEST (test de mémoire à accès sélectif) Si une erreur a été détectée pendant les tests de CPU, le programme passe à CPUERR, qui passe à son tour à CPUHLT dans la boucle de commande (tableau 3), en vue d'indiquer la détection d'une erreur dans CPU. TEST DE MEMOIRE A ACCES SELECTIF (RAM) La sous-routine RAM TEST (test de mémoire à accès sélectif) représentée sur la Fig. 6 comprend les groupes d'instructions CO-C15 qui sont définis en détail dans les tableaux 7 à 11. Dans cette sous-routine, on contrôle d'abord l'état de fonctionnement de la mémoire à accès sélectif statique (RAM) de MPC 132 et, sison fonctionnement est satisfaisant, on vérifie les circuits du module de mémoire externe 210. En référence à la Fig. 6, après que le dispositif d'affichage à diodes a été activé pour indiquer 0000 0010 dans la phase Cl, la sous-routine de test de mémoire à accès sélectif (RAM) de MPC C2 est amorcée pour vérifier le fonction- nement de la mémoire à accès sélectif (RAM) de MPC 132. La sous-routine C2 fait intervenir les quatre opérations C2-O à C2-3 de la Fig. 7. Les instructions de microprogramme permet- tant l'exécution de ces opérations sont indiquées en haut du tableau 10. L'opération C2-2 correspond à l'autre sous-routine RAMTST qui est représentée dans l'organigramme de la Fig. 7a et qui comprend les phases C2-2-O à C2-2-8. Ces dernières instructions sont définies à leur tour en détail dans le tableau 11. Le processus utilisé pour la vérification de fonction- nalité de la mémoire à accès sélectif (RAM) de MPC est défini dans la sous-routine RAMTST de la Fig. 7a. Après que les para- mètres ont été correctement initialisés dans la phase C2-2-1, le programme écrit, dans chaque emplacement de la mémoire à accès sélectif (RAM), des données de contrôle déterminées en soustrayant le bit de poids le plus faible du bit de poids le plus fort de l'adresse de l'emplacement contrôlé. Ensuite, ces données sont vérifiées dans une opération de lecture dans la phase C2-2-3 et, en cas de détection d'erreur, une opération logique OU exclusif est effectuée entre les données attendues et les données détectées. Des bits erronés de la mémoire à accès sélectif (RAM) sont alors indiqués par l'état logique 1 et une statistique d'erreurs cumulatives est établie par combinaison logique OU des erreurs individuelles détectées pendant l'opération de test. La fonction de détection et d'accumulation d'erreurs est remplie dans la phase C2-2-4. Ensuite, la même séquence de tests est répétée et les données de test sont oemplétées. Cela est réalisé dans les phases C2-2-5 à C2-2-7. Si les erreurs sont détectées pendant la sous-routine C2, on considère cela comme une panne catastrophique et, lorsque le programme progresse jusqu'à la phase C3 (fig. 6), il revient à la phase Cl et l'opération de test de mémoire à accès sélectif (RAM) de MPC est répétée. Cette boucle est répétée aussi lont- temps qu'une erreur est détectée, et le programme d'auto- 19 2472783 contrôle est arrêté, le dispositif d'affichage à diodes indi- quant 0000 0010. En supposant que le test de la mémoire à accès sélec- tif (RAM)de MPC a été satisfaisant, le programme progresse la phase C4 de manière à commencer le test de la mémoire à accès sélectif (RAM) externe. Cela est réalisé dans la sous- routine C9 (contrôle de la capacité de 16 K-multiplets de la mémoire à accès sélectif (RAM) de IOC), cette sous-routine étant représentée de façon plus détaillée sur la Fig.8 et comprenant, comme indiqué, la sousroutine RAMTST, désignée par C9-2. Les instructions comprises dans la sous-toutine C9-2 sont indiquées au milieu du tableau 10. Il est à noter que 1' istruction C9-2 est JMP RAMTST, qui correspond à un passage à la sous-routine RAMTST représentée sur la Fig. 7a et le tableau 11, qui est identique à la sous-routine pré- cédemment utilisée pour vérifier la mémoire à accès sélectif (RAM) de MPC. En conséquence, la combinaison de tett (MSB-LSB) (bit de poids fort-bit de poids faible) est vérifie deux fois pour chaque adresse, en premier lieu dans un mode direct et, en second lieu, dans un mode de complément. Cette opération est effectuée pour chaque bloc de 16 K-multiplets de la mémoire à accès sélectif (RAM) externe. Après que chaque bloc de 16 K- multiplets de la mémoire à accès sélectif (RAM) a été vérifié, les résultats sont enregistrés dans la phase C10 (Fig.6) en vue d'une utilisation dans la table de configuration. Les instructions spécifiques incluses dans la phase C10 sont indiquées dans le tableau 8. Le programme pénètre dans un mot de quatre multiplets de la table (situé dans la mémoire à accès sélectif (RAM) de MPC 132) pour chaque bloc 0o de 16 K-multiplets de la mémoire à accès sélectif (RAM) externe. Les deux premiers multiplets contiennent une adresse définissant le début du bloc de 16 K-multiplets, le troisième multiplet enregistre le nombre de logements d'interface avec IOC de l'unité de commande de mémoire associée et le quatrième multi- plet enregistre les résultats du test de la mémoire à accès sélectif (RAM) . Ce dernier multiplet est un zéro si aucun défaut n'a été détecté et, autrement, il contient les bits d'erreur accumulée qui ont été détectés dans le bloc de 16K-multiplets. Des données appropriées de pointeur et de longueur de table sont alors introduites dans la section de commande d'auto- contrôle de la mémoire à accès sélectif (RAM) 132. Cette opéra- tion est effectuée pour chaque bloc de 16 K-multiplets de mé- moire (RAM) externe qui a été contrôlé. Après que chaque bloc de mémoire (RAM) externe se trouvant dans unlogement d'interface donné a été contrôlé, comme décrit ci-dessus, le programme passe aux phases C12 et C13 (Fig.6) et il recherche des logements d'interface addition- nels qui contiénnent une mémoire externe à vérifier. Les mêmes opérations sont répétées pour chaque unité de commande de mé- moire localisée. Après que toutes les mémoires externes ont été vérifiées, le programme exécute une instruction de branche- ment C14 pour déterminer si un bloc de '16 K-multiplets d'une mémoire externe a été trouvé correct. S'il n'existe aucun indicateur de bloc correct (groupe d'instructions C14) (tableau 9), le programme revient à la phase C4 et répète à nouveau tout le cycle de test de mémoire à accès sélectif (RAM) de IOC. Cette boucle est répétée tant qu'un bloc de 16 K-multi- plets de mémoire à accès sélectif (RAM) de IOC n'a pas été localisé. Cette condition est par conséquent une condition de panne catastrophique qui arrête le programme d'auto-contrôle dans un mode de génération de combinaison, l'indication d'erreur appropriée étant affichée sur le dispositif à diodes. Si au moins un bloc de 16 K-multiplets correct de 'émoire à accès sélectif (RAM) a été décelé, le programme sort de la phase C14 par l'intermédiaire du branchement Y et passe à la phase C15 qui, comme le montre le tableau 9 consiste à passer à l'instruc- tion SELFLP3. Cela ramène le programme à la boucle de commande (tableau 3) , à la suite de quoi l'instruction CALL RTCTST est exécutée pour lancer la sous-routine de contrôle d'horloge en temps réel D. TEST D'HORLOGE EN TEMPS REEL La sous-routine de test d'horloge en temps réel D a été mise en évidence'sur la fig. 9 et le tableau 12. Le test d'horloge en temps réel détermine si l'horloge 21 2472783 en temps réel se trouvant dans l'unité de commande à micropro- cesseur MPC fonctionne correctement. L'horloge en temps réel 118 (Fig. 3a) est conçue pour interrompre le microprocesseur fois par seconde (c'est-àdire approximativement toutes les 17 millisecondes). Les instructions de contrôle de RTC, désignées par D1-D4 vérifient si la fonction d'interruption est applicable. Les instructions D5-D7 vérifient l'apparition d'interruptions prématurées, tandis que les instructions D8- D10 ont pour fonction de s'assurer qu'aucune interruption ne peut se produire lorsque l'horloge en temps réel est invalidée. Une panne de l'horloge en temps réel dans l'un des trois modes de test représente une condition de panne catastrophique et, en conséquence, si le programme sort de la phase D4 par l'intermédiaire du branchement NON, ou bien s'il sort des phases de branchement D7 ou D10 par l'intermédiaire du branche- ment OUI, il revient à la phase Dl et répète le test de l'horloge en temps réel Le programme est par conséquent maintenu dans cette boucle tant qu'une erreur n'est pas détec- tée, et un fonctionnement ultérieur du système est effective- ment interdit, une indication d'erreur appropriée étant affichée par le dispositif à diodes. Si le test d'horloge en temps réel est exécuté amec succès, le programme sort de la phase D10 par l'intermédiaire du branchement NON et il pénètre dans la phase de sortie Dll qui, comme indiqué dans le tableau 12, correspond à une ins- truction de retour (RET). Cela oblige le programme à revenir à la boucle de commande d'auto-contrôle (tableau 3), dans laquelle il pénètre en SELFLP4 pour l'exécution de l'instruc- tion CALL LPBKTST. Cette instruction amorce la sous-routine de E de test du contrôleur/communication en boucle fermée avec MPC. TEST DU CONTROLEUR DE COMMUNICATION EN BOUCLE FERMEE La sous-routine E de test du contrôleur de communi- cation en boucle fermée avec MPC est définie en détail dans l'organigramme de la Fig. 10 et par la liste d'instructions des tableaux 13 et 14. Ce test est conçu pour vérifier la capacité du contrôleur de communication 200, qui peut être, 22 2472783 par exemple, constitué par un module d'interface de communi- cation programmable, fabriqué par la Société Signetics sous le numéro de modèle 2651. La sous-routine E de test du contrôleur de communica- tion avec MPC agit de façon à faire passer le contrôleur de communication dans un mode local de boucle fermée o l'émet- teur et le récepteur sont liés ensemble. Par une transmission et une réception de combinaisons de bits prédéterminés et par un contrôle des résultats, le programme détermine si le contro- leur fonctionne ou non correctement. Comme indiqué sur la Fig. ,la première phase de la sous-routine, désignée par El, modifie l'affichage des diodes pour indiquer 0000 0100, en signalant ainsi que le test du contrôleur de communication en boucle fermée est en cours d'exécution. Dans les phases E2 et E3, le contrôleur de communi- cation est agencé de manière à exécuter une opération locale de boucle fermée avec les interruptions invalidées. Dans les phases E4 et E5, une combinaison de données correspondant à 1 logique est transmis par rotation du bit 1 dans toutes les positions de bit. Ensuite, une combinaison de données complé- mentaire est transmise de telle sorte que le O logique soit amené par rotation dans toutes les positions de bit. Les combinaisons de données reçues sont vérifiées en précision et des bits de données erronés qui sont détectés sont accumulés en mémoire. Puisque, dans ce test, une erreur n'est pas consi- dérée comme catastrophique, les erreurs détectées sont signalées et enregistrées et on laisse le système poursuivre les fonctions de test. A la terminaison du test du contrôleur de communica- tion en boucle fermée, le programme exécute une instruction de sortie E7 (tableau 13), qui est un retour à la boucle de commande de base (tableau 3). Cela provoque l'exécution de l'instruction CALL SIGNTRE, qui est l'instruction initiale de la sous-routine de calculs de signature de mémoire fixe (ROM) F. CALCULS DE SIGNATURE DE MEMOIRE FIXE (ROM) La sous-routine de calcul de signature de mémoire 23 2472783 fixe (ROM) va être décrite en référence à l'organigramme de la Fig. 11 et à la liste d'instructions des tableaux 15 à 17. La sous-routine de calcul de signature intervient comme moyen de vérification des mémoires fixes programmables PROM) de MPC, qui contiennent les microprogrammes d'exécution du système. La sous-routine de calcul effectue le calcul d'une signature pour chaque K-multiplet se trouvant dans les mémoires fixes programmables (PROM). La signature est calculée sous la forme d'un mot décimal codé binaire (BCD) à huit chiffresqui devrait avoir la même valeur que celle déterminée à partir des données se trouvant sur une bande de papier et utilisées pour program- mer la mémoire fixe programmable (PROM). Une valeur de signa- ture de 76160070 est interprétée comme une absence d'un K-mul- tiplet dans les mémoires fixes programmables (PROM). Aucune condition d'erreur n'est engendrée en relation avec la sous- routine de calcul de signature de mémoire fixe (ROM)-puisque le système décrit ci-dessus n'effectue pas une comparaison de la signature calculée avec la valeur connue de signature.! Dans la première phase Fl de la sousroutine, le dispositif d'affichage à diodes électroluminescentes est activé pour indiquer 0000 0101 de façon à signaler que la sous-routine de calcul de signature est en cours d'exécution. Ensuite, dans la phase F2, le processeur est activé pour adresser le début du K-multiplet initial dans la mémoire fixe programmable (PROM), Dans la phase F3, un mot de signature est engendré par lecture du contenu de la mémoire fixe pro- grammable (PROM) et par accumulation des bits de données se trouvant dans celle-ci en relation avec un processus prédéfini de calcul de signature. Ce processus est décrit en haut du tableau 16 et il est exécuté en réglant d'abord la valeur de signature à 00000000 (BCD) (décimal codé binaire). Ensuite, la valeur de signature est multipliée par 2, et un premier multiplet de données est extrait de la mémoire fixe programmable (PROM) et est ajouté au total. Cette opération provoque un report du chiffre de poids le plus fort de la somme totale, et une valeur-"1" (décimal codé binaire) est ajoutée. Cette valeur devient alors la valeur de signature et les phases B à 24 2472783 D sont répétées pour poursuivre l'opération de calcul. LOrsque 1024 multiplets ont été extraits de la mémoire fixe programmable et on été par conséquent accumulés, le pro- gramme--passe à la phase F4 o le mot de signature calculée est enregistré dans la table de configuration. Comme indiqué dans le Tableau 15, ce processus est exécuté en introduisant l'adres- se, décalée de deux multiplets, de la mémoire fixe programmable (PROM) dans la zone d'enregistrement des signatures, puis en introduisant le mot de signature de quatre multiplets (huit chiffres en décimal codé binaire). Ensuite, la valeur du pointeur de signature est transférée dans la zone de table de signatures. Ensuite, dans la phase P5, le pointeur d'adresse de mémoire fixe programmable (PROM) est augmenté de 1K-multiplet., en préparation à la génération du mot de signature suivante. Lorsque des signatures ont été calculées pour chaque bloc 1K de la mémoire fixe programmable. (PROM), le programme avance jusqu'à la phase de sortie F7 et il effectue un retour à la boucle de commande d'auto- contrôle (tableau 3), puis il commence la sous-routine G par exécution de l'instruction d'appel CALL IOTST. TEST DU CONTROLEUR D'ENTREE/SORTIE Le test du contrôleur d'entrée/sortie est mis en évi- dence dans les organigrammes des Fig. 12 à 14 et dans la liste d'instructions de programme des tableaux 18, 19,20 et du haut du tableau 21. Le test du contrôleur d'entrée/sortie détermine l'état d'autocontrôle du contrôleur, puisil vérifie la réponse à interruption du contrôleur. Comme indiqué sur la Fig. 12, le nombre de logements d interface du.contrôleur d'entrée/sortie IOC est réglé à 0 dans la phase G1, puis le dispositif d'afficha- ge à diodes est activé dans la phase G2 pour:[indiquer le numéro de logements d'interface, et le chiffre 0110, qui indique que le test du contrôleur d'entrée/sortie IOC est en cours d'exécu- - tion. Ensuite, la sous-routine d'état di'auto-contrôle du contrôleur G3 est exécutée. Cette sous-routine est mise en évi- dence dans l'organigramme de la Fig. 13 et dans la liste d'ins- tructions du tableau 19. Dans la phase G3-1, le programme lit le numéro d'identification du premier contrôleur et l'enregis- tre dans la table de configuration en même temps que le numé- ro de logements d'entrée/sortie. Dans la phase G3-2, il détermine si le contrôleur a une capacité d'auto-contrôle. Si la réponse à cette question est "oui", un ordre d'auto- contrôle est alors émis, et le système attend que le contrô- leur ait terminé le test. Si des erreurs sont détectées pen- dant l'opération d'auto-contrôle du contrôleur, elles sont alors indiquées par des drapeaux appropriés. Ensuite, dans la phase G3-3, l'état du contrôleur est enregistré dans la zone de sauvegarde de mémoire de la table de configuration. Deux multiplets de données de confi- guration d'état de contrôleur sont introduits dans la zone de sauvegarde qui est adjacente au multiplet représentant le numéro de logements de IOC précédemment introduit et du multi- plet d'identification de contrôleur. Ensuite, le programme passe à la phase G3-4 et exécute une instruction de retour qui amorce la phase G4 (Fig.12) en demandant l'exécution de la sous-routine de test de réponse à interruption et de conflit d'interruptions. La sous-routine de test de réponse à interruption et de conflit a été mise en évidence dans l'organigramme de la fig. 14 et dans la liste d'instructions représentée dans le tableau 20 et en haut du tableau 21. Cette sous-routine vérifie la réponse à interruption pour chaque contrôleur et elle détermine s'il y a conflit d'interruptions entre des contrôleurs adjacents. Un conflit d'interruptions est produit lorsqu'un contrôleur demandant un niveau d'interruption est situé dans un logement d'interface à la suite d-'tun contrôleur nécessitant deux niveaux d'interruption. La détection d'un conflit d'interruptions provoque l'allumage de la diode 12 du dispositif d'affichage 112 par programme afin de signaler la condition de conflit d'interruptions. Le programme (Fig.14) effectue d'abord la désignation d'un vecteur d'interruption dans la phase G4-1, puis il envoie une demande d'interruption au logement de contrôleur sélectionné dans la phase G4-2. 26 2472783 Dans la phase G4-3, le niveau d'interruption désigné est vérifié pour définir si une réponse a été reçue comme cela était attendu; si aucune réponse n'est arrivée, ou bien en cas de réponse erronnée, le programme sort de G4-3 par l'inter- médiaire du branchement NON pour passer à la phase G4-6, o un indicateur d'erreur approprié est établi. Si la réponse dinterruption attendue est détectée, le programme sort de G4-3 pour passer à G4-4 par l'intermédiai- re du branchement OUI et il vérifie si le nombre d'interrup- tions reçues est égal à 0. Si la réponse est "OUI", le programme passe directement à la phase G4-7, o l'état de réponse d'interruption est enregistré dans la table de configuration. Si le nombre d'interruptions reçues n'est pas égal à 0, le programme sort de la phase G4-4 par l'intermédiai- re du branchement NON et il passe à la phase G4-5, o il détermine si le contrôleur qui est intervenu dans le logement d'interface précédent a nécessité deux interruptions. Si la réponse à cette question est "NON", le programme passe à G4-7 pour effectuer la compilation de l'état de réponse d'interruption pour la table de configuration. Si la réponse déterminée dans la phase G4-5 est "OUI", le programme passe à la phase G4-6, et il établit un indicateur d'erreur appro- prié. Dans la phase G4-7, le programme introduit un seul multiplet d'état d'interruption dans l'emplacement de la table de configuration correspondant au contrôleur dont le test est exécuté: le multiplet d'état d'interruption est un multiplet de huit bits, dans lequel les bits 0-5 indiquent la valeur de niveau d'interruption, le bit 6 indique si le teàt d'interruption a été satisfaisant ou non, tandis que le bit 7 indique le nombre de niveaux d'interruption pour le contrôleur. Après terminaison du test de réponse à interruption et de conflit d'interruptions pour le contrôleur sélectionné, le programme passe à la phase G5 (Fig. 12) et il augmente d'une unité le numéro de logements d'interface. Lorsque tous les logements d'interface ont été contrôlés comme décrit ci- dessus, le programme passe à la phase G7 o la diode 12 du 27 2472783 dispositif d'affichage 112 est allumée si une erreur d'inter- ruption a été détectée. Ensuite le programme passe à la phase de sortie G8 qui, comme indiqué dans le tableau 18, est une instruction de retour. Cela ramène le programme à la boucle de commande (tableau 3), à la suite de quoi l'instruction CALL SYSCNFG est exécutée pour lancer la sousroutine de création de configuration de système H. CREATION DE CONFIGURATION DE SYSTEME La sous-routine de création de configuration de système H est définie dans l'organigramme de la Fig. 15 et dans la liste d'instructions indiquée au milieu du tableau 21. La phase initiale Hi active le dispositif d'affichage à diodes de manière qu'il indique 0000 0111, *en signalant que la sous-routine de création de configuration de système est en cours d'exécution. Ensuite, comme indiqué dans le tableau 21,les trois instructions H2, H3 et H4 sont exécutées. Chacuné de ces instructions est une instruction d'appel qui est suivie par une instruction de retour. L'instruction de - retour final H5 oblige le programme à sortir de la sous- routine et à revenir à la boucle de commande d'auto-contrôle pour exécuter l'instruction CALL TSTSTS en vue du lancement de la sous-routine I. Cette dernière comporte les phases 10, Il et 12 indiquées sur la Fig.4, et décrites en référence à la liste d'instructions de programme du tableau 22. Dans la phase 10, le programme détermine si des erreurs ont été détectées pendant la routine d'auto-contrôle. Si aucune erreur n'a été détectée, le programme sort par l'intermédiaire du branchement NON et exécute la phase I2 pour éteindre les diodes du dispositif d'affichage 112. Si des erreurs ont été détectées, le programme effectue la phase Il afin-.d'afficher le motif d'erreur approprié sur le dispositif à diodes. Comme précédemment décrit, neuf diodes sont utili- sées. Les diodes 1 à 4 affichent une indication de la sous-routine d'autocontrôle qui a détecté la condition d'erreur. Les sous--routines sont indiquées par les diodes 1 à 4, conformément au tableau suivant 0001 test de CPU (microprocesseur) - test de mémoire à accès sélectif (RAM) 0011 - test d'horloge en temps réel - test de contrôleur de communication en boucle fermée. 0101 - calcul de signature de mémoire fixe (ROM) - test de contrôleur d'entrée/sortie (IOC) 0111 - plan de configuration de système - 1000 - initialisation des microprogrammes dans le traitement. Les diodes 5 à 8 affichent le numéro du logement d'interface de contrôleur pour lequel l'erreur a été détectée. Un affichage de'0000 par les diodes 5 à 8 indique que l'erreur a été détectée dans l'unité de commande à micropro- cesseur MPC pendant un test de MPC. La diode 12 fournit une indication d'une erreur de-conflit d'interruptions. Ensỉte, le programme sort de la routine d'auto- contrôle par l'intermédiaire des phases K,'L, M et N. Dans la phase K, le programme détermine si une opération de diag- nostic doit être poursuivie et, -si la réponse est "OUI", il passe à une sous-routine de contrôle de diagnostic L. Si le système doit commencer à fonctionner en marche normale, le programme sort de la phase K par l'intermédiaire du branche- ment NON, il allume la diode 4 dans la phase M et il exécute la sousroutine de microprogramme d'application N. Il est à noter que le tableau 23 donne une diversité de sous-routines de commande qui sont utilisées dans les phases de programme indiquées à droite de'la liste. On voit par conséquent, que, à chaque fois que le système est mis sous tension, la routine d'auto-contrôle est exécutée pour vérifier l'état de fonctionnement du système et pour créer un plan de configuration établissant des données concernant lfétat et la configuration existante du système. Des données sont disponibles en vue d'un accès par le système d'exploitation et par le logiciel d'application pour déterminer o se trouvent les différents contrôleurs d'entrée/sortie'et quel est leur état actuel. Les systèmes de commande externes peuvent par conséquent déterminer comment effectuer leurs propres vecteurs d'interruption, leur niveau, les conditions physiques d'entrée/sortie, et les programmes de gestion des périphériques pour permettre leur propre accès aux contrôleurs et pour modifier leur traitement dans l'éventualité o des parties du système seraient indiquées comme étant en mauvais état de fonctionnement. Bien entendu, l'invention n'est pas limitée aux modes de réalisation décrits ci-dessus, qui peuvent faire l'objet de nombreuses variantes. Cn 2 z:z ô,, z r- D r-aCD- -MM0 C0 LA C n x i X m-O CC/C (APoQ-H W7N Gi OD Hr- CH CC VICiOH IH ICi in 0pu - -4 ZZ 4-,.C 4-,,ri-i jCi ioi > -- -) O ri CD - 0 V) i 3 z ( Q " i '0; C o G O Co D H N "C Ni - ' CIi (,'H 1) i (A IL rl D pu>CO-CWq 0UXq + 0() HOOQHa+'oQi+NNH(JiCi+iJ z +O + + + - ++ + + 4- 4 + +,+ N H H H H rC n - Co 0 rt (DI 0 P 7(D CL - (- (1 F (D rt r rt rt rF- O hC,/r (D Fl* P C - (D fhOO 000P O( O rt P) HH O rC H.C-P h PHih O IrC P -H H p.O HH CLpn bH H-.h --h H- - rtpO C) r? nOC-h O GO O. P CD O C n - nb H (D H I tDb r- r- - r- r- rr r-r- oss= = o C: DCic: =C -O t0iiTo OD 2G Z 0- X. N n ô3A Cb -,V r CD CD --j -0 em N o N m N O e N e m F31 H O z t-4 N m m m m m rni rl C CD,CD.CD C CD CD CD F-in Hi i U) O CDOCO. Zr C o,(D MFC Go tao HO( -Hi1 lH Hi H GI IC O CD H t? onH I 1 r- À O:: H-PH p.Q Q. CD H C,E::C P m _ D Ei ED rt 10 U) O. tD 0 z 0 DD OQ pO H (D P ( rt nD P. FI. 1- Ho 0 a p pu GO (D pD C') c:i oCZ rl D - C G) C) G"ni (,A -na rlm c:c: 0o on on on Q Q =4= o O CD CD il CD CD P r r? r? (D (D eO.p M-3 - F3:> M7 t- e O: Iit N! P H H' HGO H eooi 'H tn cn o N C rD p N O W tx P- O rtmr O H. P. tzirr? cn rt D (D *ii - OO C Den CU rt m cn *. e o ul ( Ne'tiQ7 cn W GZ O L- O CLi (D *31.2472783 TABLEAU 2 EMPLACEMENTS DE RAM DE MPC MPCRAMT EQU X'03FF' Haut de RAM de MPC MPCRAMB EQU XOO'0000 Bas de RAM de MPC MPCRAMS EQU X'0400' Capacité de RAM de MPC STACKH EQU X'017F' Haut de zone de pile SIGTBL EQU X'0180' Bas de table de signatures !OTBL EQU SIGTBL+192Bas de table de config. d'E/S MEMTBL EQU IOTBL+64 Bas de table de config. de mémoire ZONE DE MANOEUVRE DE SIGNATURES SIG EQU STCAEND Tampon de 8 multiplets pour routine de SIGO SIGR2 EQU SIG+ 8 Tampon de 2 multiplets pour routine de SIGO SIGR3 EQU SIGR2+2 Tampon de 2 multiplets pour routine de SIGO ROtMAR EQU SIGR3+2 Adresse de ROM SIGBUF E0U ROMADR+2 Sauvegarde de pointeur de table de config. de ROMSIZE EQU 1024 Capacité de ROM (IK) sig. ici DEFINITIONS D'IDENTIFICATION ID DE CONTROLEUR KBDID EQU 1 ID de clavier MCRID EQU 2 ID de lecteur de cartes magné. PRTID EQU 3 ID d'imprimante CRTID EQU 4 ID d'horloge en temps réel COMID EQU 5 ID de contrôleur de communication MPCID EQU 6 Contrôleur à microprocesseur MEMID EQU 7 ID de plaquette mémoire DEFINITIONS DE PORTE D'E/S de MPC SWTCH EQU 1 Porte à commutateur et tampon LEDPORTA EQU X'20' Porte A de PROM de diag. LEDPORTB EQU X'21' Porte B de PROM de diag. test aux 10C TIACKPT EQU X'61' Emission de signal d'accusé de récept.d'inter.de/ TESTCMPT EQU X'62' Emission de signal de valid. d'inter. de test ENBRTC EQU O.Vai dation d'horoogeen temps réel aux 10C DSBRTC EQU O Vallatlond oroge CLRRTC EQU O Effacement d'inter. d'horloge DEFINITIONS DE PORTE DE COMMUNICATIONS DE CONTROLEUR MPC 2651 COMMO EMU X'30' Lecture de registre de récept.et conservation COMMI EQU X'31' Lecture de re.d'état COMM2 EQU X'32' Lecture de 1/2 reg. de mode COMM3 EQU X'33' Lecture de reg. de commande COMM4 EQU X'34' Ecriture de reg. de conservation de X-MIT COMM5 EQU X'35' Ecriture de reg. de SYN1 (SYN2)OLE COMM6 EQU X'36' Ecriture de 1/2 reg. de mode COMM7 EQU X'37' Ecriture de reg. de commande DEFINITIONS DE SOUS-PORTE IDPORT EQU O N de porte pour lecture de ID CNFGPRTI EQU 1 N de porte pour lecture de config. CNFGPRT2 EQU 2 INTTST EQU 3 N de porte pour émettre demande d'interruption BASEPORT EQU 4 N de porte pour adresse de base LABELS DEFINIS EXTERIEUREMENT DIAGMON EQU O Pointer le contrôleur de diagnostic FIRMWARE EQU O Pointer l'entrée de microprogrammes. TABLEAU 3 AUTRES SYMBOLES RTCIL EQU 8 Niveau d'interruption d'horloge Mise sous tension/remise en marche commence ici CODESG SEGMENT AT OFOOOH Début de segment de code ORG OFFFOH JMP FAR PTR SELFTST Boucle de commande d'auto-contrôle Auto-contrôle commence ici ORG OFOOOH INITIAI PROGNM DB '7712 SELF TEST' SELFTST: NOP MOV AX,PARAO MOV- DS,AX Affectation de segment de données MOV SS,AX Affectation de segment de pile MOV SP,STACKH Etablissement de pointeur de pile TS 8088au sommet de la pile TEST de CPU 808 UNE INSTRUCTION ejd CPi SELFLP1: IMOV AL,LEDCPUObtention de combinaison d a ic age/ NOT AL. Complément des diodes allumées OUT LEDPORTA,ALAffichage de combinaison par diodes JMP CPUTST Test de CPU 8088 CPUHLT: HLT Erreur de CPU si ce point atteint TEST DE MEMOIRE A ACCES SELECTIF RAM SELFLP2: JMP MEMTST TEST D'HORLOGE EN TEMPS REEL SELFLP3: CALL RTCTST TEST SUR PLAQUETTE EN BOUCLE FERMEE DE CONTROLEUR DE COM. 2651 AVCE CMP SELFLP4: CALL LPBKTST CALCUL DE SIGNATURES DE ROM SELFLP5: CALL SIGNTRE TEST D'INTERFACE DE CONTROLEUR D'E/S CALL IOTST CREATION DE CONFIGURATION DE SYSTEME CALL SYSCNFG AFFICHAGE DE COMBINAISON PAR DIODES POUR L'ETAT D'AUTO- CONTROLE cl TSTSTS LISATION t ) ) A B C D E F G H I SORTIE D'A.UTO-C.OTROLE TABLEAU 4 IN AL,S.TCH Lecture d'état de tampon et commutateur) SAL AL,1 CF=Mode de sortie,O=mode demicroprogramme K JAE DIAG1O0N CF=l mode de diagnostic M0V ALM[LEDPTRNIL =copie d'affichage par diodes OR AL,8 Addition d'un bit pour allumage de diodes) NOT AL par microprogramme) OUT LEDrORTA,AL Affichage de combinaison par diodes JMP FIRMWARE Sortie aux microprogrammes N FIN DE BOUCLE DE COMMANDE D'AUTO-CONTROLE TEST DE CPU 8088 CPUERR: JMP CPUHLT CPUTST EQU $ Définition de pointeur de CPUHLT TEST D'UNITE D'INTERFACE DE BUS PAR EXTRACTION DE CODE OPERATION ET D'OPERANDE SELECTIFS CPUT!: M10V MOV CMP JNZ Jz JMP CPUTlA: NOV CI4P JNZ CMP JNZ DX,055AAH DH=55, DL=AA AL,OAAH AL=AA AL,DL AL et DL doivent comporter AA CPUERR Autrement, erreur de CPU SHORT CPUT1A Faire ceci seulement au cas o JNZ ne CPUERRDéfu5 de CPU si ceoint travaille pas CH,1055H CH5 atteint CH,DH CH=DH ? CPUERR DX,55AAH Comparaison avec données justes extrai CPUERR Si.a d'éalité. erreur de CPU tes TEST D'UNITE D'EXECUTION TE T DE TRANSFERT DE DONNEES CPUT2 EQU $ TEST DE DONNEES INDIRECTES TRANSFEREES PAR BX UTILISATIONS DES DONNES (=X'55AA') définies un multiplet après CPUTI LDS CPUT1 Etablissementde segment et d'adresse de décalage MOV /BX+l 7Lecture de multiplet en utilisant une adresse indirec- te avec déplacement INX BX Le décalage indique un multiplet de données MOV DX,M/ BX / Lecture de mot par adressage indirect MOV SI,l Mise du registre d'index à 1 CMP DX,55AAH DX doit être 55AA JNZ CPUERR Autrement, erreur de données transférées de-x-e MOV AH,M /BX+SI 7Lecture de multiplet en utilisant une adresse in/ CMP AX,DX AX et DX doivent être maintenant égaux JNZ CPUERR autrement, erreur de données. TEST D'ECHANGE DE DONNEES ENTRE REGISTRES XVHG CX,AX Test d'échange de données CMP CX,DX CX ? DX JNZ CPUERR Erreur si échange incorrect INC CX Modification de CX XCHG CX, AX Nouvel échange de données CMP AX,DX AX et DX doivent être maintenant différents JZ CPUERR Autrement, erreur B1 p B2 BO l __ r__ - __ - N TABLEAU 5 TEST DE TRANSFERT DE DONNEES EN UTILISANT UNE NOTATION PREFIXEE DE SEGMENT PRIORITAIRE B2 LEA MOV CMP JNZ SI,CPUT1 SI = pointeur de CPUTI prioritaire AX,CS:[SI+1] Lecture indexee enutilisant un segment/ AX,DX AX et DX doivent comporter les mêmes données CPUERR Autrement, erreur de CPU TEST DE TRANSFERT DE COMMANDE CPUT3 EQU $ CALL CPUT3A Test de transfert de commande d'appel JMP CPUERR Erreur si ce point atteint TEST DE TRANSFERT DE COMMANDE CONDITIONNELLE CPUT3A: XOR JZ JMP CPUT3B: JP JMP CPUT3C: JNO JMP CPUT3D: JNS JMP CPUT3E: SUB JZ JNS JNO JNP JNZ JMP CPUT3F: JS -JMP CPUT3G: JNAE JMP CPUT3H: CLC JAE JMP Test CPUT3I: MOV JCXZ CPUT3J: JMP CPUT3K: XOR LOOPNZ LOOPZ JMP CPUT3L: INX LOOPZ LOOPNZ CPUER: JMP CPUT3M EQU AL,AL CPUT3B CPUERR CPUT3C CPUERR CPUT3D CPUERR CPUT3E CPUERR AL, 1 CPUERR CPUERR CPUERR CPUERR CPUT3F CPUERR CPUT3G CPUERR CPUT3H CPUERR CPUT3I CPUERR AL=O, SF=OF=O, ZF=PF=l Test de branchement sur zéro Erreur si ce point atteint Test de branchement sur parité paire Test de branchement sur absence de débordement Test de branchement sur absence de signe AL=FF, ZF=O, SF=OF=CF=AF=PF=1 Erreur ZF est mis à un Erreur si SF=O Erreur si OF=O grreu siarité impaire_ apes a e Drannemen sur absence de zéro Erreur si ce point atteint Test de branchement sur signe Erreur si ce point atteint Test de branchement sur CF=l CF=O Test de branchement sur CF=O Erreur si ce point atteint de transfert de commande d'itération CX,o CPUT3K CPUERR AL,AL CPUT3J CPUT3L CPUERR AX CPUT3J CPUT3M CPUERR $ Mise de compte de registre CX à O Test de branchement sur CX=O Erreur si ce point atteint =,Z =1 produire 7est'de toucle sur absence de O(ne peut se/ Test de boucle sur O (peut se produire) Erreur si ce point atteint AX=l, ZF=O Erreur si ce branchement est réalisé Erreur si ce branchement n'est pas réalisé Test d'unité arithmétique et logique CPUT4 EQU MOV MOV MOV MOV B3 $ AX,0102H BX,0408H DX, 1020H CX,lOOH AX=0102H BX=0408H DX=0l20H CX=OlOOH B4 I 2472783 TABLEAU 6 EXECUTION DE CERTAINES OPERATIONS DE MULTIPLETS AVEC ALU 256 FOIS, LES REGISTRES AX,BX et DX RESTANT INCHANGES CPUT4A: INC BL BL=BL+1 test de progression DEC BH BH=BH+l test de régression ROR AL,1 Test de rotation à droite RCL AH,1 Test de rotation à gauche avec report RCL AH,1 Test de rotation à gauche avec report NOT DL DL=-DL Test d'absence d'opération - A DD DH,DL LOOP CPHT DH=DH+D] Test d'addition LOOP CPUT4A Répétition 256 fois CMP JNZ OR JNZ TEST JNZ XOR TEST JNZ AX,0102H AX=lO2H ? CPUER Erreur d'ALU si non égaux CL,CH CL cCH doivent être nuls CPUER Autrement erreur DL,20H DL = 20? CPUER Erreur, autrement DH,DL DH=30 DH,30H DH=30 ? CPUER Autrement, erreur EXECUTION DE CERTAINES OPERATIONS DE MOT AVEC ALU 256 FOIS MOV CPUT4B: INC DEC INC ROR SAL OR XOR TEST JNZ CMP JNZ' AND JNZ CX,lOOH BX AX AX DX,1 DX, 1 DX,AX DX,AX BX,0408H CPUERR DX,1020H CPUER AX,DX CPUER Mise du compte de boucle à 256H Test de progression de mot AX est ainsi inchangé Rotation à droite fermée DX est ainsi inchangé DX=1122H, AX=0102H DX=1020H, AX=0102H BX=0408 ? Erreur autrement DX doit être égal à O Autrement, erreur de. CPU AX doit être maintenant égal à O Autrement, erreur TEST DE MANIPULATION DE CHAINE CPUT5 EQU $ EXPLORATION D'UNE CHAINE ES:CODESG Ceci est pour un assembleur AX,CS AX= registre de segment de code ES,AX Segment supplémentaire mis égal DI,PROGNM DI = Pointeur de chalne de code au segment/ EXPLORATION DE CHAINE EN AVANT POUR UNE CORRESPONDANCE DE MULTIPLET CLD Effacement de DF pour exploration en avant MOV AL,'S' AL='S' MOV CX,14 CX=longueur de la chaîne REP Répétition d'opération de chaîne suivante SCAS Exploration jusqu'à ce que 'S' ou CX égale O CMP AL,8 C1 doit être égal à 8 JNE CPUER Autrement, erreur de manipulation de Chatne B4 ASSUME MOV MOV MOV B5 B5 TABLEAU 7 EXPLORATION EN ARRIERE POUR UNE CORRESPONDANCE DE MOT DI,SELFTST-1 CL,14 AX,'12' SCAS CL,2 CPUER Prise de direction en arrière DI=pointeur de fin de chaîne Compte = 7 mots AX=--mot à explorer "12" ou CX=O Répétition d'exploration jusqu à ce Compte doit être égal à 2 Autrement, erreur de CPU FIN DE TEST DE CPU ___ __ _ _ ___ JMP SELFLP2 POURSUITE AVEC AUTO-CONTROLE ! B6 TEST DE MEMOIRE A ACCES SELECTIF RAM PAS DE RETOUR SUR PANNES CATASTROPHIQUES MEMTST EQU $ TEST DE RAM SITUEE SUR LA PLAQUETTE DE MICROPROCESSEUR MEMTST1 MOV AL,LEDRAM Obtention de combinaison pour test deRAM NOT AL Complément aux diodes allumées OUT LEDPORTAALAffichage de test en cours JMP MPCRAM Test de RAM de MPC MEMTST2 OR AL,AL RAM de IPC correcte? JNZ MEMTST1 Répétition en cas d'erreur MAINTENANT LA RAM DE MPC PEUT ETRE UTILISEE COMME BLOC DE COMMANDE D'AUTO-CONTROLE,COMIE PILE ET ZONE DE MANOEUVRE XOR MOV MOV MOV MOV AX,AX Effacement de AX SS,AX Affectation de segment de pile DS,AX Affectation de segment de données ES,AX Affectation de segment supplémentaire SP,STACKH Etablissement de pointeur de pile CO Cil C2 t C3 INITIALI- SATION PREPARATION POUR LE TEST DE RAM DE IOC MEMTST3 EQU -$ MOV AX,O Effacement de AX M0V M[GOOD16].ALEfacement d'indicateur de bloc de 16K bon MO1V M[SLOT@],AL Init. de n de logement de IOC à O MOV M[RAMSTS],A- Effacement de multinlet d'étga de test MOV M[MEMSZ],AX Effacement de longueur de table ae MOV AX,MEMTBL conf. de mémoire. M0V M[MEMPTR],AX Init.de pointeur de table decoW M Ye M0V AL,X'10' Petit bout en haut de AL= paragraphe MOV M[PARA@],AL Init. pour espace d'adresse de para. suivant disponible RECHERCHE D'UNE PLAQUETTE DE CONTROLEUR DE MEMOIRE MEMTST4 EQU MOV MOV IN AND CMP JNZ $ DL, IDPORT OH,M[SLOT@] AL,DX AL,X'3F' AL,MEMID MEMTST9 DL=n de porte pour lecture de ID deFO) DH =n de logement AL=ID de contrôleur nécessaires. Elimination par masque es its non/ S'agit-il d'un contrôleur de mémoire? t Non,alors poursuite de recherche C4 C5 C6 STD MOV MOV MOV REP CMP JNE B5 que/ TABLEAU 8 UN CONTROLEUR DE MEMOIRE A ETE DETECTE OBTENTION DE SA CONFIGURATION ET MISE A JOUR D'AFFICHAGE PARDIODES MEMTST5 EQU MOV IN NOT AND CMP JNE INC MEMTST5A EQU MOV MOV MOV SAL OR NOT OUT $ DL,CNFGPORT * AL,DX AL=multiplet de configuration de mémoire AL, la suite est de convertir ID enn de blocs / AL,X'03' Bits utiles seulement retenus de 16K AL,X'03' SHORT MEMTST5A AL M[CCtFGBLK],AL Sauvegarde de config.de mém, (n de blocs de 16K) AL, M[SLOT@]l AL=n de logement CL,4 AL,CL Petit bout en haut de AL=n de logement AL,LEDRAM Obtention de n de test de RAM AL LEDPORTA,AL Complément des diodes allumées Mise à jour d'affichage par diodes AFFECTATION D'ADRESSE DE BASE AU CONTROLEUR DE MEMOIRE INITIALISATION DE PARAMETRES DE TEST MEIITST6 EQU $ MOV AL,O AL=O MOV AH,M[PAPA@] AX=adresse de base à limite de 64K MOV DL,BASEPORT de base MOV DH,M[SLOT@] DX=adresse de porte pour écrire adresse/ OUT AX,DX Affectatijnvd'adresse e baseau controleurde t;0V M0FF16]n0 Inltd adresse e decalage pour mémOire oV [bloc de l1 K MOV M[BLOCK@],4Init de n de M max. ae l1ocs sur un contrblTeur de mem. TEST DE 16K MULTIPLETS DE RAM DE IOC MEMTSï7 EQU CALL TEST JNZ MOV MEMTST7A EQU OR SAUVEGARDE MOV MOV MOV MOV SAL SAL M0V MOV MOV MOV MOV ADD MOV INC ADD $ IOCRAM Test de 1 bloc DL,O Le bloc de RAM est-il bon ? SHORT MEMTST7A M[GOOD16],1 Drapeau établi pour un bloc bon $ M[RAMSTS],DL Accumulation de résultat de test de RAM D'ENTREES DE TABLE DE CONFIGURATIONC D'ENTREES DE TABLE DE CONFIGURATION C7 C8 1C9 AX,PARA@ DS,AX Mise de segment de données à PARAO BX,M[MEMPTR] MX=pointeur de table de conf.de mémoire DI,Mi[;I4EMSZ] DI= n d'entrées DI,1 DI,1 RX lage de DI pour entree de 4 multiplets PMBX+DI+3L Sauv egarde de multiplet d'état de A.L,0.'L'SLOTj test d bloc delRAM M.[BX+DI-2],AL Sauvegare Reblmu iptplerde no de AL,0 AL=O logement AH,!![P.ARAC] AH=adresse de base de controleur de mém AH.,,OFF116, Addition d'adressç de décalage de bloc MFEX+DuTlAEntrée dans zone d adresse de 16K multi- ORD PTR 1M!ES'] Progression de longueur delp!ets X[OL', IX 40'; Former décalage table au bloc suivant TABLEAU 9 Y A T-IL D'AUTRES RAM DE CONTROLEUR ? DEC OZ DEC JNZ CALL OR JNZ M[BLOCK@] Y a t-il 64Kmultiplets contrôlés Cll MEMTST8 Oui, alors sortie controlés ? M[CNFGBLK] Tous les blocs de config. sont-ils/ MEMTST7 Non,alors test de ceux-ci contrôleur RAM? Détermination s'il y a d'autres RAMde DL,DL L'auto-contrôledétecte t-ild'autresR MEMTST7Vérification de tout autre RAM? RAM CE POINT ATTEINT A LA FIN D'UN CONTROLEUR MEMTST8 EQU ADD MEMTST9 EQU INC CMP JLE $ '*v -rant disponible.. 1 M[PARA@],X' lO'Rendre adresa de paragraphe sui C 12 $J M[SLOT@] Pointer logement de IOC suivant M[SLOT@],10 Tous les logements sont-ils contr8- MEMTST4Non, alors poursuite de recherche lés7J C 13 TOUTES LES RAM DISPONIBLES ONT ELLES ETE CONTROLEES Y A T-IL UN BLOC DE 16K de RAM BON ? un? TEST M[GOOD16],1 L'indicateur de bloc bon est-il aj/C1 JNE MEMTST3 Non,alors répétition de test de C14 RAM de IOC FIN DE TEST DE MEMOIRE iMP SELFLP3 Poursuite avec test suivant C15 TABLEAU 10 TEST DE RAM DE MPC EN PETOUR DL = O : DL > 0 MPCRAM EQU MOV LDS MOV MOV JMP MPCRAM@: JMP $ CX,MPCRAMS BX,MPCRAM5 DH,O BP,MPCRAM@ RAMTST Pas d'erreur Bits de données erronés accumulés CX= Capacité de RAM de MPC Etablissement d'adresse de n de paragraDhe BP = adresse de retour Test de RAM désirée bas de RAM MEMTST2 Retour pour poursuivre test de mémoire TEST DE BLOC DE 16K multiplets de RAM de IOC EB RETOUR DL = O : DL > 0 pas d'erreur Bits erronés accumulésIOCRAM EQU $ MOV BL,O BX= contrôler M0V BH,M[0FF16] BX=adresse de décalage à RAM à/ MOV CX,X'4000' CX=capacité de RAM à contrôler- MOV DH,M[PARA@] D--=n de paragraphe ou RAM située MOV BP,IOCRA.M@ BP = adresse.de retour iMP RAMTST Test de bloc de 16 K de RAM IOCRAM@: RET Retour ROUTINE DE RECHERCHE POUR RAM DANS LE BLOC DE 16K MULTIPLETS SUIVANT EN RETOUR DL = O Pas de RAM détectée : DL = 1 RAM détectée C9-0 C9-1 C9-2 C9-3 COMPTER SUR LE FAIT QU'UNE REFERENCE A UN EMPLACEMENT DE RAM NON- EXISTANTE ENTRAINE QUE TOUS LES BITS DE DONNEES A 1 (C'EST-A-DIRE,LES DONNEES=-l)UTILISENT 16 EMPLACEMENTS POUR CE CONTROLE RAM?: PUSH MOV MOV MOV MOV MOV MOV MOV RAM?1: MOV TEST JNZ INC LOOP MOV RAM?2: POP RET DS Sauvegarde de valeur de segment de données Cll BL,O BH,M[PARA@] BX=adresse de n de paragraphe h h DS,BXPlacement de segment de donnees o RAM dro eïre DLl Début avec indicateur de RAM présente AL,X'69' CX,16 CX=compteur d'emplacement BH,M[OFF16] BX= pointeur de bas de bloc M[BX],AL Ecriture de quelque chose à l'emplacement M[BX],X'FrF'Test pour mémoire non-existante RAM?2 Sortie si RAM présente BX Pointer emplacement suivant RP.M?l Boucle pour 16 emplacements DL,0 Indicateur d'absence de RAM à un DS Remise de segmentdedonnées à l'état initial Retour C2-O C2-1 iC2-2 C2-3 TABLEAU 11 TEST DE RAM EN ENTREE: BX = adresse de décalage de RAM à contrôler CX =capacité de RAM à contrôler : DH =n de paragraphe ou se trouve RAM : BP = adresse de retour EN-RETOUR: DL = 0 pas d'erreur DL. > 0 bitsrronés accumulés RAMTST EQU $ C2-2-O MOV DL,0 Effacement d'indicateur d'erreur MOV DS,DX Affectation de segment de données MoV SI,CX Sauvégarde de capacité de RAM dans SI C2-2-1 MOV DI,BX Sauvegarde d'adresse de RAM dans DI ECRITURE DE COMBINAISON DE TEST=(BIT POIDS FORT-BIT POIDS FAIBL) D'ADRESSE DE TEST + n DE PARAGRAPHE RAMTST1: M0V SUB ADD M0V INC LOOP VERIFICATION PRECEDENTES MOV MOV RAMTST2: MOV SUB ADD XOR OR NOT INC LOOP AL,BH bpfort d'adresse de test - AL,BH bpfort-bpfaible d'adresse de test AL,DH AL= combinaison de test de test M[BX],AL Ecriture de combinaison à adresse/ BX Pointer. l'adresse suivant. RAMTST1 iepeltion pour ou e La AM C2-2-2 DE COMBINAISON DE DONNEES ET COMPLEMENT DE DONNEES CX,SI CX=capacité de RAM BX,DI BX=pointer le bas de RAM AL,BH AL=bpfort d'adresse de test d AL,BL AL-=bpfpot -bpfaible d'adresse/de test AL,DH AL=comb nais on de test attentueerreur AL,M[BX] - Vérification d'emplacement,Al=O-pas d' DL,AL Accumulation des bits de données errones M[BX] Complément de combinaison de test BX Pointer l'adresse de test suivante RAMTST2 Vérification de toute la RAM C2-2-3, C2-2-4, C2-2-5 VERIFICATION DE COMPLEMENT DE COMBINAISON DE DONNEES EN ORDRE INVERSE, REMISE DE MEMOIRE A ZERO MOV RAMTST3: DEC MOV SUB ADD NOT XOR OR MOV LOOP CX,SI CX= capacit- de RAM BX Pointer ladresse de test suivante AL,BH AL=bpfort d'adresse de test AL,BL AL=bpfort-bpfaible d'adresse de test AL,DH AL=bpfort-bpfaible d'adresse +n para. ALComplément pour obtenir données attendues rreu AL,M[BX] Vérification d'emplacement,AL=O-4pas- DL,ALAccumulation de bits de données erronés M[BX],O,0Effacement d'emplacement de test RAMTST3 Poursuite pour toute la RAM FIN DE TEST DE RAM imP BP Retour à adresse dans BP C2-2-6, C2-2-7 C2-2-8 - t TABLEAU 12 TEST D'HORLOGE EN TEMPS REEL RTC AFFECTATION DE IV DE RTC RTCTST EQU $ ASSIGN RTC IV CALL IVSPUR Affectation de IV parasites à tous les niveaux PUSH ES Sauvegarde de ES MOV SI,4*RTCILSI=pointeur d'index de IL de RTC LES BX, RTCIV Obtention de pointeur absolu de IV MOV M[SI],ES Entrée de mot d'adresse en haut de IV MOV M[SI+2],BX Entrée de mot d'adresse en bas de IV POP ES Remise de ES à l'état initial TEST POUR DETECTER SI RTC NE FAIT PAS D'INTERRUPTION ENE TANT VALIDEE DO Di I RTCTST1: LEA BX,INTRCV BX=pointeur de multiplet de INT RECV MOV M[BX],O Effacement d'indicateur de INT RECVD2 >S OUT RTCENB,AL Validation de RTC EI Validation d'interruptions de processeur MOV AH,22}D3 CALL WAIT Attente pendant environ 22 millisecondes CMP M[BX],O Une interruption de RTC doit être reçue mainte0D4 dZ RTCTST Autrement, erreur de RTC-ainsi répétitionnaet J test de RTC TEST POUR DETECTER SI RTC FAIT UNE INTERRUPTION TROP TOT MV RTCTST2: CMP JZ DEC MOV M[BX],O Effacement d'indicateur d'interdeRTC MEBX],O RTCTST2 Synchronisation avec inter. de RTC M[BX] Effacement d'indicateur d'inter.de RT( AH,15 ALL WAI Attente pendant 15 millisecondes CMP M[BXI,0 RTC ne doit pas faire d'interruption JNZ RTCTST Autrement, erreur de RTC-ainsi répéti- tion de ce test TEST POUR DETECTER SI RTC FAIT UNE INTERRUPTION EN ETANT INVALIDE OUT DSBRTC,ALInvalidation de RTC MOV M[BX],0 Effacement d'indicateur d'interruption MOV AH,30 CALL WAIT Attente pendant environ 30 millisecondes CMP M[BX],O RTC ne doit pas faire d'interruption JNZ RTCTST A1itrement erreu de RTC --ainsi prt' FIN DE TEST DE RTC RET 1 - - - de ce test - de ce test 51, D5 }D6 }D7 }D8 }ns D10 Retour C1. DMi TABLEAU 13 fTST DE CONTRO0LEUR DE - È'C01CATION EN BOUCLE FERMEE AVEC MPC LPBKTST EQU $ EO MOV DL,O Effacement d'indicateur d'erreur MOV AL,LEDCOMM AL=code affiché pour ce test El NOT AL OUT LEDPORTA,AL Affichage de test en cours EXECUTION DE BOUCLE FERMEE EN LOCAL AVEC DES COMBINAISONS 1. '1' permuté dans le multiplet de test 2. 'O' permuté dans le multiplet de test fermée en 1 cal CALL LPBKCNFG Configuration de 2651 avec MPC en boucle/ E2 MOV AL,1 InitialisationdeALaveccombinaison 1 CALL LPBKDATA Donnéesen boucle fermée et vérification MOV AL,X'FE' Initialisation de AL avec combinaison 2 E4, CALL LPBKDATA Execution de boucle fermée E5 FIN DE TEST EN BOUCLE FERMEE -----------------.. cle fermée MOV M[LPBKSTS],DL Sauvegarde de résultat de test en bou/ MOV AL,O E6 OUT COMM7,AL Invalidation d'émetteur et de récepteur RET Retour E7 CONFIGURATION DE 2561 POUR BOUCLE FERMEE EN LOCAL LPBKCNFG EQU $ E2,E3 iode avec 8 bits/car MOV AL,01011110B Ecriture de reglstre de/l pour com. asynt./ OUT COMM6,ALParité impaire validée et 1 bit d'arrêt/car. MOV AL,00111100B Ecriture de reg.de mode 2 pour valider OUT COMM6,AL hovloge interne a 4800 bits/sec. MOV AL,10100111B Ecrlture de re,.de commande pour boucle OUT COMtM7,AL frmée et validation d'émetteur et de recepteur RET Retour BOUCLE FERMEE ET VERIFICATION DE DONNEES PAR 2651 AVEC MPC ____________________________________ EN RETOUR DL = O Pas d'erreur : DL > O Bits erronés accumulés LPBKDATA EQU $ E4,E5 multiplet MOV CX,8 Mise du compte de boucle au nombre de bits dans un/ MOV BH,-lEtablissement de compteur de dépassement de temps CONTROLE D'EMETTEUR PRET LPBKD1: IN AH,COM1 Lecture de registre d'état de 2651 SAR AH,1 CF=bit d'état d'émetteur JPAE LPBKYD2 Branchement à émetteur si CF=1 DCR BX Régression de compte de dépassement de temps JNE LPBKD1 Relance jusqu'à dépassement de temps de 2651 1O0V DL,-1 Mise d'indicateur d'erreur à un JMP LPKD5 Sortie TABLEAU 14 MULTIPLET D'EMETTEUR ET CONTROLE D'ETAT DE RECEPTEUR MULTIPLET D'EMETTEUR ET CONTROLE D'ETAT DE RECEPTEUR LPBKO2: OUT LPBKrj3: IN SAR SAR JNAE DCR JIIE MOV JMP COMM4,ALMultiplet de test d'émetteur AH,CO%%M1 Lecture d'état AH,1 AH,1 CF=bit d'état de récepteur LPBKD4 Branchement à données reçues siCF=l BX Régression de compte de dépasse.de temps LPBKD3 Relance jusqu'à dépasse. de temps de 2651 DL,-1 Mise de l'indicateur d'erreur LPBKD5 Sortie LECTURE ET VERIFICATION DE MULTIPLET EN BOUCLE FERMEF LPBKO4: IN DH,COMMO XOR DHAL OR DL,DH DH--multiDlet de données reçues. d'erreur Vérification de données reçues, DH=Op4as/ Accumulation des bits erronés FORMATION DE MULTIPLET DE TEST SUIVANT test RCL AL,1 Permutationdecombinaison dans le multipletde/ MOV BH,-1 Init.de compte de dépasse.de temps LOOP LPBKDl Répétition de boucle fermée 8 fois FIN DE CETTE ROUTINE LPBKD5: RET Retour E4,E5 TABLEAU 15 - DISTRIBUTEUR POUR LE CALCUL DE SIGNATURES DE ROM LES SIGNATURES SONT MEMORISEES DANS LA ZONE SIGTBL SIGNTRE EQU $ FO MISE A JOUR D'AFFICHAGE PAR DIODES MOV AL,LEDSIG NOT AL F1 OUT LEDPORTA,AL Affichage de test en cours par diodes DISTRIBUTION POUR CALCULER UNE SIGNATURE POUR CHAQUE 1K MULTIPLET DE ROM XOR AX AX=O F2 MOV DSAX Affectation de segment de données MOV ES,AX Affectation de segment supplémentaire CLD Effacement de DF pour direction en avant MOV CX,32 CX=2* nombre des2K de PROM MOV BX,SIGTBL BX=bas de zone de sauvegarde de signa.de RO1 MOV M[SIGBUF],BX Init.d'adresse de tampon de sign.de ROM MOV DX,O Init.d'adresse de ROM SIGNTLP: MOV M[ROMADR],DX Sauvegarde d'adresse de ROM PUSH CX Sauvegarde de CX F3 CALL SIGC Calcul de signature CLD DF=1-pour direction en avant F4 MOV SI,SIG SI=pointeur de signa.juste calculé MCV DI,M[SIGBUF] DI=pointeur de zone de sauveg.de sign. MOV AX,M[ROADR]AX=adresse de ROM STOS AX Entreed'adresse de ROMdans table de config.de signa. MOV CX,4 CH=nombre des multiplets de signa. signa. REP MOVS Déplacement de signa.de 4 multi.dans zone de sauv.de MOV M[SIGBUF],DI Sauveg.de point. de table de signa. MOV DX,AX DX=adresse de ROM ADD DX,ROMSIZE DX=adresse de ROM suivante POP CX Relance de compteur deboucle F6 LOOP SIGNTLP Poursuite pour toutes les ROM RET Retour F7 ROUTINE POUR CALCULER UNE SIGNATURE DE ROM _-_______________________________ EN ENTREE: DX = adresse de ROM EN RETOUR = SIG à SIG+3 = signature SIGNATURE EN RETOUR EST DE 4 MULTIPLETS CONTENANT 8 CHIFFRES EN BCD DANS LES EMPLACEMENTS SIG A SIG+3 CETTE SIGNATURE = LA SIGNATURE SUR BANDE DE PAPIER DE PROM TABLEAU 16 LA PROCE]URE POUR CALCULER LE MOT DE SIGNATURE EST LA SUIVANTE: A. Signature =00000000 B. Signature = 2* signature C. Signature = signature + multiplet de données D. S'il y a report de chiffre de poids fort,alors, signature=signature= 1 E. Si 1024 multiplets accumulés,alors terminé autrement,retour à B INITIALISATION DE SIGNATURE à 00000000 SIGC: MOV BX,SIG BX=pointeur à tampon de signature F3 MOV CX,8 CX=nombre des multiplets de manoeuvre SIGI: MOV M[BX],0 Effacement d'un multiplet de manoeuvre INC BX Pointer le multiplet suivant LOOP SIGI Effacement de toute la zone de manoeuvre INITIALISATION DE SIGR2 ET SIGR3 SIGR2 INDIQUE LES DONNEES EN COURS D'EXAMEN SIGR2 EST LE NOMBRE DE MULTIPLETS RESTANT DANS LA ZONE MOV M[SIGR2],DX;SIGR2 indique les données NOV WORD PTR[SIGR3],ROMSIZE; SIGR3 = capacité de ROM 1K MULTIPLICATION DE SIGNATURE PAR 2 SIG2: MOV BX,SIG BX=pointeur de signature MOV CX,8 CX=nombre de multiplets de signatures SIG3: SAL nLBX],lMultiplication de mqltiplet de sign,par 2 INC BX BX=polnteur de multiplet de slgn.suivant LOOP SIG3 auPlepur 8mugtplets CALL SIG8 egagees reorts OBTENTION D'UN NOUVEAU MULTIPLET DE DONNEES DE ROM SELECTIONNEE NOV BX,WORD PTR[SIGR2] BX indique les données MOV AL,CS:M[BX] AL = multiplet de données de ROM INC WORD PTR [BX] Mise à jour du pointeur ADDITION D'UN NOUVEAU MULTIPLET DE DONNEES AVEC LA SIGNATURE, MISE A JOUR D'ABORD DU CHIFFRE DES CENTAINES MOV BX,SIG+5 BX=pointeur du chiffre des centaines pré- SIG4: CMP AL,100 sent JL SHORT SIG5 Sortie si donnée 100 O INC M[BX] Mise à jour de chiffre des centaines SUB AL,100 Donnée = donnée =100 iMP SIG4 Et boucle MISE A JOUR DU CHIFFRE DES DIZAINES SiG5: INC BX BX = pointeur du chiffre des dizaines MOV CH,O SIG6: CM? AL,10 JL SHORT SIG7 Sortie si- A A contient maintenant la valeur des unités. TABLEAU 17 F3 SIG7: ADD INC ADD CALL M[BX],CH Mise à jour du chiffre des dizaines de signatures BX BX =pointeur du chiffre des unités présent M[BX],AL Mise à jour du chiffre des unités de signature SIG8 Réglage des reports pour signature UN CHIFFRE EST FAIT SIG10: DEC WORD PTR [SIGR3] Régression de compte de multiplet JNZ SIG2 Calcul de signature pour lK de ROM SIGNATURE CALCULEE COMPRESSION DE CETTE SIGNATURE EN 4 MULTIPLETS DE 8 CHIFFRES EN BCD BCD MOV SI,SIG;SI = pointeur de tampon de signature en/ M0V DI,SIG;DI = pointeur de tampon de signature MOv CH,4;CH = CH= compteur de boucle SIGil: LODS AX;AX = AX = 2 multiplets de signature M0V CL,4 bout en haut SAL AL,CL décalage à gauche 4 fois pour déplacement jusqui'au/ OR AL,AH om iressinde 2multiplets enl multi.de 2 chif/ STOS AL i2mcrture demultiflet compressé dans fres BCD STOS AL.e tampon de slgna... DEC CH Regression de compteur de boucle JNZ SIGll Compression de toute la signature en 4 multiplets FIN DE CALCUL DE SIGNATURE *RET FIN DE CALCUL DE SIGNATURE ROUTINE POUR REGLER LES REPORTS POUR LA SIGNATURE ___________________________________________ SIG8: CLC Effacement de l'indicateur de report,CY=O SIG8A: M0V BX,SIG+7 BX=pointeur du chiffre des unites M1O1V CX,8 CX= nombre de multiplets de signature ADC M[BX],O Progression du chiffre des unités si CY=l REGLAGE DE REPORT POUR UN MULTIPLET SIG8B: MOV ADC CMP JAE DAA AND STC AL,M[BX] AL = chiffre de signature AL,O AL = AL + CY AL,10 VérificaPion si à l'intérieur de limite déca-/ SHORT SIG8C ranchement sl CY=uO A-= 10) dc- Réglage de décimale AL,OFH Elimination par masque des 4 bits de poids fort CY=l SIG8C: MOV M[BX],AL Mise àjourde dchiffre à report réglé. REPETITION D'OPERATION DE REGLAGE DE REPORT POUR 8 MULTIPLETS DEC BX Pointer le multiplet de signature suivant LOOP SIG8B Réglage de report pour tous les 8 multiplets CONTROLE,MAINTENANT,DE REPORT DU CHIFFRE DE POIDS FORT ET ADDITION DE CE REPORT DANS LE CHIFFRE DE POIDS FAIBLE JNAE RET SIG8A Répétition d'opération de réglage si CY=1 Retour I TABLEAU 18 TEST DE CONTROLEUR D'E/S IOC _ _ _ _ _ _ _ _ _ _ _ -_ _ _ _ IOTST EQU $ INITIALISATION DES PARAMETRES DE TEST XOR MOV MOV MDv MDv MDv MOV AX,AX M[CSLFSTS],AL M[IRSTS],AL M[SLOT@],AL M[IOSLOT],AL M[IOSZ],AX AX,IOTBL M[IOPTR],AX AH=AL=O effacement de Cmu8epI.e ad è aYuto-/ qi acement me tl état e réponse a interruption à O Initialisation de n de logement de 1OC/ Effacement d'indicateurde eloement de Initialisation de lon. d econf. AX=pointeur de table de conf.de 10C Initialisation de pointeur de table de conf. de 1uC MISE A JOUR D'AFFICHAGE PAR DIODES IOTSTLP EQU $ MOV AL,M[SLOT@] AL=logement de] MOV CL,4 CL = compte de SAL AL,CL Bout en haut de OR AL,LEDIO Addition de n NOT AL Complément aux OUT LEDPORTA,AL Mise à jour d'" G1 G2 IOC sélecionné décalage e AL=n de logement de test de IOC diodes allumées affichage par diodes DETERMINATION D'IDENTIFICATEUR ID DE CONTROLEUR ET CONFIGU- RATION DE MULTIPLETS,ENTREE EN HAUT DE LA TABLE DE CONFI- GURATION ET OBTENTION D'ETAT D'AUTO-CONTROLE DE CONTROLEUR POUR CELUI QUI A LA CAPACITE CALL CSLFTST G3 TEST DE REPONSE D'INTERRUPTION ET DE CONFLIT D'INTERRUPTION CALL IVTST G4 CE POINT ATTEINT A LA FIN D'UN TEST DE CONTROLEUR INC INC CMP JLE PW rogresion du nombre des entrées dans WORD PTR M[IOSZ] la fable de conrig. M[SLOT@] Pointer le logement de IOC suivant G5 M[SLOT@],10 Tous les logements sont-ils contr1lés G6 IOTSTLP Non,alors poursuite de test de IOC G6 TOUS LES LOGEMENTS ONT ETE CONTROLES AFFICHAGE PAR DIODE 12 SELON L'ETAT-D'INTERRUPTION MOV SAL SAL NOT OUT AL,M[IRSTS] AL=état de réponse d'interruption(O=PASS) G7 AL,l AL,1 Bit 2 de AL=donnée pour diode 12 AL LEDPORTBAL Affichage par diode 12 FIN DE TEST DE IOC RET Retour G8 GO TABLEAU 19 ______________________________________________________ ROUTINE POUR ETAT D'AUTO-CONTROLE DE CONTROLEUR ET CONFIGURATION ______________________________________________________ CSLFSTS EQU $ OBTENTION DE ID DE CONTROLEUR ET ENTREE DANS LA TABLE DE CONFIGURATION G3- G3-1 MOV BX,M[IOPTR] BX=pointeur de table de config.de IOC M0V DI,M[IOSZ] DI=nombre des entrées dans table de confi. SAL DI,1 Réglage d'index pour entree de5 multiplets SAL D1,1 " ADD DI,M[IOSZ] " MOV DL,IDPORT DL=n de porte pour lecture de ID MOV DH,M[SLOT@] DH=n de logement = n de porte de groupe IN AL,DX AL=ID de contrôleur MOV M[BX+DI] ,DH Entrde de n de logement de IOC dantsal/ MOV M[BX+DI+1],DLEntrée de ID de contrl81eur dans la table INDICATION D'ETAT D'AUTO-CONTROLE DE CONTROLEUR k SAL AL,1 Y a t'il auto-contrl81e de contrôleur G3-2 JAE CSLFTST1 Non alors saut de cette opération SAL AL,1 CF= étaut d'auto-co4tr81e de IOC(O=PASS) JAE CSLFTST1 Saut d indication d erreur pour condit.PASS MOV M[CSLFSTS],1 Mise àun d'indicateur pour auto-contrôle MEQOV M[IOSTS],1 e à un d'état erroné de test de erroné CSLFTST1 EQU $ OBTENTION DES MULTIPLETS DE CONFIGURATION DE CONTROLEUR G3-3 MOV DL,CNFGPRT1 DL=--n de porte pour multiplet 1 de config. IN AL,DX AL= multiplet 1 de configuration tab MOV MIBX+DI+2],ALEntrée de multiplet 1 de config.dans la/ MOV DL,CNFGPRT2 DL=n de porte pour multiplet 2 de config. IN AL,DX AL = multiplet 2 de configuration MOV M[BX+DI+3],ALEntre de multiplet 2 dans la table FIN DE CETTE ROUTINE RFT Reto-u,,r G5-4 mg G V B -.....-....................- -TABLEAU 20 TEST DE REPONSE D'INTERRUPTION ET DE CONFLIT D'INTERRUPTIONS IVTST EQU $ G4-O AFFECTATION DE VECTEUR D'INTERRUPTION IV G4-1 CALL MOV ADD SAL SAL MOV MOV PUSH LES MOV MOV MOV MOV POP IVSPUR Affectation de IV pour interrupt.parasite AL,M[SLOT@] AL--n de logement DL,10 AL & AL+1 = IL attendu AL = pointeur décalé de IV AH,O AH = O SI,AX SI=index de IV ES BX,EXPIV ES,BX=adresse de IV 'adresseenhautdeIV M[SI],ES Etablissement de IV a IL-entree de mot/ M[SI+2],BX Entrée de mot d'adresse en bas de IV M[SI+4],ES Etablissement de IV à IL attendu suivant M[SI+6],BX ES EMISSION DE DEMANDE D'INTERRUPTION ET ATTENTE DE REPONSE IVTST1 EQU MOV MOV MOV MOV OUT MOV OUT MOV CALL MOV $ G4 M[INTRCV],O Effacement d'indicateur d'interrup.reçue M[INTSPUR],O Effacement d'indicateur d'interrup.parasin DL,TESTCMPT L=--n e porte pour valider test d'interrupion DH,M[SLOT@] DH=n de porte de groupe DL,AL Validation de test d'interrption DL,INTTST DL=n de portepour demande d interruption DX,AL Emission de demande d'interrup.à contrOleur AH,1 WAIT Attente pendant environ 1 milliseconde DL.TIACKPT OUT DL,AL Emission d'accu d réception d'interrup. aux contrôleurs DETERMINATION SI REPONSE RECUE AUX NIVEAUX ATTENDUS AUX CONTROLEURS IVTST2 EQU $ MOV AL,O AL=O mis à un CMP M[INTSPUR],O Indicateur d'interrup.parasite est-il/ JNZ IVTST3 Oui, alors erreur d'mnterrup.parasite MOV AL,M[INTRCV] AL= nombre des interruptions reçues CMP AL,O JZ IVTST5 Sortie si pas d'interruption reçue DETERMINATION S'IL Y A CONFLIT D'INTERRUPTIONS CMP JZ MOV DEC M[INTPRV],2 IVTST3 M[INTPRV],AL AL 4-2 f G4-3 14-4 } G4-4 2niv ux. Le contrôl81eur précédent nncessite-til/' G4-5 Ouialors il y a conflit d'interruptions Mise à jour de compte d'interrup.dI preceden t 1 ROR AL,1 Bit 7 de AL=l pour 2 niveaux JMP IVTST4 Sauvegarde des résultats dans la table de confi. CE POINT ATTEINT POUR CONFLIT D'INTERRUPTIONS OU INTERRUPTION PARASITE IVTST3 EQU $ d'interrupteur MOV M[IRSTS],1 Mise àun d'indicateur d'erreur de réponseG4-6 MOV M[IOSTS],i seàund'iidicateurd'erreurdetest de IOC OR AL,X'40' zise àun de bit d'erreur de test d lnterrupt MOV AH,M[S-T@] pour la tale de conzig. M AH,tl[SLOT@] MOV M[IOSLOT],AH Entrée de n de logement erroné de ce test ENTREE DE RESULTATDPECfIG 8lRUPTION DANS LA TABLE TABLEAU 21 IVTST4 EQU OR ADD MOV MOV SAL SAL ADD MOV $ + 10 AL,M[SLOT@] Rappel,niveau d'interrup.IL=n de logement/G4-7 AL,10 Addition devaleur de IL au résultat de test BX,M[IOPTR] BX=pointeur de table de-config. tOC DI,M[IOSZ] DI = nombre des entrées dans la table DI, 1 Réglage d'index pour entréede5 multiplets DI,1 DI,M[IOSZ] M[BX+DI+4],AL Entrée derésultat de test d'inter- ruption dans la table de config. FIN_ DE TEST DE REPONSE D'INTERRUPTION IVTST5: RET Retour G4-8 CREATION DE CONFIGURATION DE SYSTEME A CE POINT SYSCNFG EQU $ MISE A JOUR D'AFFICHAGE PAR DIODES MOV AL,LEDCNFG AL=n de test de configuration NOT AL OUT LEDPORTA,AL Affichage de test en courspar les diodes CREATION DE TABLES DE CONFIGURATION CALL MEMCNFG Création de configuration demémoire CALL SIGCNFG Création de configuration de signatures CALL IOCNFG Création de configuration d'E/S IOC PAS DE CONFIGURATION RET HO Hl H2 H3 H4 Retour CONFIGURATION DE MEMOIRE DE SYSTEME - Table de configuration de mémoire créé pendant le test de RAM - MEMPTR=pointeur de table de configuration de mém. - MEMSZ=nombre des entrées dans la table de config. de mé- moire,( chaque entrée=4 multiplets) MEMCNFG: RET Retour CONFIGURATION DE SIGNATURES - Table de coufiguration de signatures créée au moment du ca cui e sign ure - SIGPTR = pointeur de table de configuration de signatures - SIGSZ = nombre des entrées dans la table de configuration de sign. SIGCNFG: RET H5 Retour TABLEAU 22 CONFIGURATION D'E/S - Table de configuration de IOC créée pendant le test de IOC - IOPTR = pointeur de table de configuration de IOC - IOSZ = nombre des entrées dans -la table de config. (chaque entrée = 5 multiplets) IOCNFG: RET Retour _____________________________________ ROUTINE POUR DETERMINER L'ETAT D'AUTO-CONTROLE ET AFFICHAGE DE L'ETAT PAR LES DIODES ______________________-______________ TSTSTS EQU $ DETERMINATION D'ETAT D'AUTO-CONTROLE XOR CMP JZ OR TSTSTS1: CMP JZ OR TSTSTS2: CMP JZ OR MOV MOV SAL OR TSTSTS3: MOV AFFICHAGE DE XOR TEST JZ CMP JZ MOV OR JMP TSTSTS4: CMP JZ MOV JMP TSTSTS5: MOV TSTSTS6: MOV NOT MOV OUT FIN DI RET AX,AX AL=AH=O M[RAMSTS],AL Etat de test de RAM ? TSTSTS1 Saut d'entrée d'erreur si condition PAS% AL,1 Entree d'état de test deRAM erroné M[LPBKSTS],AHCçntr1le d'état de test de communica- TSTSTS2 m-t.ol0 en boucie fermee TSTSTS2Saut de mse àjor d'erreur si conditionPASS AL,2 Entree d etat d erreur en boucle fermee M[IOSTS],AH Con-trl81e d'état de test de IOC ?pA TSTSTS3 Sautdemise àjour d'erreur si condition/ AL,4 Entrée d'état d'erreurdetest de IOC AH,M[IOSLOT] AH = logement/erroné CL,4 deó o0C AH,CL Bout enhaut deAH=n de logement de IOC AL,AH Entrée e n0 de logement dans multinlet/ M[SELFSTS],AL Entrée d'état d'auto-contrô- 'état le dans la zone de commande COMBINAISON D'ETAT PAR LES DIODES DLDL DL=O d'état I2 ALDL Contrôle si erreurs dans le multiplet /0 AL,Dk TSTSTS6 Pas d'erreur sile multiplet d'état est O l M[IOSTS],O Y a t'il erreur de IOC ? I TSTSTS4 Non,oalors poursuite avec contrôle iuV 0n DL, LEDIOL= n de test de IOC DL,DH Addition de n de logement erroné TSTSTS6 de comn. M[LPBKSTS],O Contrôle si erreur de boucle fermée/ TSTSTS5 Non, alors execution du contrôle suivant DL,LEDCOMM DL =n de test enboucle fermée de TSTSTS6 communi. DL,LEDRAM DL = n0 de test de RAM M[LEDPTRN],DL Sauvegarde delcombinaisoPoMagàdes DL Complément aux TesdS a nueeees AL,DL AL = combinaison de diodes LEDPORTA,AL Affichage de combinaison par les diodes E CETTE ROUTINE _ _Retour_ Retour Io __ __ __ __ __ __ __ __ _ TABLEAU 23 ROUTINES DE PRISE EN CHARGE D'AUTO-CONTROLE __________________________ ROUTINE D'ATTENTE PERIODE D'ATTENTE = AH millisecondes EQU $ XOR WAITLP: DEC NOP JNZ DEC AL,AL AL=O AL Boucle de régression WAITLIouclage 256 fois(l millis'conde) AH JNZ WAITLP Attente environ AH millisec. RET Retour AFFECTATION DE IV PARASITE A TOUS LES 64 NIVEAUX TERRUPTION__IL........................ IVSPUR: PUSH ES Utili- sée dans D3,D6, G4-2 D'IN- XOR MOV LES IVSPURLP EQU MOV MOV ADD LOOP POP RET SI,SI SI=O CX,X'40'CX=nombre des IL BX,SPURIV ES,BX=pointeur absolu de prog.-de $ trait.d1interrup parasite M[SI],ES Entrée de mot d'adresse en haut deu M[SI+2],BX Entree de mot d'adresse enbas de SI,4 Pointer l'index à IV suivant IV IVSPURLP Affectation de tous les64 niveaux d'inter.IL ES tiians 31,G4-1 Retour PROGRAMMES DE TRAITEMENT D'INTERRUPTION PROGRAMME DE TRAITEMENT D'INTERRUPTION ATTENDUE EXPIV EQU $ INC M[INTRCV] Progression d'indicateur d'in- El terruption reçue RET Retour d'interruption Utili- se dans G4-2 PROGRAMME DE TRAITEMENT D'INTERRUPTION PARASITE __________________________ SPURIV EQU $ MOV M[INTSPUR],1Mise à un d'indicateur d'in- Utili- El terrup. parasite/ RET Retour / dsé dans G4-2 RTCIV EQU $reu RINC M[INTRCV] Progression d'indicateur d'interrup/ OUT CLRRTC,AL Effacement d'interruption de RTC Utilisé El dans RET Retour D4,D7, D 10 FIN D'AUTO-CONTROLE CODESG ENDSFin de segment de code END WAIT 53 2472783 REVENDICATIONS 1. Système de traitement de données comportant un processeur (102) et une mémoire (ROM-RAM 130--132 et 210), caractérisé en ce qu'il comprend en combinaison: - un premier moyen de test [102 et PROM 110 (C2)] pour déterminer l'état de fonctionnement d'une première section (RAM 132) de ladite mémoire; - un moyen [102 et 110 (C2)] répondant audit premier moyen de test pour interdire toute autre opération dudit système si la première section de mémoire est déterminée comme fonctionnant de façon erronée; un second moyen de test [102 et 110 (C9)l pour déterminer l'état de fonctionnement d'une seconde section (210) de ladite mémoire; - un moyen [102 et 110 (Ci0o)] pour mémoriser dans un emplacement prédéterminé de ladite première section de mémoire les résultats de l'opération du second moyen de test indiquant l'état de fonctionnement de ladite seconde section de mémoire. 2. Système selon la revendication 1, caractérisé en ce qu'il comprend en outre desmoyens de commande (111 et 134) pour valider lesdits premier et second moyens à chaque fois que ledit système est mis sous tension. 3. Système de traitement de données comportant un processeur 102, une mémoire à accès sélectif (RAM) et une mémoire fixe (ROM), caractérisé en ce qu'il comprend en combinaison: - - un moyen de test [102 et 110 (F2)] pour extraire des données mémorisées dans les emplacements de la mémoire fixe (ROM) - un moyen d'établissement de signature [102 et 110 (F3)] pour calculer un mot de signature sur la base du contenu des données extraites de la mémoire fixe (ROM); et - un moyen [102 et 110 (F4)] pour mémoriser ledit mot de signature dans un emplacement prédéterminé de la mémoire à accès sélectif (RAM). 4. Système selon la revendication 3, caractérisé en 54 2472783 ce qu'il comprend - un moyen [110 (F2)] inclus dans ledit moyen de test [102 et 110 (F2)] pour lire les données mémorisées dans la mémoire fixe (ROM) à raison d'un multiplet à la fois; - un moyen [1]0 (F3)] inclus dans ledit moyen d'établis- sement de signature [102 et 110 (F3 J pour accumuler les multiplets lus dans la mémoire fixe (ROM); - un moyen de multiplication 110 (F3) et VAL de 102 pour multiplier le total cumulatif des multiplets de données par une première constante avant que chaque nouveau multiplet de données lui soit ajouté; et - un moyen d'addition 110 (F3) et VAL de 102 pour ajouter une seconde constante audit total cumulatif à chaque fois qu'un report est produit pour la position de chiffre d'ordre le plus haut dudit total cumulatif par addition dudit nouveau multiplet de données, en produisant ainsi ledit mot de signature. 5. Système selon la revendication 4, caractérisé en ce que ledit moyen de multiplication est construit et agencé pour effectuer une multiplication par une première constante égale à 2. 6. Système selon la revendication 5, caractérisé en ce que ledit moyen d'addition est construit et agencé pour effectuer l'addition d'une seconde constante égale à 1. 7. Système-selon la revendication 6, caractérisé en ce que lesdits moyens de signature, de multiplication et d'addition sont construits et agencés pour calculer ledit mot de signature en notation décimale représenté par des chiffres en décimal codé binaire. 8. Système selon la revendication 7, caractérisé en ce qu'il comprend en outre, un moyen de commande(ll et 134) pour valider lesdits moyens précités à chaque fois que le système est mis sous tension. 9. Système de traitement de donnéeq comprenant un processeur (102), une mémoire (ROM, RAM, 210) et plusieurs contrôleurs d'entrée/sortie (200,202,204,206,208), caracté- risé en ce qu'il comprend en combinaison: - un moyen [102-124-110 (G4-2)] pour envoyer un signai de demande d'interruption à un contrôleur d'entrée/sortie sélectionné, - un premier moyen de test [102 et 110 (G4-3) il pour ' recevoir un signal de réponse d'interruption provenant dudit contrôleur d'entrée/sortie sélectionné et pour comparer ledit signal avec une valeur de réponse d'interruption prédétermi- née, - un second moyen de test [l02 et 110 (G4-6)J pour engendrer un mot d'état d'interruption, contenant un bit indicateur d'erreur, en réponse au résultat de la comparaison effectuée par ledit premier moyen de test, - et - un moyen de mémorisation [102 et 110 (G4-7)] pour mémoriser ledit mot d'état d'interruption engendré par le second moyen de test dans un emplacement prédéterminé de ladite mémoire RAM-132. 10. Système selon la revendication 9, caractérisé en ce que, ledit contrôleur d'entrée/sortie sélectionné compre- nant un moyen servant à produire plusieurs signaux de réponse d'interruption à différents niveaux d'interruption, il comprend en outre un troisième moyen de test [102 et 110 (G4-7)] pour enregistrer le nombre de signaux de réponse d'interrup- tion qui sont reçus en provenance du contrôleur d'entrée/ sortie sélectionné, et - un quatrième moyen de test [102 et 110 (G4-4,G4-5, G4-6) ] pour comparer le nombre de signaux de réponse qui sont enregistrés par le troisième moyen de test avec le nombre de signaux de réponse précédemment enregistrés pour un contrôleur d'entrée/sortie différent, et pour produire un signal d'erreur si ledit nombre précédemment enregistré est égal à 2 et si ledit nombre enregistré pour ledit contrôleur d'entrée/sortie sélectionné est supérieur à zéro. 11. Système selon la revendication 9, caractérisé en ce que,chacun desdits contrôleurs d'entrée/sortie comprenant un moyen pour produire une indication de numéro d'identifi- cation, il comprend en outre: 56 2472783 - un moyen [102 et 110 (G3-1)j pour lire l'indication de numéro d'identification du contrôleur d'entrée/sortie sélectionné; et - un moyen [102 et 110 (G3-3)1 coopérant avec ledit ' second moyen de test [102 et 110 (G4-6)] pour inclure une représentation dudit numéro d'identification dans ledit mot d'état d'interruption. 12. Système selon la revendication 11, caractérisé en ce qu'il comprend en outre: - un moyen [102 et 110 (G4-1)1 pour sélectionner séquentiellement chacun desdits contrôleurs d'entrée/sortie de façon qu'un mot d'état d'interruption soit engendré pour chacun desdits contrôleurs; - un moyen 110 (G4-7) inclus dans ledit moyen de mémorisation E102 et 110 (G4-7)]. pour mémoriser chacun desdits mots d'état d'interruption dans un emplacement différent de ladite mémoire. 13. Système selon la revendication 12, caractérisé en ce qu'il comprend en outre: - un moyen de commande (111, 134) pour valider lesdits moyens précités à chaque fois que le système est mis sous tension. 14. Procédé pour faire fonctionner un système de traitement de données comportant un processeur et une mémoire, caractérisé en ce qu'il consiste à: - exécuter un premier programme de test pour détermi- ner l'état de fonctionnement d'une première section de ladite mémoire; interdire une autre opération dudit système si ladite première section de mémoire est déterminée comme fonctionnant de façon erronée; - exécuter un second programme de test pour déterminer l'état de fonctionnement d'une seconde section de ladite mémoire; - mémoriser dans ladite première section de mémoire des résultats obtenus pendant l'exécution du second programme de test. 15. Procédé pour faire fonctionner un système de 57 2472783 traitement de données comportant un processeur, une mémoire à accès sélectif (RAM) et une mémoire fixe (ROM), caracté- risé en ce qu'il consiste à - lire séquentiellement des données contenues dans ô les emplacements de ladite mémoire fixe (ROM); - calculer un mot de signature en se basant sur le contenu des données lues dans ladite mémoire fixe (ROM); et - mémoriser ledit mot de signature dans un emplacement prédéterminé de la mémoire à accès sélectif (RAMI). 16. Procédé pour faire fonctionner un système de traitement de données comportant un processeur, une mémoire et plusieurs contrôleurs d'entrée/sortie, caractérisé en ce qu'il consiste à: - envoyer un signal de demande d'interruption à un contrôleur d'entrée/sortie sélectionné Dour contrôler ce contrôleur; - recevoir un signal de réponse d'interruption provenant dudit contrôleur d'entrée/sortie sélectionné et comparer ledit signal avec une valeur de réponse d'inter- ruption prédéterminée; - engendrer un mot d'état d'interruption, comportant un bit d'indication d'erreur, en réponse aux résultats de l'opération de comparaison effectuée dans la phase mentionnée en dernier; et - mémoriser ledit mot d'état d'interruption dans un emplacement prédéterminé de ladite mémoire.