FR 2644261 A1 19900914 FR 8903081 A 19890309 Différents moyens sont employés pour tenter d'interdir l'usage abusif des logiciels ou des fichiers de données et les protéger contre les virus informatiques . La demande de brevet français 87 01423 décrit un dispositif se plaçant sur un port de sortie d'un micro ordinateur , et , en relation avec la disquette, autorisant son fonctionnement. Le programme étant écrit en clair sur la disquette la clé incorporée n'est qu'une protection tres relative. La demande de brevet francais 88 15673 décrit une disquette perfectionnée munie d'un ou plusieurs modules électroniques pouvant améliorer la sécurité de la disquette. La présente invention a pour but de résoudre d'une façon rigoureuse et définitive les problèmes d'abus d'usage des logiciels et fichiers et d'en interdire la détérioration par des programmes virus dans la mesure où ceux-ci n'ont pas été implantés avant codage. Le but de l'invention est atteint en associant le codage de tout ou partie du logiciel par son fabriquant à son décodage et son traitement par un module électronique scellé lié à l'ordinateur et pouvant se substituer à lui pour traiter les parties du logiciel décodées et stockées dans la mémoire vive du dit module. Le dispositif appelé module de transfert-décodage-codage, ou simplement module ,figure 1 est contitué d'un microprocesseur mP2 compatible ascendant ou descendant . au sens donné usuelement à ces termes par les constructeurs , avec . ou identique au microprocesseur mP1 de l'ordinateur, éventuellement d'un microprocesseur spécialisé mP3 permettant le transfert par blocs et le décodage rapide des parties du programme nécessaires à chaque instant à mP2 de mémoires mortes, ROM ou EPROM pour stocker les programmes maltes de mP2 et de mP3 et les différents codes et des RAM pour stocker temporairement les blocs de programme décodés utiles à mP2 chaque fois que mP2 prend le relais de mP1 ,et les diverses données de travail générées par mP2 et mP3 . Il est constitué également par des circuits logiques, multiplexeurs MUX controleurs de RAM ,controleurs d'entrées sorties et autres circuits logiques permettant , suivant les règles de l'art ,le fonctionnement correct de l'ensemble et interdisant la lecture de la mémoire du module à partir de l'ordinateur. Ce module figure 1 se présente comme un circuit intégré classique et est scellé dans une enveloppe 1 résistante et inviolable en métal et/ou en céramique et munie éventuellement d'une ou plusieurs fenêtres 4 transparentes aux UV . Il communique avec l'extérieur par un ensemble de broches 2 ou de pattes de liaison à souder 3 constituant l'extrémité de son bus. Ce module est soudé soit sur une carte interne standard 5 , soit dans un boitier 6 relié à un port extérieur 7 , ou s'insérant dans un logement 8 aménagé sur sur une des faces du micro-ordinateur sans que ces positions soient limitatives de l'invention. Nous considérons dans la suite que le programme entier est codé. Ceci garanti la sécurité absolue du programme et la lutte contre les virus implantés hors codage . En effet, dans ce cas, tout ce qui n'est pas codé peut être Ignoré . La rapidité de transfert et de décodage d'un microprocesseur spécialisé où plusieurs circuits fonctionnent en parallele et indépendament du microprocesseur principal mP2 du module rend les opérations de transfert et de décodage pratiquement invisibles. Le fonctionnement du système suppose la coopération des fabriquants de logiciel qui acceptent les règles de codage du module de façon à rendre le module universel et par suite à abaisser son prix Le module peut éventuellement recevoir en EPROM un algorythme de décodage particulier à chaque fabriquant de logiciel , mais au prix d'une manipulation supplémentaire d'écriture en EPROM augmentant le prix et pouvant nuire à la confidentialité et à la fiabilité de l'ensemble. La présence de plusieurs ROM et de plusieurs fenêtres d'effacement permet de diminuer les risques de manipulation des EPROM . L'algorythme de codage universel adopté suivant l'invention, et sans sortir de l'unité de cette invention ,suppose l'écriture du programme en blocs élémentaires de 2**n octets,256 par exemple ce nombre correspondant simplement aux possibilités d'adressage d'un octet .Toute autre taille de bloc est possible mais présente moins d'intéret. On suppose donc l'écriture par blocs de 256 octets dans tout ce qui suit, sans que cela soit limitatif de l'invention. Le codeur est un programme ou fonction G() calculant à partir d'un code chiffré externe et chargeant en mémoire, deux suites de 256 octets, B1 et B2 ,contenant , dans un ordre determiné par le code chiffré externe , les 256 valeurs , de 1 à 256 , pouvant être prises par un octet. Les deux suites peuvent être identiques ou différentes. Les valeurs de la première suite sont considérées, figure 6 , comme des valeurs numériques et combinées une à une aux 256 octets du bloc de programme . Le resultat est replacé dans l'octet du bloc qui deviendra donc ainsi un bloc à octets codés, les octets codés ayant conservé l'ordre original. La seconde suite de 256 octets contient également la même suite ou une suite différente des 256 valeurs d'un octet (fig~7). Ces valeurs sont Ici les adresses d'un bloc de 256 octets . Le codeur affecte alors successivement à chaque octet du bloc en voie de codage l'adresse trouvée dans l'octet correspondant du second groupe codeur de 256 adresses. Le codage peut être , suivant l'invention, simplement le codage des octets ou le cqdage des adresses . Nous décrirons les opérations dans l'hypothese où les deux codages sont employés successivement. A la fin de la double opération, les 256 octets du blocs de programme sont mis dans l'ordre Imposé par le codeur et chaque octet de ce bloc est individuellement codé, Figure 7 . Le nombre de combinaisons possibles de codage par soustraction d'un oclet est de 256; si l'on ne prend qu'une fois chaque valeur il en reste 255 pour le second octet, et ainsi de suite . Le nombre total de combinaisons est donc 256! . De même on a 2561 distribulions possibles des adresses . Ce nombre est tres grand . Ce grand nombre autorise un usage universel où l'on peut concevoir, en toute Irréalité bien sur . des millions de fournisseurs et des centaines de millions d'utilisateurs qui ne se gêneraient pas. Pour parer à la fourniture frauduleuse d'une paire de blocs codédécodé qui permettrait de décoder l'ensemble du fichier, on peut suivant l'invention placer dans un ou deux octets du bloc, un numero d'ordre de 1 à 256 ou de 1 à 64k ,qui sera lu par le codeur et lui fera modifier le codage bloc par bloc. Les mêmes suites ne se retrouvent alors que tous les 256 ou 64k blocs. Dans ce dernier cas cela correspond à un fichier de 16 MO . Chaque module 1 possède un code particulier secret de n bits,32 par exemple ,qul est Incorporé à une suIte de chiffres .32 également par exemple, qui est connue du propriétaire du module et même portée sur le module lui même. Elle peut également être portée sur une carte à lecture optique ou magnétique qui sera lue par le codeur. Le fournisseur de logiciels, ou émetteur, possède un dispositif de codage 10 qui fait Intervenir une suite de 2n bits ,soit 64 Icl, propre à chaque type de logiciel ou au codage particulier qu'il désire faire . Ce dispositif de codage utilise l'algorylhme ou fonction de codage G(). Le module et le codeur possèdent les mêmes algorythmes de codage-décodage . Un de ces algorythmes, f(), engendre, à partir d'une suite de n bits , une suite numérique de n chiffres; Inversement, à partir d'une suite de n chiffres , l'algorythme Inverse f-10 peut reconstituer la suite de n bits. L'utilisateur donne au fournisseur la suite de 32 chiffres de son module ; cette suite est décodée par le décodeur qui en retire les 32 bits essentiels. Ces 32 bits sont combinés avec les 64 bits de codage du logiciel , par la fonction F() et cette combinaison donne une suite de 32 bits . Cette suite de 32 bits, recombinée ensuite dans le module avec les 32 bits propres au module, par la fonction F-I () redonnera la suite de 64 bits nécessaires au décodage du logiciel. Ces 32 bits engendrés par le codeur sont transformés par ce même codeur en une suite de 32 chiffres, propre exclusivement au logiciel fourni et au module design, que le fournisseur donne à l'utilisateur et qu'il peut même écrire sur une portion du disque réservée à cet usage, ou encore porter sur la carte vue plus haut, de l'utilisateur. L'utilisateur, ou le disque lui même, fourni à son module la suite fournie par le fournisseur et le module s'en sert pour reconstituer le code de 2n bits du logiciel. La combinaison dans le codeur de la suite de bits du module et de la suite de bits du logiciel peut être la division de la suite de 64 bits considérée comme un nombre par la suite de 32 bits considérée également comme un nombre . Le module n'a alors qu'à multiplier la suite de 32 bits fournie par le codeur avec sa suite propre pour retrouver le code de 64 bits du logiciel. De tres nombreux couples de fonctions combinatoires peuvent aussi établir une relation biunivoque entre les trois suites de bits. Le codage suivant l'invention se décompose en deux phases distinctes, utilisant des dispositifs électroniques qui peuvent être distincts également, pour en augmenter l'efficacité. Il y a une phase secrète dans laquelle est élaborée la suite transmise par le module au codeur, et décodée par le module la suite transmise en retour par le codeur au module pour permettre à celui ci de retrouver le code appliquée à la disquette , et fabriquer les blocs de 256 octets contenant les nombres à additionner et les adresses à affecter. Cette phase complexe peut être, suivant l'invention, réalisée par le microprocesseur principal mP2 du module ou par le microprocesseur secondaire mP3. Il y a ensuite une phase publique ou une logique électronique plus simple travaillant sur les deux blocs codeurs de 256 octets opère la partie matérielle du décodage . Cette phase est réalisée suivant l'invention par un circuit spécialisé mP3 qui assure également le transfert des octets du micro au module. Le décodage en deux parties suivant l'invention offre l'avantage considérable de séparer une opération complexe de calcul ou d'analyse combinatoire qui peut être relativement longue et son application au décodage réel dont les deux particularités contradictoires sont l'abondance permanente de la matière à décoder et la rapidité exigée . En effet ce transfert décodage ne doit pas ralentir de façon appréciable le travail du microprocesseur principal mP2 du module .Ce transfert étant effectué préférentiellement, suivant l'invention, par des circuits mP3 fonctionnant en parallèle et distincts de mP2 , il est impératif pour des raisons de prix et de sécurité, que ces circuits soient simples et donc qu'ils aient le minimum d'instructions . L'élaboration des octets de décodage et leur vérification demande un microprocesseur complexe , alors que le transfert des octets codés et l'utilisation des blocs codeurs peut se faire en toute sécurité par des microprocesseur élémentaires. Dans la disposition préférentielle adoptée par l'invention, la partie complexe du décodage est faite une seule fois à chaque séance de travail. Les blocs B1 et B2 peuvent être également, suivant l'invention, chargés en EPROM ou inscrit dès l'origine en ROM ou en EPROM , ou être chargés à partir du clavier de l'ordinateur. Dans tout ce qui suit , les codes- instructions du microprocesseur Z80 de la firme ZILOG, , universellement connus , serviront à illustrer l'invention mais ne la limitent pas. L'homme de l'art peut aisement à à partir des algorythmes et de ces codes- instructions, réaliser les dispositions décrites par l'invention à partir d'autres microprocesseurs. Le module de codage-décodage suivant l'invention peut être utilisé pour coder rapidement de gros fichiers . Le processus de codage suivant l'invention est le même dans le codeur appartenant au fournisseur et dans le module de codagedécodage. La description de l'algorythme de codage du module suivant l'invention éclairera la description des algorythmes de décodage. L'algorythme élémentaire de codage utilisé normalement dans le codeur du fournisseur ou par l'utilisateur pour le codage de ses propres fichiers est représenté fig 8 . LD C,(HL) . On charge dans un régistre C de mP3 par l'instruction LD C,(HL) le contenu du premier octet d'un bloc de 256 octets du programme clair . HL est initiale par mP2 à l'adresse du début de lecture. LD A,(lX+dl) . On charge, par l'instruction LD A,(lX+dl) ,dans un second régistre A de mP3 , le contenu du premier octet du bloc de codage des octets dont l'adresse dans la mémoire du module est di. SUB A,C . CPL. INC A . On a soustrait A du contenu de C LD E,(lX+d2) . On charge dans un régistre E de mP3 l'adresse contenue dans le premier octet du bloc B2 dont l'adresse de ce premier octet dans la RAM module est d2 . On peut, suivant l'invention, , avoir di-d2. LD (DE),A . On transfert le contenu de A (premier octet codé) à l'adresse contenue dans le régistre double DE la partie haute de cette adresse étant initialisée par mP2 de façon à imposer l'origine du bloc codé. On a donc ainsi codé et transferé le premier octet du bloc de 256 octets clairs. INC HL . On incrément HL INC IX On incrémente IX . DJNZ e . On teste la valeur du régistre compteur B . LD HL,(nn) .Si B est égal à zero, le codage du premier bloc clair de 256 octets est terminé . On réinitialise éventuellement HL par la valeur contenue à l'adresse nn . Cette nouvelle adresse contenue dans nn sera l'adresse du premier octet d'un nouveau bloc à coder. LD DE,(pp) . On réinitialise alors la nouvelle adresse d'ecriture du premier octet du nouveau bloc codé. LD In,0 . LD B,256 . On réinitialise à zero la lecture des blocs codeurs et on recharge à 256 le compteur B . JP pq . On retourne au début du programme. Si B n'est pas nul on saute à l'instruction de retour en début de programme, On peut inverser les instructions LD A,(lX+di) et LD E,(lX+d2)'sans modifier le résultat ni le temps de traitement. Dans l'algorythme de décodage suivant l'invention ,les blocs Bi et B2 engendrés par le module sont dérivés de ceux engendrés par le codeur de façon à ce que l'ordre des adresses du bloc de décodage des adresses et l'ordre des octets à additionner du bloc de décodage octets soient dans un ordre tel que le décodage puisse se faire en lisant les blocs codés dans l'ordre croissant des adresses. Les adresses en RAM module des octets décodés sont alors déterminées par le bloc de décodage des adresses . On suit de cette façon un algorythme parallele à celui du codage.FlG7A. Nous exposerons en détail l'algorythme de décodage suivant l'invention et ses diverses variantes imposées pour obtenir une rapidité de transfert-décodage maximale . Llalgorythme élémentaire de décodage suivant l'invention est représenté fig 9 .On se place, pour la démonstration, dans l'hypothèse élémentaire conforme à l'utilisation du Z8O, où le programme à décoder n'exède pas 64K . La figure 7A montre, suivant l'invention , la correspondance entre le bloc de codage et le bloc de décodage . Pour les besoins de la démonstration on prendra des blocs de huit octets au lieu de blocs de 256 octets. On lit le bloc codeur dans l'ordre croissant . Chaque adresse contenue du bloc codeur, devient l'adresse contenante du bloc décodeur . A cette adresse contenante du bloc décodeur sera chargée l'ex adresse contenante du bloc codeur qui deviendra ainsi l'adresse contenue du bloc décodeur (fig 7) . Durant le codage , les blocs clair et codeurs sont lus dans l'ordre cr#,ssant des adresses . On voit sur rexemple que le premier octet du bloc clair est transféré à l'adresse contenue dans le premier octet du bloc codeur 5 ici. Suivant la règle de correspondance entre les blocs codeur et decodeur, l'octet 5 du bloc décodeur contient l'adresse 1 du bloc codeur. Lors du décodage lorsque l'on arrivera à l'octet 5 du bloc décodeur on y trouvera l'adresse 1 du bloc codeur, qui est aussi l'adresse 1 du bloc clair, ou décodé, où l'on doit charger l'octet d'adresse 5 du bloc codé. L'octet aura retrouvé sa place initiale. Le bloc de décodage des octets se déduit du bloc de décodage des adresses, chaque octet du bloc de codage se mettant dans le bloc de décodage à l'adresse donnée par le bloc de codage des adresses . L'ordre de lecture des octets de décodage qu'il faut additionner aux octets d'origine sera donc l'ordre croissant des adresses. Le premier octet du bloc de décodage correspond donc au premier octet du bloc codé. Le bloc de décodage des octets B2 va être lu dans le même ordre et le premier octet va être ajouté à l'octet trouvé précédement. L'octet original est retrouvé et est placé à l'adresse du bloc décodé contenue dans le premier octet du bloc décodeur des adresses. LD C,(HL) . on charge le premier octet du bloc codé dans le régistre C . L'adresse contenue dans HL a été initialisée par le microprocesseur principal mP2 du module. LD A,(lX+dl) .On charge dans le régistre A de mP3 le premier octet du bloc de décodage des octets. ADD A,C . On additionne le contenu de C au contenu de A . L'octet est décodé et se trouve en A . LD E,(lX+d2) . On charge dans le régistre E le premier octet du bloc B2 de décodage des adresses . Cet octet représente la partie basse de l'adresse où l'on doit charger l'octet décodé en RAM module . La partie haute initialisée par mP2 a été chargée en D . LD (DE),A. On charge à la première adresse du bloc récepteur de 256 octets de la RAM module ce premier octet décodé . L'adresse dans la RAM module de ce bloc récepteur de 256 octets est fourni initialement par mP2 . Cet Cet octet décodé occupe maintenant la place qu'il avait dans le bloc original clair. INC HL. On incrémente HL . INC IX On incrémente IX . DJNZ e . On teste le régistre compteur B . Si su B est différent de O, test à dire si la lecture des 256 octets n'est pas terminée on saute à l'instruction de saut JP pq. JP pq . On saute à l'adresse pq qui est celle de la première instruction du programme et on recommence le cycle. Si B-O, c'est à dire si l'on a lu les 256 adresses du premier bloc à décoder on opère une serie de tests pour connaître les ordres du microprocesseur principal mP2 du module . Le microprocesseur mP2 peut inscrire , suivant l'invention, des instructions dans différents octets de la RAM module . Dans un premier octet à l'adresse qq par exemple il peut mettre à O ou 1 un bit déterminé b . Dans un octet d'adresse pp U peut mettre la partie haute de l'adresse en RAM micro du nouveau bloc de 256 octets à décoder . Dans un octet d'adresse nn il peut mettre la partie haute de l'adresse en RAM module où ce nouveau bloc sera chargé apres décodage. LD HL,mm On charge dans le régistre HL l'adresse mm de la RAM module. BIT b,(HL) . On charge l'octet d'adresse mm dans le régistre HL et on sélectionne le bit b du régistre HL. JRNZ e . Si le bit b est à 1 ,mP2 a déposé les adresses de départ et d'arrivée d'un nouveau bloc à décoder. On saute à l'instruction LD HL,(nn) . LD HL,(nn) . On charge en HL l'adresse du nouveau bloc à décoder . LD DE.(pp) . On charge en D la partie haute de l'adresse en RAM module où placer le nouveau bloc décodé .LD IX,O . On réinitialise IX à 0. LD B,256 . On réinitialise B à 256 . ou LD lX,(qq) ; on réinitialise IX avec la valeur trouvée en qq . et LD BC,(rr) ; on réinitialise B avec la valeur trouvée en rr. JP pq . On recommence un cycle de transfert-décodage de 256 octets. Si le bit b est à O on exécute l'instruction JP e suivant l'instruction JRNZ e. JP e . On revient à L'instruction LD HL,(qq) et on recommence le test du bit b. Cette boucle de test est parcourue suivant l'invention jusqu'à ce que mP2 ait chargé les nouvelles adresses de départ et d'arrivée d'un nouveau bloc à décoder et mis le bit b à 1. Dans une autre disposition suivant l'invention, lorsque le bit b est mis à o mP3 demande à mP2 une interruption de son signal d'horloge . Cette demande d'interruption est transmise par le bus de commande et MP2 répond en interrompant le signal d'horloge de mP3 . Ce signal d'horloge est rendu à mP3 par mP2 lorsque ce dernier a chargé aux adresses nn et pp les adresses de départ et d'arrivée d'un nouveau bloc de 256 octets à décoder. Pour rendre la durée de transfert de blocs minimale . le microprocesseur mP3 est suivant l'invention, constitué de plusieurs circuits fonctionnant en parallele. Dans une première configuration suivant l'invention, figures 10 et il on dispose en RAM module autant de RAM indépendantes contenant un bloc de décodage des octets B1 un bloc de décodage des adresses B2 et d'octets d'initialisation INIT qu'il y a de circuits mP3 . On appelle ces RAM indépendantes RAMOODE. Chaque RAMCODE a son bus branché sur un multiplexeur MUX2.i qui peut le faire communiquer alternativement, sous le controle de mP3 ou mP2 , au bus général du module ,ou au bus particulier du circuit mP3.i . Le signal d'horloge l'alimentation et les signaux de raffraichissement des RAMCODE peuvent être indépendants dé MUX2.1. Chaque circuit de mP3 est donc relié par ses bus , au multiplexeur MUX1 le faisant communiquer avec l'ordinateur , au multiplexeur MUX4 le faisant communiquer avec les RAM de chargement des blocs décodés par l'intermédiaire de son bus propre BUSMUX4 ,à un MUX2.i le faisant communiquer avec une RAMCODE et au MUX8 le faisant communiquer par son bus de commande avec mP2. Les RAM indépendantes de chargement des octets décodés RAMCHAR, sont reliées à BUSMUX4 et au bus général du module BUSMODULE par des multiplexeurs MUX4.i qui sont rtendus actifs par mP2 eVou mP3 , en relation avec les adresses d'initialisation INIT. Dans les algorythmes de commande de chaque circuit mP3 des pseudo-instructions MUXI MUX2.i et MUX4 sont placées devant les instructions LD C.(HL), LD A,(IX+d1), LD E,(IX+d2) et LD (DE),A . Ces pseudo- instructions rendent actives les voies des multiplexeurs correspondants à chaque circuit. Chaque algorythme peut être décomposé en un cycle principal et un cycle de tests . Le cycle principal a dans notre exemple une durée de 32 cycles machine et chaque MUX1 est utilisé durant 5 cycles machine . Il faut donc, suivant l'inventlon,7 circuits mP3 pour maximaliser la vitesse de transfert décodage. On peut, suivant l'invention n'utiliser que 6 circuits mP3 , mais avec une perte de vitesse. On peut également utiliser 8 circuits pour simplifier le calcul des adresses 256 étant divisible par 8 . Dans une seconde configuration suivant l'invention, figure 12 les blocs de décodage B1 et B2 sont uniques . On dispose de deux multiplexeurs MUX2 et MUX3 qui permettent de brancher alternativement chaque circuit sur le bloc Bi puis sur le bloc B2 et les octets d'initialisation. Les circuits élémentaires mP3 ont alors successivement accès à la RAM de l'ordinateur à travers le multiplexeur MUX1, aux RAM de chargement RAMCHAR à travers le multiplexeur MUX4 et aux blocs de décodage B1 et B2 à travers les multiplexeurs MUX2 et MUX3 . Dans l'algorythme de décodage de chaque circuit , des pseudoinstructions MUX1, MUX2, MUX3 et MUX4 sont placées respectivement devant LD C,(HL),LD A,(IX+d1), LD E(IX+d2) et LD (DE),A . Ces instructions rendent actives les voies des multiplexeurs correspondant à chaque circuit. Il y a, suivant l'invention, plusieurs séquences de lecture possibles de la RAM micro par les circuits mP3 . Dans un premier séquencement possible suivant l'invention, chaque circuit mP3 parcourt son bloc propre de 256 octets en RAM micro. Dans un second séquencement , suivant l'invention, chaque circuit de mP3 parcourt une partie d'un bloc unique de 256 octets. Dans un troisiemme séquencement , suivant l'invention, chaque mP3 parcourt une partie de. plusieurs blocs de 256 octets. Le controle et la différentiation des séquences est purement logicielle . En effet le microprocesseur mP2 controle l'activité des mP3 en chargeant aux adresses mimi, nini, pipi, qiqi, riri de la RAM module les adresses du drapeau bit b, d'initialisation de lecture en RAM micro d'écriture en RAM module ,de lecture en Blocs de décodage B1 et B2 pour chaque circuit mP3.i. Dans la première séquence de décodage suivant l'invention, chaque circuit de mP3 parcourt son bloc de 256 octets en RAM micro . L'adresse hihi du début de bloc à lire qui sera chargée en HL est mise par mP2 en RAM module à l'adresse ni ni pour le premier circuit mP3 que nous appelerons mP3.1 L'adresse h2h2 de la RAM micro en n2n2 de la RAM module pour le circuit mP3.2 et ainsi de suite, L'adresse de début d'écriture du bloc décodé en RAM module qui sera chargée en DE , est mise par mP2 en RAM module à l'adresse pipi pour-le circuit mP3.i à l'adresse p2p2 pour mP3.2 et ainsi de suite. Les blocs décodeurs seront lus dans l'ordre croissant par chaque circuit successivement. IX sera initialisé à 0, d1 et d2 étant les parties hautes des adresses fixes des blocs de décodage dans la RAM module. B est initialisé à 256 . Dans ce premier séquencement suivant l'invention, mP3 transfère et décode simultanément autant de blocs de 256 octets qu'il y a de circuits mP3.i. Dans le second séquencement suivant l'invention chaque circuit de mP3 transfère et décode une partie d'un bloc unique de 256 octets. Dans le troisiemme séquencement, suivant l'invention, les circuits transferent et décodent simultanément chacun une partie d'un des blocs de 256 octets choisis par mP2 . L'adresse chargée en HL sera pour le premier circuit mP3.i ,l'adresse hlhl du bloc à décoder en RAM micro. L'adresse chargée en HL pour le second circuit dépendra du nombre de circuits mP3 .S'il y a 8 circuits, par exemple chaque circuit lira 256/8-32 octets successifs . L'adresse chargée en HL sera pour le second circuit, h1h1+32, et ainsi de suite. L'adresse d'écriture en RAM module chargée en DE sera, pour le premier circuit, l'adresse elel du bloc à écrire en RAM module .L'adresse pour le second circuit sera eiel+32 , et ainsi de suite. Pour que le décodage se fasse correctement suivant l'invention, il faut que seules les parties adéquates des blocs de décodage B1 et B2 soient lues par chacun des circuits mP3 . L'initialisation des IX par l'instruction LD IX,(qq) permettra à chaque circuit de lire chacun le groupe d'octets des blocs de décodage correspondant au groupe d'octets lus dans le bloc codé. Le premier circuit mP3 est initalisé suivant l'invention à o, le second à 32 ,le troisiemme à 64 et ainsi de suite tant pour le bloc de décodage des octets que pour le bloc de décodage des adresses. Le régistre B compteur de DJNZ est chargé à 32 car au bout d'une lecture de 32 octets du bloc de 256 octets à décoder, par chaque circuit , les 256 octets auront été lus par les 8 circuits de l'exemple. Le premier circuit aura transféré et décodé les 32 premiers octets, le second circuit les 32 suivants . et ainsi de suite . L'algorythme multiple de transfert décodage suivant l'invention, , par les n circuits de mP3 est représenté figure 13 et fig 14. Sur la fig 13 apparaissent schématisés les mémoires RAM et les multiplexeurs I 2, 3 et 4 . Sur les fig 14A et 14B les durées des instructions en cycles machines ont été reproduites à l'échelle de façon à mettre en évidence les conflits d'accès aux multiplexeurs et les solutions apportées suivant l'invention . Le premier circuit de mP3 est activé par mP2 soit directement par activation du circuit horloge, soit par le biais du bit b vu plus haut, positionné par mP2 et lu par mP3.1 Les différents circuits de mP3 étant pilotés par la même horloge , la succession des instructions pour chaque circuit est décalée d'un circuit à l'autre du nombre de périodes d'horloge nécessaires pour l'activation du multiplexeur 1 et l'exécution de l'instruction de transfert LD C,HL. Les cycles nécessaires au fonctionnement des multiplexeurs sont fixés à 3 et les périodes d'horloge correspondantes à 10 , et regroupés arbitrairement avant l'instruction devant transiter par ces multiplexeurs. MUX1.1 . Branchement du premier circuit mP3.1 sur la RAM micro. L'instruction de chargement du premier octet du bloc à décoder est exécutée. MUX2.1 .Le circuit se branche ensuite sur le bloc de décodage des octets B1 . Transfert de l'octet décodeur . Addition de cet octet à l'octet codé. MUX3.1 . Le circuit se branche sur le bloc de décodage des adresses B2 La charge de l'adresse où transferer l'octet décodé est effectuée. MUX4.1 . Le circuit se branche sur la RAM module. L'instruction LD (DE),A charge l'octet décodé en RAM module. Le transfert-décodage du premier octet par le premier circuit est achevé Les instructions qui suivent Incrémentent HL et IX et testent les différents paramètres de fonctionnement propres au premier circuit mP3.1 Les circuits successifs sont activés de la même mannière que le premier avec un décalage correspondant au nombre de cycles pendant lesquels MUX1.1 va être utilisé par le premier circuit. Chaque instruction MUX est suivie d'une instruction de chargement d'un régistre .Ce n'est que lorsque cette instruction est exécutée que le multiplexeur devient libre pour le circuit suivant. Il doit donc y avoir nécessairement entre deux MUX identiques de deux circuits successifs un décalage correspondant à la durée de l'instruction suivant ces MUX . Ce décalage est indispensable pour éviter un conflit d'accès aux multiplexeurs Or les instructions LD C,(HL) et LD (DE),A durent 7 périodes , (deux cycles) alors que les instructions LD A,(lX+dl) et LD E, La succession des instructions MUX.1 de branchement à l'ordinateur conditionnent la vitesse de transfert de l'ordinateur vers le module. L'instruction MUX1.2 du circuit mP3.2 doit donc suivre immédiatement, suivant l'invention, ,l'instruction de transfert LD C,(HL) du circuit mP3.1 suivant l'instruction MUX1.1 du dit circuit mP3.1 Les algorythmes décalés des deux premiers circuits montrent alors, figure 13A que l'instruction MUX2.2 du second circuit est lancée avant que l'instruction LD A,(lX+d1) du premier circuit soit terminée. En éffet,l'instruction LD A,(lX+d1) dure 12 périodes d'horloge de plus que l'instruction LD C,(HL) .Le même décalage existe entre MUX3.2 et MUX3.1, alors que MUX4.2 et MUX4.1 sont synchronisées. Une première solution, suivant l'invention, (fig 15) ,consiste à placer avant MUX2.2 3 instructions NOP de 4 périodes qui compensent le décalage de 12 T de façon à conserver la durée minimum d'utilisation du multiplexeur MUX.1 de 10+7=17 périodes pour chaque circuit. Les mêmes circonstances se produisant entre le troisièmme et le second circuit, il faudra ajouter 3 nouveaux NOP suivant l'invention, au programme du troisiemme circuit et ainsi de suite . Le circuit n doit donc recevoir avant l'instruction MUX2.n, (n-1)3 NOP. Pour maintenir égales les durées des programmes des circuits, on ajoute , suivant l'invention, des NOP avant l'instruction de début de cycle MUX.i Le nombre de NOP ajoutés au premier circuit sera (ne1)3, au second circuit (n-2)3 et ainsi de suite. Une seconde solution suivant l'invention, (fig 14B) , consiste à ajouter 3 NOP à l'instruction MUX1 de façon à ce que toutes les instructions suivant les MUX aient la même durée. La durée d'utilisation de MUX1 devient alors 17+12=29 périodes pour chaque circuit, et la vitesse de transfert-décodage est diminuée dans le rapport 17129. Une troisiemme solution suivant l'invention, ,(fig 14A et fig 16), consiste à doubler les multiplexeurs MUX2 et MUX3 ainsi que les blocs de décodage B1 et B2 qui leurs sont liés . On sttribue alors suivant l'invention, le multiplexeur MUX2A aux circuits impairs et MUX2B aux circuits pairs , par exemple , et de même pour les multiplexeurs MUX3A et MUX3B. Entre deux utilisations du même multiplexeur MUX2A ou MUX2B il y a deux utilisations du multiplexeur principal MUXI soit une durée de 1 7x2-34 périodes Cette durée est supérieure à la durée d'utilisations des MUX2 et MUX3 de 19+10=29 périodes. La durée de la pseudo-instruction MUX a été fixée arbitrairement à 10 périodes. On peut montrer que le simple doublement des MUX2 et MUX3 suivant l'invention suffit en général à assurer la synchronisations des MUX même pour des valeurs différentes de la durée des MUX . En effet , soit t cette durée de MUX; on doit avoir (t+7)2 > t+19, soit > t 5 périodes . Cette durée étant faible , il n'est pas intéressant dans la plus part des cas de tripler les MUX2 et MUX3 , le gain de vitesse en résultant étant tres faible. Mais le triplement des multiplexeurs MUX2 et MUX3 est une solution. suivant l'invention, dans le cas où la durée de l'instruction MUX est telle que le doublement n'assure pas l'utilisation maximum du multiplexeur MUX1 et donc la vitesse de tansfert maximum. La troisiemme solution suivant l'invention, doublement ou triplement de MUX2 et MUX3 permet la vitesse maximum avec un nombre faible de circuits mP3 . En effet ce nombre de circuits permettant la vitesse maximum dépend de la durée de chaque cycle principal de mP3 et doit être égal à la durée du cycle principal de transfert décodage hors cycle de tests divisée par la durée d'utilisation du multiplexeur MUX1 . La durée du cycle principal est dans l'exemple de 135 périodes Dans la première solution ,suivant l'invention, où l'on ajoute des NOP aux cycles des circuits , il y aura une durée de base de 135 périodes + la durée des NOP égale à (n-1)x3x4-(n-1)12 périodes . la durée totale D est donc D-123+12n .La durée d'utilisation de MUX1 étant de 17 périodes, il faut n circuits tels que n=(123+12n)/17, et n-12315-24,6 soit 25 circuits , alors que le nombre minimum de circuits dans la solution 3 suivant l'invention, est de 135/17-7,94 soit 8 circuits .Les nombres fractionnaires obtenus montrent qu'il faut ajouter dans les circuits des NOP de façon à obtenir des nombres entiers . On doit avoir 1 7x8-136 périodes . Il manque une période par cycle pour obtenir 8 circuits. Un NOP ayant une durée de 4 périodes ,un NOP tous les 4 circuits apportera la correction suffisante. Dans la solution 2 où l'on ajoute 3 NOP à la durée d'utilisation de MUX1 ,cette durée devient 17+12-29 la durée du cycle principal 135+12=147 , et le nombre de circuits 147/29=5.06 soit 6 , mais avec une vitesse de transfert diminuée dans le rapport 17129. Une quatriemme solution , suivant l'invention, consiste à remplacer les instructions LD A,(IX+d1) et LD E,(IX+d2) de 19 périodes par les instructions LD A,(nn) de 13 périodes . Suivant l'invention, un circuit mP4 charge à des adresses fixes n0n0 et p0p0 les octets successifs du bloc d'adresses et du bloc de décodage des octets . L'instruction LD A,(nOnO) est suivie de l'instruction LD D,A . Les multiplexeurs MUX2 et MUX3 sont utilisés ainsi pendant 10+13=23 périodes au lieu de 10+19=29 périodes . Il y a un gain de 2x6-12 périodes et donc moins de NOP et moins de circuits. On peut également, suivant l'invention , combiner les solutions précédentes suivant les impératifs de vitesse et de prix. Lorsque le cycle principal de chaque circuit a été effectué le nombre de fois voulu . c'est à dire lorsque le régistre B est à 0, le circuit effectue, suivant l'invention r un cycle de tests des instructions de mP2 microprocesseur principal du module. Au cours de ce cycle de tests , chaque circuit doit effectuer des lectures en RAM module et donc utiliser des multiplexeurs pour lesquels les conflits d'accès peuvent être résolus de la même mannière que pour le cycle principal Il faut attendre d'abord que le dernier circuit ait liberé le multiplexeur MUX2, ou MUX2A. Le cycle de tests commence donc lorsque le dernier circuit mP3 a terminé l'utilisation du multiplexeur MUX2 ou MUX2A dans son cycle principal. Suivant le nombre de circuits on fait précéder, suivant l'invention, les instructions MUX2 ou MUX2A et MUX3 ou MUX3A d'un certain nombre de NOP d'attente . Le déroulement de l'utilisation des multiplexeurs se fera ensuite comme pour le cycle principal. La seconde solution, suivant l'invention, . consiste à utiliser dans le cycle de tests,des multiplexeurs supplémentaires ,MUX9 MUX10, MUX11 ayant les mêmes fonctions que MUX2 et MUX3. Il n'y a pas de NOP supplémentaire entre le cycle principal et le cycle de tests mais seulement des NOP comme précédament pendant ce cycle de tests. Dans toutes les solutions précédentes aux conflits d'accès on a supposé la synchronisation des circuits et réglé les conflits de façon rigide à t'aide de NOP. Un autre type de solution aux conflits d'accès, suivant l'invention, consiste à introduire des drapeaux, et des Instructions de test de ces drapeaux, dans des cycles de tests placés aux emplacements précédents des NOP . De cette façon, les circuits testeront eux même la disponibilité des multiplexeurs sources de conflits. Pour pouvoir utiliser la RAM module avec le maximum de souplesse, une partie de cette RAM est constituée, suivant l'invention, ,de RAM élémentaires de 2'^n octets , soit 256 octets dans notre exemple dans le cas où le transfert se fait par blocs de 256 octets. Ces RAM indépendantes recoivent le programme décodé par mP3 et sont lues ensuite par mP2 . De cette façon chaque RAM élémentaire RAMCHAR sera alternativement écrite par mP3 et lue par mP2 suivant les besoins de mP2 . La partie de la RAM module consacrée au stockage des blocs de programme apparaitra donc comme simultanément lue et écrite grace à sa décomposition partielle en blocs indépendants. Des circuits spécialisés, suivant les règles de l'art, controleur de RAM ,logiques de sélection multiplexeurs, cette liste n'étant pas limitative assurent le fonctionnement de l'ensemble sous le controle de mP2 et mP3 . Les bus d'adresses et de données de l'ordinateur sont séparés avant leurs arrivées sur MUX1 afin de disposer sur le bus d'adresses des circuits interdisant de façon statique le fonctionnement du bus d'adresses de l'ordinateur vers le module et permettant son fonctionnement du module vers l'ordinateur. La fig 16 montre la disposition schématique du module suivant l'invention , dans le cas de l'existence de 7 multiplexeurs de transfert décodage et d'un multiplexeur supplémentaire MUX8 permettant à mP2 de controler le signal d'horloge des circuits mP3 . Chaque circuit mP3 suivant l'invention, est relié par ses 3 bus à chacun des multiplexeurs MUXI MUX4, et par son bus de commande seulement à MUX7. Si les multiplexeurs MUX2 et MUX3 sont doubles et s'il existe un multiplexeur MUX5 , les circuits pairs sont reliés à MUX2A et MUX3A , par exemple et les impairs å MUX2B , MUX3B et MUX5. Une partie de la R AM module est au moins constituée de quatre RAM indépendantes d'une capacité égale à 2e*n et en particulier 256 chacune de ces RAM pouvant être lue ou écrite alternativement par mP2 et mP3 , ou simultanémént l'une écrite par mP3 et l'autre lue par mP2 , deux de ces RAM recevant les octets décodés du programme et les deux autres , appelées bloc de décodage des octets et bloc de décodage des adresses recevant, la première des octets de décodage qui combinés aux octets codés redonneront les octets clairs, et l'autre recevant les adresses de la RAM module aux quelles doivent être logés les dits octets décodés. Revendications 1 Dispositif appelé module de transfert décodage ou simplement module, caractérisé en ce que sont inclus dans une enveloppe rigide scellée et inviolable, et communiquant avec l'extérieur par des pattes à souder ou des broches les circuits internes essentiels d'un ordinateur, microprocesseur mP2 , ROM, EPROM éventuellement RAM dynamique ou statique ,(.et les circuits annexes indispensables suivant les règles de l'art au bon fonctionnement des autres) , le microprocesseur mP2 étant identique à celui mPt équipant ltordinateur auquel est relié le dit module ,ou compatible avec le dit microprocesseur mPî , des clés secrètes et des programmes de décodage secrets , inscrits en ROM ou chargés en EPROM, et caractérisé également en ce qu'il se substitue aux circuits équivalents de I' ordinateur au quel il est relié ou dans lequel il est inclus, pour traiter, à la place du dit ordinateur et à l'aide de programmes chargés en ROM ou en EPROM, apres les avoir transferts , décodés et chargés dans sa RAM propre des programmes ou des fichiers codés, ou des éléments de programmes ou de fichiers codés situés en RAM de I' ordinateur ou en mémoire de masse de ce dit ordinateur, qui ne peut les utiliser car il n'en possède pas les clés et programmes de décodage. 2 Dispositif selon 1 caractérisé en ce qu'il existe une ou plusieurs fenêtres transparentes aux UV disposées dans la paroi de l'enceinte du module. 3 Dispositif selon 1 caractérisé en ce que un circuit spécialisé mP3, controlé par mP2 mais pouvant fonctionner simultanément, procède au transfert, au décodage et au chargement en RAM module des octets codés se trouvant en mémoire de l'ordinateur et en ce que un multiplexeur MUX1 permet les liaisons alternativement de mP2 et mP3 avec l'ordinateur et sa mémoire. 4 Dispositif selon i et 3 caractérisé en ce que une partie de la RAM module est au moins constituée de quatre RAM indépendantes d'une capacité égale à une puissance de 2 et en particulier 256, chacune de ces RAM pouvant être lue ou écrite alternativement par mP2 et mP3 ou simultanément l'une écrite par mP3 et l'autre lue par mP2 ,deux de ces RAM recevant les octets décodés du programme et les deux autres appelées bloc de décodage des octets et bloc de décodage des adresses recevant, la premiere des octets de décodage qui combinés aux octets codés redonneront les octets clairs ,et l'autre recevant les adresses de la RAM module aux quelles doivent doivent être logés les dits octets décodés. 5 Dispositif selon 1 et 3 caractérisé en ce que le microprocesseur mP3 est constitué de n circuits identiques mP3.i fonctionnant en parallèle, et recevant le même signal d'horloge, et caractérisé également en ce que des multiplexeurs MUXI MUX2 , MUX3 et MUX4, MUX2 et MUX3 pouvant être doubles, permettent les branchements successifs des mP3i respectivement au bus de l'ordinateur, au bloc de décodage des octets B1 pouvant être double, au bloc de décodage des adresses B2, pouvant être double et aux RAM ou sont chargées les octets décodés dans le module. 6 Dispositif selon 1 et 4 caractérisé en ce que les blocs de décodage B1 et B2 de 2**n octets sont chargés par mP2 des différentes valeurs possibles de 1 à 2"n et en particulier 255 ces valeurs étant distribuées dans les blocs par un programme de codage réagissant à une suite de bits venant de l'extérieur du module et cette distribution pouvant être la même ou différente pour les deux blocs , les octets du premier blocs étant considérés comme des nombres qui combinés aux octets à décoder considérés également comme des nombres, fournissent les octets clairs et les octets du second bloc étant les adresses aux quelles doivent être chargés en RAM module les octets clairs précédement décodés et précédement lus en mémoire du micro dans l'ordre croissant des adresses , ordre dans lequel sont également lus les blocs de décodage B1 et B2 pour assurer la coibcldence des octets codés et des octets de décodage et d'adressage . 7 Dispositif selon 4 et 6 caractérisé en ce que la combinaison transformant les octets codés en octets clairs est l'addition des octets du bloc de décodage B1 aux octets codés dans le cas ou le codage aurait été fait par la soustraction des dits octets et par une soustraction dans le cas contraire . 8 Dispositif suivant 1 et 4 caractérisé en ce que un ou deux octets des biocs codés de 2**n octets dans l'ordinateur, contiennent un numero d'ordre de 1 à 256 ou de 1 à 64K qui, interprété par mP2 détermine une redistribution des octets des blocs B1 et B2 pour les rendre conformes à la distribution utilisée pour le codage et caractérisée par le numéro d'ordre , ces distributions se substituant ou se superposant aux distributions de codage initiales . 9 Dispositif selon 1 caractérisé en ce que (fig 10) le programme de décodage s'écrit , en utilisant , à titre de language symbolique, les instructions du microprocesseur Z80 universellement connues , et représentant parfaitement pour l'homme de l'art l'algorythme suivi LD C,(HL)~LD A,(IX+d1)~~ADD A,C~LD E,(IX+d2)~LC (DE),A~INC HL~INC IX~DJNZ e~LD HL,mm~BIT b,(HL)~~JRNZ e~JP pq--LD HL,(nn)~~LD DE,(pp)~LD IX,(qq)~LD BC,(rr)~~JP pq, le microprocesseur mP2 chargeant aux adresses mm, nn , pp qq, rr , respectivement un bit b drapeau une adresse initiale de bloc codé en mémoire micro, une adresse initiale de bloc décodé en RAM module ,l'adresse Initiale en blocs de codage et la valeur d'initialisation de B . 10 Dispositif selon 5 caractérisé en ce que chaque circuit mP3.l obéit au même programme de transfert décodage décalé dans le temps d'un circuit à l'autre et comportant des pseudo instructions d'activation des multiplexeurs MUXI MUX2, ,MUX3 , MUX4 et des instructions NOP , de 1 cycle machine ou 4 périodes d'horloge, placées et avant l'instruction MUX1 au nombre de (n-1)u au premier circuit (n-2)u, pour le circuit n-1, et ainsi de suite, u étant le nombre d'instructions NOP nécessaires pour compenser la différence de durée entre le durée de l'instruction la plus courte suivant une instruction MUX . ici l'instruction LDC C,(HL) de 2 cycles ou 7 périodes d'horloge et l'instruction la plus longue suivant une autre instruction MUX , Ici L'instruction LD A,(lX+dî) de 5 cycles ou 19 périodes d'horloge . il Dispositif selon 9 caracterisé en ce que les instruction LD A,(lX+dî) et LD E,(lX+d2) de 19 périodes d'horloge sont remplacées par les instructions LDA A.(nn) et LD A,(pp) de 13 périodes d'horloge . (4 cycles) suivies des instructions, hors utilisation du multiplexeur LD D,A. un circuit spécialisé mP4 chargeant aux adresses fixes nOnO et p0p0, les octets successifs des blocs de décodage B1 et B2. t2 Dispositif selon 1 caractérisé en ce que un fichier codé est écrit en blocs élémentaires de 2**n octets et en particulier en blocs de 256 octets et stoké sur disquette ou autre mémoire de masse . 13 Dispositif selon 1 et 12 caractérisé en ce que le codage est effectué dans un bloc de 2**n octets , octet par octet , dans l'ordre de lecture croissant, chaque octet clair étant combiné avec un des octets codeurs tous différents d'un bloc de codage de 2**n octets lus également dans l'ordre croissant, ces octets codeurs chargés dans le bloc de codage ayant été déterminés par un algorythme de codage en fonction d'une suite de bits fournis au dispositif codeur. 14 Dispositif selon I et 12 caractérisé en ce que le codage est effectué dans chaque bloc de 2**n octets clairs en redistribuant les adresses des octets suivant les adresses de 1 à 2**n contenues en desordre dans un bloc codeur de 2**n octets. 15 Dispositif selon 13 et 14 caractérisé en ce que le codage est effectué dans chaque bloc de 2**n octets en codant individuellement les octets à partir d'un bloc codeur B1 et en les redistribuant ensuite à des adresses différentes suivant les adresses contenues dans un bloc codeur B2 les blocs codeurs B1 et B2 pouvant être identiques ou différents. 16 Dispositif selon 1 , 13 et 14 caractérisé en ce que les octets des blocs codeurs B1 et B2 sont créés par un algorythme ou fonction G() en fonction d'une suite K de 2n bits choisis arbitrairement. 17 DisposItif selon 1 et 14 caractérisé en ce que l'émetteur et le récepteur disposent d'un algorythme de codage f() qui à partir d'une suite de n bits fournit une suite de n chiffres et d'un algorythme inverse de décodage f-10 qui , à partir de cette suite de n chiffres redonne la suite initiale de n bits. 18 Dispositif selon 1 et 14 caractérisé en ce que le fournisseur possède un algorythme de codage F() qui å partir d'une suite de Sn bits propre au dit fournisseur , et d'une suite de n bits propre au module récepteur , engendre une seconde suite de n bits , et en ce que le module récepteur possède l'algorythme inverse de décodage F-i () , qui à partir des deux suites de n bits retrouve la suite initiale de 2n bits. 19 Dispositif selon 1 caractérisé en ce que le fournisseur et le récepteur possèdent le même algorythme de codage G() utilisant des blocs de codage B1 et B2 b dit aigorythme étant parfaitement défini et applicable par l'homme de l'art à l'ensemble des microprocesseurs, par les instructions suivantes du microprocesseur Z80 , w C,(HL)--LD A,(lX+d1)--SUB A,C--CPL--INC A--LD E,(lX+d2)--LD (DE),A--lNC HL--INC IX--DJNZ e--LD HL,(nn)--LD DE,(pp)--LD IX,(qq)--LD BC,(rr)--JP pq, les instructions LD A,(IX+dl) et LD E,(lX+d2) pouvant être inversées et les instructions SUB A,C--CPL--INC A pouvant être ADD A,C ou une instruction ou suite d'instructions codant l'octet clair à partir de l'octet du bloc de codage. 20 Dispositif selon 1 et 2 caractérisé en ce que le décodage est opéré en deux phases distinctes effectuées préférentiellement par chacun des microprocesseurs mP2 et mP3 du module, dans la première phase les blocs de décodage étant élaborés à partir d'un algorythme G() par le microprocesseur principal mP2 du module et dans la seconde phase ,les octets étant transférés décodés et chargés en RAM module par le microprocesseur spécialisé mP3 du dit module. 21 Dispositif selon 1 et 2 caractérisé en ce que le fonctionnement de mP3 est controlé par mP2 par l'intermédiaire d'adresses en mémoire micro de début de bloc à décoder, d'adresses de début d'écriture en RAM module du bloc décodé, d'adresses de début de lecture dans les blocs de décodage, adresses que mP2 charge en RAM module à des adresses connues de mP3 et par l'intermédiaire d'un bit b d'adresse connue également de mP3 qui le lit périodiquement dans son cycle d'attenie, et que mP2 met à 1 ou à 0 suivant la nécessité d'un nouveau transfert décodage d'un bloc de mémoire codé de l'ordinateur. 22 Dispositif selon 1 2 et 19 caractérisé en ce que lorsque que le bit b est mis à 0 par mP2 ,mP3 demande à mP2 l'interruption de son signal d'horloge, cette demande d'interruption étant transmise par le bus de commande de mP3 et mP2 y répondant en Interrompant le dit signal d'horloge et en ce que mP2 rend à mP3 son signal d'horloge lorsqu'il a chargé de nouvelles adresses et mis le bit b à 1 ies valeurs active ou inactive, pouvant être indifférament 0 ou 1 . 23 Dispositif selon 1... caractérisé en ce que il y a des instructions d'attente NOP dans l'algorythme de décodage suivant la première solution aux conflits d'accès aux multiplexeurs ,entre la fin du cycle principal du premier circuit et l'instruction de branchement MUX2 du multiplexeur MUX2 du cycle de tests de ce premier circuit, le nombre de NOP correspondant au décalage existant entre la fin de l'utilisation de MUX2 dans le cycle principal du dernier circuit et le début de l'utilisation du même MUX2 dans le cycle de tests du premier circuit, et qu'il y a les mêmes NOP aux mêmes endroits dans les cycles de chaque circuit. 24 Dispositif selon 1 caractérisé en ce que on dispose des multiplexeurs supplémentaires MUX9 , MUX10 et MUX11 ayant les mêmes fontions que MUX2 et MUX3 et controlés par les pseudo instructions MUX9 , MUX10 et MUX11 des cycles de tests des circuits mP3 . 25 Dispositif selon 1 caractérisé en ce que les blocs de décodage B1 et B2 sont écrits initialement en ROM ou en EPROM , chargés en EPROM ou entrés au clavier de l'ordinateur. 26 Dispositif selon 1 caractérisé en ce que la création des blocs de codage est faite une seule fois au début de chaque séance de travail. 27 Dispositif selon 1 caractérisé en ce que les blocs de décodage se déduisent des blocs de codage en ce que chaque adresse contenue du bloc codeur des adresses devient l'adresse contenante du bloc décodeur des adresses à la quelle adresse contenante du bloc décodeur est chargé l'ex adresse contenante du bloc codeur qui devient ainsi l'adresse contenue du bloc décodeur, et en ce que chaque octet du bloc de décodage des octets se met dans le bloc de décodage des octets à l'adresse équivalente donnée par le bloc de codage des adresses. 28 dispositif selon 1 caractérisé en ce que chaque module possède au moins un code interne en ROM ou EPROM de n bits. 29 Dispositif selon 1 caractérisé en ce que le bus d'adresses et le bus de données de l'ordinateur , s'il sont multiplexés sont démultiplexés, et que sont placés dans le module entre les bornes de sortie et MUXI des circuits de type diode interdisant de façon statique et définitive l'adressage de la mémoire du module à partir de l'ordinateur, mais autorisant l'adressage de la mémoire de l'ordinateur à partir du module. 30 Dispositif selon 1 à 4 caractérisé en ce que chaque circuit mP3 est relié par ses trois bus à chacun des multiplexeurs MUXI MUX4, et par son bus de commande à MUX7, et que les circuits mP3 pairs sont reliés à MUX2A et#MUX3A, et les impairs à MUX2B , MUX3B et MUX5 , ou inversement, dans le cas où les circuits MUX2 et MUX3 sont doublés. 31 Dispositif selon i 4 et 15 caractérisé en ce que il y a autant de RAM indépendantes appellées RAMCODE comprenant le bloc de décodage des octets Bi le bloc de décodage des adresses B2 et les octets d'initialisation INIT qu'il y a de circuits mP3. 32 Dispositif selon 1, 4 et 15 caractérisé en ce que chaque RAMCODE est reliée par son bus à un multiplexeur particulier MUX2.i et en ce que chaque multiplexeur MUX2.1 est relié par le dit bus précédent à une RAMCODE ,par un second bus à un circuit mP3 et par un troisièmme bus | au bus général du module BUSMODULE. 33 Dispositif selon 1 , 4 , 31 et 32 caractérisé en ce que chaque circuit mP3 est relié par ses trois bus, au multiplexeur MUX1 assurant sa liaison avec l'ordinateur, au multiplexeur MUX4 assurant sa liaison avec les RAM module de chargement des octets#décodés, et à un multiplexeur MUX2.i assurant sa liaison avec une RAM RAMCODE indépendante contenant les blocs de décodage B1 et B2 et les octets d'initialisation, et par son seul bus de commande au multiplexeur MUX8 assurant la liaison de son bus de commande avec mP2 . 34 Dispositif selon 1 , 4 et 5 caractérisé en ce que le multiplexeur 34 Dispositif selon 1 4 et 6 caractérisé en ce que le multiplexeur MUX4 possède un bus propre de sortie BUSMUX4 sur lequel sont branchés les multiplexeurs MUX4.1 contrôlant les accès åux RAM de chargement indépendantes RAMCHAR . 35 Dispositif selon 1 et 34 caractérisé en ce que des multiplexeurs MUX4.1 sont branchés en entrée sur le bus général BUSMODULE et sur le bus BUSMUX4 du multiplexeur MUX4 ,et en sortie sur une RAM de chargement indépendante RAMCHAR. 36 Dispositif selon 1 caractérisé en ce que existent des drapeaux et quedes instructions de test de ces drapeaux sont placés dans les programmes de contrôle des mP3 aux emplacements des NOP.