Brevet FR2583181A1 — publié le 19861212

présente invention concerne les ordinateurs dits "compatibles". Plus particulièrement. l'invention se rapporte à un procédé et un dispositif d'écriture et de lecture d'informations sur un dispositif de visualisation d'un premier ordinateur dans lequel a été chargé un logiciel écrit pour un second ordinateur. Il existe sur le marché un certain nombre d'ordinateurs annoncés comme compatibles entre eux par différents constructeurs. Dans la description qui va suivre, le terme "compatible" signifie qu'un logiciel par exemple d'application. écrit pour l'un de ces ordinateurs peut fonctionner sur un ordinateur annoncé comme "compatible". Cette compatibilité est rendue possible par le fait que les ordinateurs en question. possèdent un certain nombre d'éléments communs. C'est ainsi qu'en premier lieu, leurs processeurs doivent être identiques ou compatibles. D'autre part, leurs systèmes d'exploitation doivent répondre aux mêmes critères. Il y a lieu tout d'abord de rappeler qu'un système d'exploitation est constitué schématiquement de deux parties - un noyau auquel vont s'adresser les logiciels chargés dans l'ordinateur tels que les logiciels d'application, en lui transmettant des requêtes de niveau haut ou "théoriques ne préjugeant pas des particularités du matériel dont est doté l'ordinateur. A titre d'exemple de requête théorique. on peut demander à l'ordinateur d'écrire un "a" en ligne 2, colonne 3 d'un écran de visualisation; - un BIOS ( Basic Input-Output System) ou système d'entrées-sorties de base qui va traduire ces requêtes "théoriques" en actions concrêtes auprès du matériel de l'ordinateur pour obtenir l'effet sou haité. Ainsi par exemple. le BIOS va écrire le code adéquat à l'adresse adéquate d'une mémoire associée au dispositif de visualisation de l'ordinateur (mémoire vidéo) si celui-ci est dotée d'une telle mémoire, pour qu'un "a" s'affiche au bon endroit sur le dispositif de visualisation. Deux machines telles que par exemple des ordinateurs comportant des matériels différents pourront néanmoins exécuter des logiciels identiques, car le noyau reste le même et seul le BIOS change en fonction du matériel disponible sur la machine. Un logiciel par exemple d application, qui ne s'adresse qu'au noyau, n'est donc pas affecté par les différent ces des BIOS, ni par celles des matériels dont sont dotés les machines. Ainsi, si l'on reprend l'exemple de l'écri- ture d'un "a" mentionnée précédemment. le 8105 d'une machine 8 compatible avec une machine A et dans laquelle a été chargé un logiciel écrit pour la machine A, envoie un code sur une ligne de transmission asynchrone de cette machine B pour qu'un Faw s'affiche sur le dispositif de visualisation qui y est relié. Le logiciel d'application a bien en définitive commandé l'écriture d un a", bien que les chemins pour y parvenir aient été différents. Les logiciels d'application qui respectent ces régIes de dialogue avec les systèmes d'exploitation sont dits portables", c'est à dire qu'on peut les "transporter" d'une machine à une autre sans modification. C'est l'intérêt évident de cette porta bilité qui a présidé à l'invention des systèmes d'exploitation. Cependant, ces règles présentent un certain nombre d'inconvénients. En effet, le noyau, qui constitue une sorte d'interface logicielle entre le logiciel d'application et le BIOS, consomme du temps de processeur et donc ralentit 1 exécution du logiciel d'application. Ce temps d'exécution du logiciel d'application est en définitive le seul qui compte pour l'utilisateur final qui veut ignorer toute l'intendance interne à la machine. Pour résoudre ce problème, certains réalisateurs de logiciels d'application, soucieux d'améliorer les performances en vitesse de leurs produits, passent outre à ces règles et écrivent des logiciels qui s'adressent directement au BIOS de la machine pour laquelle ils sont écrits, sans passer par les appels normaux au système d'exploitation. Cette méthode permet de gagner en temps d'exécution des logiciels mais détruit la portabilité de ceux-ci, Une solution a également été trouvée à ce problème. Cette solution consiste à écrire dans la machine B où l'on veut "transporter" le logiciel d'application. un BIOS découpé lui-même en deux parties (deux couches).C'est ainsi que ce BIOS comporte une couche supérieure à laquelle le logiciel d'application s adresse et qui va reproduire fidèlement le comportement du BIOS de la machine A pour laquelle a été écrit le logiciel "transporté" dans la machine B (mêmes paramètres, mêmes points d'entrées, mêmes valeurs en retour, etc), et une couche inférieure qui va s'adapter aux particularités de matériel de la machine B dans laquelle on a "transporté" le logiciel. La frontière entre requête logique et action physique concrete est donc repoussée une couche plus bas. Cette méthode est par exemple très utilisée sur des ordinateurs compatibles avec les ordinateurs IBM-PC (IBM-Personal Computer). En effet, ceux-ci possèdent un 8IOS qui réside en mémoire morte et qui est bien documenté par son constructeur, ce qui le rend relativement facile à "émuler", c'est à dire que l'on peut reproduire exactement son comportement. Cependant. le problème de la rapidité d'exe- cution des logiciels qui a été décrit précédemment se pose de nouveau au niveau du BIOS. En effet, ce BIOS sert d'interface entre le logiciel d'application et le matériel de la machine et consomme donc, lui aussi, du temps de processeur. Toujours pour des raisons de rapidité d'exécution des logiciels d'application, leurs concepteurs ont parfois décidé de faire gérer directement le matériel de la machine par leurs logi ciels. Cèux-ci ne passent plus alors ni par le système ~d exploitation, ni par le BIOS. mais s'adressent di rectement au matériel de la machine. Cette méthode contraire aux régles normales de programmation, est très répandue dans la pratique. Cependant. en raison du fait que ces logiciels s'adressent directement au matériel de la machine pour laquelle ils ont été écrits, leur portabilité dans une machine dotée d'un matériel différent devient pratiquement nulle comme nous le verrons par la suite. C'est le cas par exemple d'un très grand nombre de logiciels écrits pour 1'IBM-PC, principa lement ceux. très nombreux, qui gèrent directement le dispositif de visualisation de cette machine. Aucun artifice logiciel du type de ceux décrits précédemment ne peut venir à bout de ce pro blême. La seule solution est alors de faire réaliser par le constructeur du logiciel d'application, une version différente adaptée à l'ordinateur "compatible" dans lequel on veut "transporter" ce logiciel d'ap- plication, Cette méthode est utilisée, cependant, elle est souvent financièrement dissuasive et nécessite des investissements en personnel relativement importants. Aussi s'est-on résigné le plus souvent à ne pas pouvoir utiliser ces logiciels sur d'autres ordinateurs que ceux pour lesquels ils ont été conçus. Or, certains ordinateurs sont devenus des "standards du marché" et bénéficient d'une forte diffusion qui attire les concepteurs de logiciels pour qui ils représentent un vaste marché potentiel. Ces ordinateurs disposent alors d'une considérable bibliothèque de logiciels notamment d'application dont le prix de vente unitaire a tendance à baisser du fait de leur forte diffusion. Le but de l'invention est donc de résoudre les problèmes évoqués ci-dessus concernant les difficultes rencontrées lorsque l'on veut "transporter" des logiciels par exemple d'application. dans des machines dites " compatibles", mais dont le niveau de compatibilité est insuffisant pour assurer la "portabilité" desdits logiciels. Plus particulièrement,la présente invention vise å résoudre les problèmes posés par la gestion d'un dispositif de visualisation d'un premier ordinateur dans lequel a été chargé un logiciel écrit pour un second ordinateur, ces ordinateurs étant "compatibles" entre eux. A cet effet, 1 invention a pour objet un procédé de gestion d'informations sur un dispositif de visualisation d'un premier ordinateur comportant un processeur, et dans lequel a été chargé un logiciel écrit pour un second ordinateur comportant également un processeur, le processeur du premier ordinateur étant compatible avec le processeur du second ordinateur, mais le premier ordinateur comportant des logiques d'écriture et de lecture sur le dispositif de visualisation différentes de celles du second ordinateur, caractérisé en ce qu'on détecte des informations issues du processeur du premier ordinateur, destinées â commander une opération de la logique d'écriture de celui-ci, on déconnecte la partie du processeur du premier ordinateur, concernée par ces informations. du reste du premier ordinateur, de façon à empêcher cette opération, on mémorise ces informations, on convertit ces informations mémorisées en informations compatibles avec la logique d'écriture du premier ordinateur et on envoie les informations ainsi converties à ladite logique d'écriture du premier ordinateur, de façon qu'elle effectue ladite opération. Avantageusement. le procédé selon l'inven- tion, dans lequel chacune desdites informations comporte, entre autres, une adresse et des données, est également caractérisé en ce qu'on mémorise les données à l'adresse correspondante dans une mémoire distincte de la logique d'écriture du premier ordinateur. Suivant un autre aspect du procédé selon l'invention, celui-ci est également caractérisé en ce qu'on détecte des informations issues du processeur du premier ordinateur destinées à commander une opération de la logique de lecture sur le dispositif de visualisation de celui-ci, on déconnecte la partie du processeur du premier ordinateur concernée par ces informations. du reste du premier ordinateur et on connecte ladite mémoire distincte sur la partie concernée du processeur du premier ordinateur. L'invention a également pour objet un dispositif de gestion d'informations sur un dispositif de visualisation d'un premier ordinateur comportant un processeur, et dans lequel a été chargé un logiciel écrit pour un second ordinateur comportant également un processeur, le processeur du premier ordinateur étant compatible avec le processeur du second ordinateur, mais le premier ordinateur comportant des logiques d'écriture et de lecture sur le dispositif de visualisation différentes de celles du second ordinateur, caractérisé en ce qu'il comporte des moyens de détection d'informations issues du processeur du premier ordinateur, destinées à commander une opération de la logique d'écriture de celui-ci, des moyens destinés à déconnecter la partie du processeur du premier ordinateur. concernée par ces informations, du reste du premier ordinateur de façon à empêcher cette opération, des moyens de mémorisation de ces informations, des moyens de conversion de ces informations mémorisées en informations compatibles avec la logique d'écriture du premier ordinateur et des moyens destinés à connecter lesdits moyens de conversion et ladite logique d'écriture du premier ordinateur de façon à envoyer les informations ainsi converties à ladite logique d'écriture pour qu'elle effectue ladite opération. Avantageusement,le dispositif selon l'invention, est caractérisé en ce que les moyens de mémorisation sont constitués par une mémoire distincte de la logique d'écriture du premier ordinateur. Selon un autre aspect,le dispositif selon 1 invention est également caractérisé en ce qu'il comporte des moyens de détection d'informations issues du processeur du premier ordinateur, destinées à commander une opération de la logique de lecture sur le dispositif de visualisation de celui-ci, des moyens destinés à déconnecter la partie du processeur du premier ordinateur, concernée par ces informations, du reste du premier ordinateur. et des moyens destinés à connecter ladite mémoire distincte sur ladite partie concernée du processeur du premier ordinateur L'invention sera mieux comprise à l'aide de la description qui va suivre, donnée uniquement à titre d'exemple et faite en se référant aux dessins annexés, sur lesquels - la Fig.1 illustre le fonctionnement d'un ordinateur A dans lequel a été chargé un premier logiciel d application; ; - la Fig.2 illustre le fonctionnement d'un ordinateur B dit "compatible" avec l'ordinateur A et dans lequel a également été chargé le premier logiciel d'application; - la Fig.3 illustre le fonctionnement de l'ordinateur A dans lequel a été chargé un second logiciel d'application; - la Fig.# illustre le fonctionnement de l'ordinateur 8 pour ce second logiciel d'application; la Fig.5 illustre plus en détail le fonctionnement de l'ordinateur B, dans lequel a été chargé le second logiciel d'application; - la Fig.6 illustre le fonctionnement de l'ordinateur A dans lequel a été chargé un troisième logiciel d'application; - la Fig.7 illustre le fonctionnement de l'ordinateur B dans lequel a été chargé le troisième logiciel d'application;; - la Fig.8 représente un schéma synoptique d'un dispositif selon un mode de réalisation de l'invention. Ainsi qu'il est représenté sur la Fig.1, on a chargé dans un ordinateur A qui sera appelé ci-après machine A, un logiciel d'application 1 adressant des requêtes logiques ou de niveau haut à un noyau 2 d'un système d'exploitation 3 comportant également un BIOS 4. Le noyau 2 de ce système d'exploitation transforme les requêtes logiques transmises par le logiciel d'application en requêtes physiques qui sont transmises au BIOS de la machine. Le BIOS 4 transforme, quant à lui les requê- tes physiques issues du noyau 2, en actions physiques destinées å un matériel 5 de la machine A. Le terme "matériel" doit être compris dans la présente description, comme englobant tous les composants constitutifs de la machine A. On a représenté sur la Fig.2. une machine B dite "compatible" avec la machine A dans laquelle a été chargé le logiciel d'application 1 transmettant des requêtes logiques au noyau 2 d'un système d'exploitation 6 de cette machine. Ce système d'exploitation 6 comporte un BIOS 7 différent du BIOS 4 de la machine A et destiné à adapter les requêtes physiques provenant du noyau du système d'exploitation en actions physiques sur un matériel 8 spécifique à cette machine B et différent de celui de la machine A. On peut donc constater que les noyaux des deux machines sont identiques et reçoivent des requetes logiques de logiciels d'application également identiques. Cependant.les matériels de ces machines étant différents. les BIOS, dont la fonction est de transformer les requêtes physiques provenant du noyau en actions physiques sur le matériel, sont différents. Ainsi, deux machines comportant des mate- riels différents peuvent néanmoins exécuter des logiciels identiques, car le noyau reste le même et seul le BIOS change en fonction du matériel disponible sur la machine. On peut constater que le logiciel, qui ne s'adresse qu'au noyau, n'est pas affecté par les différences des BIOS et donc des matériels spécifiques aux deux machines. Il existe dans l'état de la technique des logiciels d'application qui respectent ces règles de dialogue avec le système d'exploitation et ces logiciels sont dits 'portables , comme on l'a déjà décrit c'est à dire qu'on peut les "transporter" de la machine A dans la machine B sans modification. Cependant, comme on l'a déjà fait remarquer cette méthode comporte un certain nombre d'inconvénients notamment au niveau du temps d'exécution du logiciel d'application. Afin d'améliorer les performances en vitesse de leurs produits, certains réalisateurs de logiciels écrivent des logiciels Il {Fig.3) qui s'adressent directement au BIOS de la machine pour laquelle ils sont écrits sans passer par les appels normaux au système d'exploitation. C'est ainsi que, comme on le voit sur la Fig.3, le logiciel d'application Ra adresse directement des requêtes physiques au BIOS 4 de cette machine. Lorsque ce logiciel il est "transporté" dans une machine B (Fig.4) dite "compatible" avec la machine A, et comportant un BIOS 7, différent du BIOS s comme il a déjà éte mentionné, il se pose un certain nombre de problèmes au niveau de ces requêtes physiques directes.En effet, le BIOS 7 étant adapté au matériel 8 de la machine 8, ce BIOS est généralement complètement différent du BIOS 4 de la machine A. Les requêtes physiques directes provenant du logiciel la, au BIOS 7 de la machine B dite "compatible", ne tenant pas compte des particularités de celui-ci, liées au fait que le matériel de la machine B est différent du matériel de la machine A, vont donc entrainer des commandes incohérentes de ce BIOS pouvant amener la machine B à se bloquer complètement. La "portabilité" de ces logiciels c'est à dire leur passage d'une machine A pour le BIOS duquel ils ont été écrits, dans une machine B dont le BIOS tient compte d'un matériel différent, est donc pratiquement détruite. La solution apportée à ce problème consiste à écrire dans la machine B (Fig.5), un BIOS 9 découpé en deux parties : une couche supérieure 10 et une couche inférieure 11. La couche supérieure 10 à laquelle le logiciel d'application va s'adresser, et qui va reproduire fidèlement le comportement du BIOS de la machine A (mêmes paramètres. mêmes points d'entrée, mê- mes valeurs en retour, etc..) reçoit donc les requêtes physiques du noyau 2 de même que les requêtes physiques directes provenant du logiciel d'application la. Il est à noter que cette partie supérieure du BIOS est compatible avec le BIOS de la machine A. La partie spécifique à la machine B constituée par la partie inférieure 11 du BIOS 9 va donc transmettre les actions physiques au matériel 8 de la machine B en tenant compte des spécificités de celui-ci. Cependant, la frontière entre requête logique et action physique concrête n'est que repoussée une couche plus bas, on reperd donc en rapidité ce qu'on a gagné en "portabilité". D'autre part, toujours pour faire s'exécu ter plus vite leurs logiciels, leurs concepteurs ont parfois décidé de faire gérer directement le matériel 5 (Fig.6# par un logiciel d'application 1b qui ne passe alors plus ni par le système d'exploitation, ni par le BIOS pour transmettre des actions physiques directes à ce matériel. Ces logiciels d'application lq sont donc écrits spécialement pour s'appliquer à une machine A comportant un matériel 5 spécifique dont les caractéristiques sont bien déterminées. lorsque l'on veut utiliser ce logiciel d'application 1b dans une machine B IFig.7) dont le matériel 8 est différent du matériel 5 de la machine A, les actions physiques directes de ce logiciel d'application ne tiennent aucun compte des spécificités du matériel 8 de cette machine B et peuvent donc entrainer le blocage de cette machine. La portabilité de ce logiciel d'application est généralement nulle. Jusqu'à prQsent,la seule solution consistait à faire réaliser par le concepteur du logiciel d'application la une version différente adaptée au matériel 8 de la machine B dite "compatible avec la machine A. et dans laquelle on voulait utiliser le logiciel 1b. Les logiciels en question posent deux classes de problème: - d'une part au niveau de la gestion du dispositif de visualisation de la machine; - et d'autre part, au niveau de l'exécution directe d'instructions d'entrée-sortie. On va maintenant décrire un exemple de problème se posant lorsque la machine B comporte une mémoire à travers laquelle est géré le dispositif de visualisation de la machine. Cette mémoire est encore appelée mémoire vidéo. La gestion de dispositifs de visualisation de certaines machines nécessite qu'une mémoire contienne à tout instant une représentation de ce que l'on veut voir s'afficher sur ce dispositif de visualisation. Ainsi par exemple dans le cas d'un dispositif de visualisation alphanumérique, cette mémoire comporte les codes des caractères et de leurs éventuels attributs (surbrillance, soulignement, clignotement, etc.. ). Cette mémoire est généralement gérée par le BIOS, à travers des interfaces plus ou moins compliquées.Mais une méthode de plus en plus courante consiste à réaliser une électronique de gestion du dispositif de visualisation, de façon que cette mémoire soit accédée par le processeur de la machine exactement comme de la mémoire centrale ordinaire (avec ou non des restrictions sur les moments où le processeur peut l'accéder, si il est nécessaire de se synchroniser sur les signaux de synchronisation vidéo). Cette mémoire vidéo est donc logée dans la mémoire de la machine. Néanmoins, l'accès normal à cette mémoire passe par le BIOS. Cependant, il est possible à un logiciel par exemple d'application d'effectuer directement des écritures, (c'est à dire afficher quelque chose) et des lectures- ( c'est à dire "lire" le contenu du dispositif de visualisation) dans cette mémoire.Ces lectures/écritures se font à des adresses précises qui dépendent du matériel de la machine considérée. Ainsi par exemple si l'on prend le cas d'un IBM-PC,la case mémoire d'adresse BOOOOH contient le code ASCII du caractère qui s'affiche en haut et à gauche de l'écran. L'adresse 80001H contient le codage de ses attributs. Si on "transporte" dans une machine B, un logiciel qui gère directement cette mémoire pour une machine A. il va donc effectuer sur cette machine B, des lectures/écritures à ces mêmes adresses. Comme on l'a vu dans cette machine B, dont le matériel n'est pas par définition identique au matériel de la machine A, on peut trouver à ces adresses tout à fait autre chose ou même rien du tout. Le résultat de cette commande va être alors être plus ou moins catastrophique pouvant aller jusqu'au "blocage de la machine 8. En tout cas, on n'obtiendra pas l'affichage souhaité. La solution à ce problème, apportée par la présente invention, consiste à placer un dispositif entre le processeur qui peut être constitué par un microprocesseur et ses circuits annexes et le reste de la machine B, ce dispositif analysant en permanence et en temps réel les accès à la mémoire, effectués par le processeur de la machine B. Tant que ce dispositif détecte des accès à la mémoire normale de la machine B, il transmet fidèlement les signaux du processeur au reste de la machine et réciproquement. Cependant, dès que le dispositif selon l'invention détecte un accès potentiel à la mémoire vidéo, accès qu'il reconnait en comparant l'adresse mémoire émise par le processeur aux adresses connues de la mémoire vidéo de la machine A, il bloque imme- diatement cet accès, en filtrant les signaux utiles du processeur, c'est à dire les signaux "READ", "RITE", etc. Le reste de la machine 8, ne recevant pas ces signaux, n'est donc pas perturbé. Le dispositif selon l'invention fournit alors au processeur de la machine 8, les signaux nécessaires au bon achèvement du cycle mémoire en cours, c'est à dire les signaux "READY". etc, et en même temps il émet vers le processeur, une demande d'interruption qui posséde un très haut niveau de priorité. Ainsi par exemple, cette demande d'interruption peut être constituée par une demande d'in- terruption non masquable NMI sur un microprocesseur du type INTEL 8086. Le dispositif mémorise alors l'adresse å laquelle le logiciel vient de tenter une opération d'écriture. ainsi que les données qu'il a tenté d' écrire. Le processeur va alors terminer le cycle en cours, puis répondre à la demande d'interruption que l'on vient d'engendrer. Cela va avoir pour effet de passer le contrôle à des moyens de conversion qui peuvent être constitués par un logiciel d'accompagnement que l'on aura préalablement chargé dans la machine. Ce mécanisme de passage de contrôle est plus ou moins complexe selon le processeur. Ainsi par exemple, si le processeur de la machine B comporte un microprocesseur INTEL 8086. il suffit de noter à une adresse particulière de la mémoire de cette machine (appelée vecteur d'interruption), l'adresse du programme d'accompagnement qui va répondre à l interrup- tion. Ce logiciel d'accompagnement est écrit en tenant compte à la fois des particularités de matériel de la machine A et de celles de la machine B. Ce logiciel va interroger le dispositif, par exemple par des instructions d'entrée-sortie pour relire les informations mémorisées, A la suite de cette opération, le logiciel va exécuter réellement l'op~ration souhaitée en la traduisant. en une action concrète adéquate sur la machine B. L opération directe qui a été interrompue va donc être simulée par le dispositif# selon l'invention, pour obtenir un résultat final équivalent sur la machine B.Si par exemple, on a porte un logiciel d'application écrit par un ordina teur IBM-PC sur une machine B, lorsque le dispositif détecte une tentative d'écriture en BOOOOH, le logiciel d'accompagnement va être activé de la manière décrite précédemment et va déduire qu'il s'agit d'une tentative d'écriture d'un caractère en haut et à gauche du dispositif de visualisation. Il va également obtenir le code ASCII de ce caractère, qui est la donnée qui a été mémorisée par le dispositif. Le logiciel d'accompagnement va alors déclencher les actions nécessaires pour écrire le même caractère en haut et à gauche du dispositif de visualisation de la machine B. Ceci peut nécessiter des opérations de transcodage plus ou moins compliquées, tant pour respecter l'emplacement du caractère que ces attributs éventuels. Une fois cette opération terminée, le logiciel d'accompagnement va rendre le contrôle au logiciel d'application qui a été interrompu, logiciel qui va reprendre son cours d'éxécution normal. Dans la présente description, les termes logique d'écriture" et "logique de lecture" devront être compris comme englobant les moyens permettant à un processeur d'une machine d'effectuer une opération d'écriture ou de lecture sur le dispositif de visualisation de celle-ci. On voit donc que lorsqu'un logiciel d'application, écrit pour un ordinateur A est chargé dans un ordinateur B dont la logique d'écriture sur le dispositif de visualisation est différente de celle de l'ordinateur A, tente d'effectuer une opération d'écriture aux adresses qui sont censées correspondre à la logique d'écriture sur le dispositif de visualisation de l'ordinateur B, on détecte les informations issues du processeur de l'ordinateur B, destinées à commander cette opération, on déconnecte la partie dudit processeur concernée par ces informations, du reste de l'ordinateur de façon à empêcher cette opération, on mémorise ces informations, on convertit ces informations mémorisées en informations compatibles avec la logique d'écriture sur le dispositif de visualisation de l'ordinateur 8 et on envoie les informations ainsi converties à ladite logique d'écriture de l'ordinateur B de façon qu'elle effectue ladite opération. Le cas d'une lecture du dispositif de visualisation par le logiciel d'application est plus complique. De la même façon qu'on a bloqué la tentative d'écriture. on détecte et on mémorise des informations issues du processeur de l'ordinateur B de façon à bloquer une tentative de lecture. Comme on l'a déjà vu, cette tentative de lecture par le logiciel d'application écrit pour une machine A, ne correspond pas aux instructions nécessaires pour déclencher une opération de lecture par la logique de lecture de la machine B, car le matériel de la machine B est différent de celui de la machine A. Or, l'instruction de lecture que l'on vient d'interrompre, était censée transférer la donnée lue dans un endroit particulier de la machine B, c'est à dire un registre ou une case mémoire de celle-ci. Le dispositif selon l'invention va donc intercepter cette tentative de lecture et fournir au processeur de la machine B, une donnée factice afin que le cycle en cours se termine normalement. Ce dispositif va ensuite engendrer une demande d'interruption qui sera transmise au microprocesseur qui comme dans le procédé d'écriture va passer le contrôle au logiciel d'accompagnement qui va analyser les infor mations mémorisées qui sont constituées en outre par des adresses, en déduire quelle partie du dispositif de visualisation on a tenté de relire, relire effectivement ce qui est affiché sur le dispositif de visualisation de la machine B à cet endroit, mais on ne sait pas où ce logiciel doit rendre ce résultat. Pour répondre. il va devoir analyser l'instruction qui a été interrompue. Pour se faire, il trouve l'adresse de cette instruction grâce à un mécanisme de pile géré par le microprocesseur, destiné à répondre aux demandes d'interruption. Cependant, cette analyse est en général très difficile à réaliser et est même impossible dans certains cas. En effet, on sait à quelle adresse l'instruction se termine, mais pas à laquelle elle commence et son analyse en remontant les adresses, peut conduire à des ambiguités impossibles à résoudre par exemple dans le cas de l'utilisation d'un processeur INTEL 8086. Il est à remarquer qu'il existe dans l'état de la technique des logiciels qui font des écritures directes dans la mémoire vidéo, mais jamais de lecture. Dans ce cas, il suffit de régler le problème de l'écriture. Pour les autres logiciels, c'est à dire les logiciels permettant de faire des écritures et des lectures directes dans la mémoire vidéo, il faut aussi régler le problème de la lecture. La solution apportée à ce problème par la présente invention consiste à incorporer dans le dispositif selon l'invention, une mémoire vidéo factice. Cette mémoire n'engendre pas d'image et elle est là uniquement pour contenir à tout instant ce qu'aurait contenu la mémoire vidéo réelle de la machine A si celle-ci en comportait une ou une représentation de ce qui aurait été réellement affiché sur le dispositif de visualisation. Les accès en écriture sont alors non seule ment inhibés comme on l'a vu, mais détournés vers cette mémoire locale du dispositif selon l'invention, en plus ~de leur simulation par le logiciel d'accompagnement. Cette mémoire occupe les mêmes adresses qu'elle occuperait sur la machine A. C'est ainsi que chacune desdites informations qui sont destinées à la logique d'écriture de la machine B et qui sont détectées par le dispositif selon l'invention comportent en outre une adresse et des données, données qui sont mémorisées à l'adresse correspondante dans une mémoire distincte de la logique d'écriture de l'ordinateur B, simulant la mémoire vidéo de l'ordinateur A, un décodage d'adresses local au dispositif réalise cet effet comme nous le verrons par la suite. Le fait qu'il puisse déjà exister de la mémoire à ces adresses dans la machine B, ne crée pourtant pas de conflits d'adressage puisque lorsque cette mémoire vidéo factice est accédée, les signaux vers le reste de la machine sont inhibés par le dispositif comme on l'a déjà vu. Les accès en lecture sont alors non seulement inhibés pour le reste de la machine, mais détounés vers cette mémoire du dispositif qui fournit alors au processeur les données qu'il attend. Il est à noter que l'intervention du logiciel d'accompagnement n'est donc même pas requise pour ces accès en lecture. En effet, cette mémoire vidéo factice contient les données destinées à la logique d'écriture de la machine B, ces données étant placées aux adresses déterminées par le logiciel d'application qui effectue donc ces écritures et ces lectures aux adresses correspondan tes. Pour une lecture, on détecte donc des informations, issues du processeur de l'ordinateur B destinées à commander une opération de la logique de lecture de celui-ci, on déconnecte la partie du processeur de l'ordinateur B, concernée par ces informations, du reste de l'ordinateur 8 et on connecte ladite mémoire distincte sur ladite partie concernée du processeur de l'ordinateur B. de façon que le processeur en demandant une lecture à une certaine adresse, reçoive les données adéquates. Il est à remarquer qu'il existe dans l'état de la technique, des logiciels qui font non seulement des accès directs à la mémoire vidéo, mais également des requêtes normales à travers le système d'exploitation ou le BIOS. Pour que la mémoire vidéo factice contienne bien à chaque instant l'image fidèle du dispositif de visualisation de la machine, il faut que le BIOS tienne compte de l'existence de cette mémoire et la mette à- jour en même temps que le dispositif de visualisation réel, chaque fois qu'il le modifie. C'est un problème de programmation qui ne soulève pas de difficultés particulières. Simplement, le dispositif selon l'invention peut posséder un mode de fonctionnement "transparent" que le logiciel d'accompagnement active par exemple par une instruction d'entrée-sortie. Une fois dans ce mode, le dispositif selon l'invention ne déclenche plus d'interruption du microprocesseur suite aux accès effectués dans la mémoire factice du dispositif. Le logiciel d'accompagnement est donc capable de modifier cette mémoire comme il l'entend. Une fois l'opération terminée, il remet le dispositif selon l'invention dans le mode "actif". Dans le cas où il existe de la mémoire ou d'autres dispositifs à la même adresse que cette mémoire vidéo factice, leur accès doit rester possible. Par définition, ce n'est pas le logiciel d'application qui le fait, puisque pour lui, c'est la mémoire vidéo qui s'y trouve. C'est donc un logiciel spécifique de la machine B par exemple. le BIOS, qui réalisera cette opération. Il suffit à ce logiciel spécifique de la machine 8 de placer le dispositif en mode "inactif" et d'effectuer ces accès. Dans ce mode, le dispositif n'a plus aucune action sur le fonctionnement de la machine et la mémoire vidéo factice disparait de l'espace d'adressage. Le logiciel spécifique replace ensuite le dispositif selon l'invention en mode "actif". Il existe une deuxième possibilité de résolution de ce problème. Quand une écriture est effectuée dans la mémoire vidéo factice, le logiciel d'accompagnement détermine si l'auteur en est le logiciel d'application ou un logiciel propre à la machine B. Cela est souvent possible en examinant l'adresse de l'instruction qui a effectué l'accès. Cependant, ceci dépend de l'organisation de la mémoire de la machine B et n'est pas possible sur tous les ordinateurs. Il est à noter que le but de l'invention n'est pas de simuler une machine sur une autre. Ce procédé est bien connu sous le nom "d'émulation". L'invention porte plutôt sur la détection d'actions "illégales" d'un logiciel d'origine par exemple d'application fonctionnant sur la machine B sans aucune modification, cette détection s'opérant en temps réel et les actions illégales étant inhibées avant qu'elles aient pu entrainer une action dans la machine B. C'est ainsi que lorsqu'on a détecté une action illégale. on déconnecte la partie du microprocesseur, concernée par cette action qui est ensuite simi lée par un logiciel d'accompagnement. Dans le cas où le logiciel d'application permet une lecture du dispositif de visualisation, une mémoire prévue dans le dispositif selon l'invention, distincte de la logique d'écriture de l'ordinateur B. simule la mémoire vidéo de l'ordinateur A. D'autre part, le dispositif peut posséder un mode "inactif", comme on l'a vu, dans lequel il ne perturbe pas le fonctionnement de la machine B, laissant accès à la totalité de ses ressources, qui peuvent être très supérieures à celles de la machine A. Le dispositif selon l'invention consomme simplement quelques adresses d'entrée-sortie pour ses registres de commande. D'autre part, le dispositif peut posséder également un mode "transparent" dans lequel les accès à la mémoire vidéo factice sont permis sans exécution du logiciel d'accompagnement. Ceci est le cas notamment lorsque le BIOS assure une remise à jour de cette mémoire. La deuxième classe de problèmes posés par l'adaptation d'un logiciel écrit pour un ordinateur A sur un ordinateur B concerne l'exécution directe d'instructions d'entrée-sortie. Les logiciels auxquels s'attache la présente invention commandent directement les périphériques de la machine sur laquelle ils sont censés fonctionner. Ceci se fait par l'intermédiaire d'instructions d'entrée-sortie (IN ou OUT dans le cas d'un INTEL 8086) à des adresses bien précises, en émettant des données bien précises ou en venant lire des informations provenant des périphériques. Les termes "logique d'entrée-sortie" utili ses ci-après désignent les moyens permettant au pro cesseur de la machine en question, d'effectuer ces opérations, Par exemple, sur un ordinateur IBM-PC, on peut faire sonner à petit haut parleur en émettant à 1 adresse de sortie 006 1H, une donnée dont le bit de poids faible est égal à 1. Dans l'autre sens, on peut lire à l'adressse d'entrée 006bu, le numéro de la dernière touche frappée sur le clavier de la machine. Si un logiciel est "transporté" sur une machine B dans laquelle les adresses d'entrée-sortie sont différentes de celles de la machine A, les accès en entrée-sortie de ce logiciel ne donneront pas les résultats escomptés. Le rôle du dispositif selon l'invention va être d'inhiber ces accès dans l'espace d'entrée-sortie de la machine B en utilisant la même technique que pour les accès à la mémoire vidéo. C'est ainsi par exemple, que s'il s'agit d'une sortie, la donnée va être ignorée comme nous le verrons par la suite. S'il s'agit d'une entrée, le processeur de la machine lira une valeur factice que lui fournira le dispositif selon l'invention.Le dispositif# selon l'invention va alors activer le signal d'interruption du microprocesseur de cette machine qui va passer le contrôle au logiciel d'accompagnement, après sauvegarde dans un mécanisme de pile géré par le microprocesseur de l'adresse à laquelle le programme vient d'être interrompu. Le logiciel d'accompagnement va alors examiner le code de l'instruction qui vient de s'exécuter. Contrairement aux instructions générales de manipulation de données,les instructions d'entrée sortie sont suffisamment limitées pour que cette ana lyse soit simple. Ceci est le cas par exemple sur les microprocesseurs INTEL 8088, 8086, 80186, 80188. S'il s'agit d'une sortie, le logiciel va déterminer à partir de l'adresse de celle-ci quel est le rôle de cette sortie. D'autre part, il va trouver dans le registre idoine (indiqué par le code de l'instruction interrompue), la valeur que l'on a voulu émettre. Il va ensuite simuler cette action sur le matériel dont est dotée la machine B. Par exemple, si on a envoyé O1 à l'adresse 0061H, cela signifie que le logiciel d'application veut émettre un signal sonore. Le logiciel d'accompagnement va alors engendrer un code 07 ASCII, si il dispose d'un terminal ASCII. Le terminal sonne et le but est atteint. Le logiciel d'accompagnement redonne ensuite le contrôle au logiciel d'application interrompu qui continue son exécution comme si la sortie avait eu lieu normalement. S'il s'agit d'une entrée, grâce à l'analyse déjà décrite, le logiciel d'accompagnement va savoir ce que le logiciel était censé lire. Il va alors simuler cette lecture, en s'aidant ou pas du matériel dont est dotée la machine B. Il va entrer la valeur simulée dans le registre adéquat puis redonner le contrôle au logiciel d'application qui va reprendre le cours de son exécution comme si l'entrée avait réellement eu lieu. Ainsi, par exemple lors d'une entrée en 0060H, on rendra dans le registre adéquat le code qu'aurait engendré sur un ordinateur IBM-PC, la touche de même gravure que la dernière touche qui a été frappée sur le clavier dont on dispose. Cela peut nécessiter que les pilotes du clavier mémorisent quelque part cette information, afin de pouvoir parer à cette éventualité. On peut également décrire un autre exemple dans lequel le matériel de la machine n'intervient pas. Une entrée particulière permet sur un ordinateur IBM-PC de lire la position de petits interrupteurs positionnés par l'utilisateur en fonction de la quantité de mémoire dont il dispose. Ces interrupteurs n'ont pas besoin d'exister sur la machine B. Le logiciel d'accompagnement peut rendre dans le registre concerné, la valeur que ces interrupteurs seraient censés avoir sur un ordinateur IBM si on disposait de la mémoire dont on dispose effectivement suivant la machine B. Cependant. le système d'exploitation de la machine B, le BIOS ou même des programmes écrits pour la machine B vont également exécuter des instructions d'entrée/sortie, et celles-ci ne doivent pas être simulées par le dispositif mais réellement exécutées par la machine B. Le problème posé est particulièrement complexe dans le cas où co-exîstent à une même adresse un dispositif "virtuel" de la machine A comme il vient d'être décrit et un dispositif réel de la machine B. Dans le cas plus simple où il n'y a qu'un dispositif, un accès "illégal" ne peut être le fait que d'un logiciel d'application. Cependant dans le cas où il y a ambiguïté, la solution consiste, pour le logiciel d'accompagnement, å examiner l'adresse à laquelle l'exécution a été interrompue. Connaissant l'adresse d'implantation du BIOS, le logiciel d'accompagnement peut alors savoir si l'ordre provient du BIOS et si cette action est dite "legale" ou du logiciel d'application c'està-dire une action "illégale". Cependant, cette analyse n'est pas possible sur toutes les machines. Elle est par contre très simple sur une machine utilisant le logiciel d'exploitation MS-DOS ou PC-DOS, dans lequel le système est borné par une adresse supérieure facile à connaitre et ou le BIOS occupe généralement les adresses les plus hautes de la mémoire, délimité par une borne inférieure connue. S'il s'agit d'un accus illégal il sera simulé comme expliqué plus haut. Cependant, s'il s'agit d'un "accès légal" il sera purement et simplement exécuté réellement par le logiciel d'accompagnement qui dispose alors de toutes les données pour cela. Bien sûr ce logiciel d'accompagnement aura place le dispositif selon l'invention en mode "inactif" avant de réaliser l'opération. Ensuite, il replace le dispositif en mode "actif" et rend le contrôle au logiciel d'application interrompu. Celui-ci reprend son cours normal que ce soit un logiciel d'application ou le système d'exploitation lui-meme. Il est à remarquer qu'on peut concevoir le dispositif selon l'invention de façon à ce qu'il ne filtre que les adresses où une possibilité d'accès "illégal" existe. Cependant pour simplifier le matériel, on peut aussi filtrer systématiquement toutes les opérations d'entrée-sortie en laissant le soin au logiciel d'accompagnement de faire le tri. Ainsi on -voit donc que lorque le processeur d'un ordinateur B dans lequel a été chargé un logiciel écrit pour un ordinateur A comportant une logique de gestion d'entrée-sortie différente de celle de l'ordinateur B, tente d'effectuer une opération d'entréesortie, on détecte des informations issues du processeur de l'ordinateur B, destinées à commander ladite opération de la logique d'entrée-sortie de l'ordina teur B, on deconnecte la partie du processeur de l or- dinateur B concerné par ces informations, du reste de l'ordinateur B, de façon à empêcher ladite opération on convertit ces informations en informations compatibles avec la logique d'entrée-sortie de l'ordinateur B, et on envoie lesdites informations converties à ladite logique d'entrée-sortie s'il s'agit d'une sortie ou au processeur s'il s'agit d'une entrée afin de réaliser ladite opération. Lorsque le processeur de l'ordinateur tente d'effectuer une opération de sortie de données à une adresse déterminée, cette tentative est détectée et inhibée, on engendre ensuite une demande d interruption du microprocesseur de la machine B, qui va passer le contrôle a un logiciel d'accompagnement. Ce logiciel d'accompagnement lit à L'adresse de l'instruction interrompué, les données que le microprocesseur voulait sortir et l'adresse à laquelle il désirait le faire. Ce logiciel vient ensuite simuler cette sortie en fonction du matériel de la machine B, c' est-à-dire qu'il transforme pour cette machine B, une tentative d'opération de sortie de données par un logiciel d'ap- plication écrit pour une machine A, en une opération de sortie appropriée au matériel de la machine B. Lorsque le processeur tente d'effectuer une opération d'entrée, celle-ci est détectée et inhibée. On engendre alors une demande d'interruption du processeur de la machine B, qui passe le contrôle au logiciel d'accompagnement. Ce logiciel vient lire et analyser à l'adresse de l'instruction interrompue, l'adresse où le processeur voulait effectuer une lecture de données, en déduit l'objet de la requête, et envoie dans le registre adéquat du processeur, des données représentant au mieux les résultats escomptés par l'opération d'entrée Si elle avait eu lieu sur l'ordinateur A. Pour se faire, le logiciel d'accompagnement peut se servir du matériel existant sur la machine B en effectuant une conversion de l'adresse délivrée par le processeur en une adresse compatible avec le matériel de la machine 8. en effectuant ensuite une lecture à cette adresse et en convertissant si besoin est les résultats de cette lecture, en données correspondantes qui auraient été délivrées par le matériel d'une machine A. D'autre part, Si un tel matériel n'existe pas sur la machine B, le logiciel peut le simuler complètement artificiellement. On va maintenant décrire en détail un exemple de réalisation d'un dispositif selon l'invention. A titre d'exemple l'ordinateur A pour-lequel à été décrit un logiciel d'application peut-être cons titué par un ordinateur IBM-PC, équipé d'un microprocesseur du type INTEL 8088 constituant le processeur évoqué précedemment. L'ordinateur B dans lequel est chargé le logiciel d'application écrit pour l ordina- teur A peut-être constitué par tout ordinateur équipé d'un microprocesseur INTEL 8086 fonctionnant en mode "minimal". D'autre part on a effectué les choix suivants pour l'exemple de réalisation - la mémoire vidéo factice du dispositif selon l'invention, simulant la mémoire vidéo alphanumérique de l'ordinateur IBM-PC est constituée par une mémoire de 2048 mots de seize bits a partir de l'adresse BOOOOH. - On utilise l'interruption non masquable "NMI" pour passer le contrôle au logiciel d'accompagnement. - On ne prévoit pas de mode "transparent" pour le dispositif - On intercepte toutes les instructions d'entrée et de sortie qui seront reconnues grâce au signal de sélection d'espace mémoire ou d'entrée-sortie M-IO/. - Les signaux du microprocesseur affectés par le dispositif sont: sortie RD/ qui est la commande de lecture; sortie WR/ qui est la commande d'écriture sortie DEN/ qui est la commande des amplificateurs de chemin de données (en d'autres termes DATA BUS BUFFERS); entrée NMI qui est la demande d'interruption non masquable; et entrée READY qui est le signal de fin d'exécution du cycle. Les autres broches du B086 sont simplement analysées par le dispositif. Leurs signaux ne sont pas modifiés. Le dispositif selon l i-nvention se présente sous la forme d'un module à 40 broches, comme le processeur d'origine. Il est simplement plus encombrant. Ce module vient s'enficher à la place du processeur d'origine qui est alors déporté sur le module luimême. Le module reçoit son alimentation électrique par les broches qui alimentaient a l'origine le microprocesseur. Le logiciel d'accompagnement est chargé en mémoire lorsque l'utilisateur le désire, soit des le démarrage de l'ordinateur soit lorsqu il en a besoin pour faire exécuter un logiciel d'application. Le logiciel d'accompagnement réagit à des commandes d' acti- vation et de désactivation émanant de l'utilisateur, afin qu'il puisse replacer la machine dans son mode normal de fonctionnement si il le désire, c'est à dire que le dispositif se trouve alors en mode "inactif". Bien que dans le mode de réalisation décrit le dispositif se présente sous la forme d'un module à 40 broches venant s'enficher à la place du microprocesseur d'origine, le dispositif selon l'invention peut être prévu d'origine sur les machines et faire partie intégrétante des circuits imprimés de cellesci. Comme on peut le voir sur la figure 8 qui représente un schéma synoptique simplifié d'un dispositif selon l'invention le dispositif est connecte aux bornes du reste de la machine désigné de façon générale par la référence 15. Ce dispositif comporte donc un microprocesseur 16 du type INTEL 8086 relie directement à la borne ALE. au bus d'adresse, à la borne M-IO/ et au bus de données du reste de la machine. D'autre part la borne d'interruption NMI/ du microprocesseur 16 est reliée à la sortie d'une porte OU 17 dont une entrée est reliée à la borne de demande d'interruption NMI du reste de la machine et dont l'autre borne est reliée a la sortie d'une bascule 18 dont la connexion sera décrite plus en détail par la suite.La borne DEN/ du microprocesseur 16 est reliée à l'entrée d'un aiguilleur de DEN/t9 dont une sortie est reliée à la borne de DEN/ du reste de la machine. Les autres connexions de cet aiguilleur 19 seront décrites plus en détail par la suite. ,La borne de lecture, c'est-à-dire la borne RD/ du microprocesseur est reliée à l'entrée d'un inverseur 20 dont la sortie est reliée à une porte 21. La sortie de cette porte 21 est reliée à la borne RD/ du reste de la machine. La borne d'écriture c'est-å- dire la borne WR/ du microprocesseur 16 est reliée à l entrée d un inverseur 22, la sortie de celui-ci étant reliée à une entrée d une porte 23 dont la sortie est reliée à la borne WR/ du reste de la machine. L autre borne de chacune des portes 21 et 23 est reliée à la sortie EXT d'une logique de détection d accès externe 24. Cette logique 24 reçoit un signal M-IO/, un signal 1I0 LOCAL/ et un signal 1RAM/ qui seront décrit plus en détail par la suite.Une autre sortie de cette logique 24 est reliee à une borne d'un génerateur d état d attente 25 dont la sortie est reliée à une borne d'un multiplexeur de READY 26 dont une autre borne est reliée à la borne READY du reste de la machine. Une borne d'entrée de commande de ce multiplexeur 26 est reliée à la sortie EXT de la logique de détection 24 tandis que la sortie de ce multiplexeur 26 est relie à la borne READY du microprocesseur 16. Le bus de données est relié à un tampon bidirectionnel 27 dont une borne est reliée å une sortie DEN LOCAL/ de l'aiguilleur de DEN/19, L'autre entrée de cet aiguilleur 19 est reliée å la borne de sortie EXT de la logique 24. Ce tampon bidirectionnel 27 est relié d'une part à une mémoire vidéo factice 28 et å un dispositif de mémorisation d'adresse de mémoire vidéo 29 par l'intermédiare d'une ligne de bus bidirectionnelle. La mémoire vidéo factice 28 est reliee à la borne RD/ du microproceseur 16, à la sortie d'un dispositif de se- lection de mémoire 30 dont les entrées sont reliées à la borne 1RAM å la borne AO/ et à la borne BHE/, ces deux derniers signaux faisant partie du bus d'adresses.Une borne de la mémoire 28 est reliée å la sortie RAMWR/ d'un décodeur 31 d'écriture de mémoire dont les trois bornes d'entrée sont reliées respectivement à la borne A15 du bus d'adresse, à la borne 1RAM et à la borne WR/ du microprocesseur. Des entrées d'adresses de la mémoire 28 sont reliées à la sortie d'un dispositif 32 de mémorisation d'adresse à chaque cycle de la machine, ces sorties étant également reliées au dispositif de mémorisation 29. Le dispositif de mémorisation 32 reçoit à l'une de ces entrées le signal ALE et il est connecté par son bus d'entrée au bus d'adresses du microprocesseur. Une borne d'entrée de ce dispositif 32 est reliée à la borne RAM/ du décodeur 33 d'adresses de mémoire vidéo dont les entrées sont reliées d'une part au bus d'adresses et d'autre part à la borne M-IOJ du microprocesseur. Ce décodeur 33 reçoit également un signal ACTIF qui sera décrit par la suite. Le dispositif de mémorisation 32 comporte deux sorties délivrant le signal 1RAM/ et le signal 110 LOCAL/. Une autre entrée de ce dispositif 32 est reliée à la sortie d'un décodeur d'adresses d'entrée sortie 35. dont les entrées sont reliées au bus d'adresses du microprocesseur et au signal M-IO/. La sortie de ce décodeur 34 est également reliée à une entrée d'un décodeur d'écriture 35 et à une entrée d'un décodeur de lecture 36. Le décodeur 35 reçoit également sur l'une de ses entrées, le signal WR/ et sur une autre de ses entrées un signal M-IO#. Une sortie de ce décodeur 35 est reliée à l'entrée de la bascule 18 de demande d'interruption NMI, tandis qu'une autre sortie du décodeur 35 est reliée à une entrée d'une bascule de mode 37. Le décodeur 36 reçoit sur l'une de ses entrée, le signal RD/ et sur une autre entrée le signal M-IO/. Une des sorties de ce décodeur 36 est relié à une borne d'entrée de la bascule 18 tandis qu'une autre de ses sorties est reliée à une autre entrée de la bascule de mode 37. Une borne de sortie de cette bascule de mode 37 délivrant un signal ACTIF est reliée à une entrée de la bascule 18 dont la borne de sortie délivre un signal de demande d'interruption NMI qui est connectée à une borne d'entrée du dispositif de mémorisation 29. L'autre borne de sortie de la bascule de mode 37 délivre un signal INACTIF. La sortie de la bascule 18 est reliée à l'autre borne d'entrée de la porte OU 17. Le décodeur d'adresse mémoire vidéo 33 est constitué par un décodeur 1 parmi 8 dont les bornes d'entrées sont reliées comme on l'a déjà vu au bus d'adresses reliant le microprocesseur 16 au reste du système 15. Ce décodeur 33 peut par exemple entre constitué par un composant du TYPE 74LS138. Le dispositif de mémorisation d'adresse à chaque cycle 32 est, quant à lui, constitué par deux composants comportant huit bascules D transparentes à sorties à trois états par exemple du type 7X ALS 373. Le tampon bidirectionnel 27 est constitué par deux amplificateurs bidirectionnels 8 bits à trois états du type par exemple 74 ALS 245. La mémoire vidéo factice 28 est constituée par deux composants de 2048 x 8 bits du type par exemple 6116. Le dispositif de sélection de mémoire 30 est constitué par deux portes NON-ET dont les sorties sont reliées aux#bornes CS/ des deux composants constituant la mémoire vidéo 28. Le décodeur d'écriture de mémoire 31 est quant à lui constitué par un décodeur 1 parmi 4 du type par exemple 74LS139 dont la sortie délivre un signal RAMWRI connectée aux bornes WEI des deux composants constituant la mémoire factice 28. L'aiguilleur de DEN/19 est constitué par un décodeur 1 parmi 4 du type par exemple 74LS139. Le dispositif de mémorisation d'adresse mémoire vidéo 29 est constitué par deux composants comportant 8 bascules D à sorties à trois états du type 74ALS374. La bascule de mode 37 est constituée par une bascule D du type par exemple 7XLS74. La bascule de demande d'interruption NMI 18 est constituée par une bascule D du type 7XLS74. Le décodeur d'adresse d'entrée-sortie 34 est quant à lui constitué par deux comparateurs 8 bits pouvant être connectés en cascade, ces comparateurs étant par exemple du type 74HC688. Le décodeur d'écriture 35 est quant à lui constitué par un décodeur 1 parmi 4 du type par exemple 7XLS139, Le décodeur de lecture 36 est constitué par un décodeur 1 parmi 4 du type 7iLS139, La logique de détection d'accès externe 24 est, quant à elle, composée d'inverseurs et de portes NON-ET. Le multiplexeur de READY 26 est constitué par trois portes NON-ET, Le générateur d'état d'attente 25 est quant à lui constitué par une bascule 3K du type 7iLS73. Le fonctionnement d'un tel dispositif est le suivant. A la mise en service du dispositif, le signal RESET du microprocesseur est inversé pour fournir un signal RESETI qui remet la bascule de mode 37 à zé ro soit l'état INACTIF du dispositif selon l'invention. Le décodeur 33 analyse en permanence les lignes d adresses A16-A19 du microprocesseur et valide le signal RAM/ pour toutes adresses comprises entre BOOOOH et B7FFFH si la bascule de mode 37 est en mode ACTIF, ce qui signifie que le microprocesseur de la machine tente d'avoir accès à la mémoire vidéo. Le décodeur 34 constitué par deux comparatours 8 bits analyse les lignes d'adresses A2 à A15 du microprocesseur et valide le signal IO LOCAL/ pour toutes les adresses comprises entre 0078H ET 007BH dans l'espace d'entrée sortie (M-IO/ est au niveau bas). A chaque cycle du microprocesser 16 le signal ALE mémorise dans les bascules du dispositif de mémorisation 32 les signaux d'adresses AD à Ail et A15, le signal complémentaire BHEI ainsi que les deux signaux RAM/ et IO LOCAL/. Le décodeur d'écriture mémoire 31 détecte les écritures grâce au signal Wu/ du microprocesseur. Il décode les signaux AIS et 7RAM pour activer le signal RAMWR/, c'est à dire que l'on veut effectuer une écriture en mémoire sur sa sortie "2" pour les adresses BOOOOH à B7FFFH. Le décodeur d écriture 35 détecte les écritures grâce au signal WR/ du microprocesseur, Il décode les signaux IO LOCALI et M/-IO, (signal M-IO/ in vers). , pour fournir sur une sortie "2" un signal d'écriture local, c'est-à-dire dans les adresses 0078H à OOTBH dans l'espace d'entrée sortie et sur une sortie "3", un signal d'écriture externe pour toutes les autres adresses d'entrée-sortie. Le signal sur cette sortie "2" remet à zéro la bascule de demande NMI 18 et fournit un #signal d'horloge pour la bascule de mode 37. La bascule de mode 37 place alors le mode du dispositif selon l'état du signal de l'adresse A1 mémorisé par le dispositif 32. Si le signal en AI est au niveau bas, c'est à dire pour les adresses 0078H et 0079H, le dispositif passe en mode "inactif". Si le signal en Al est au niveau haut, c'est à dire pour les adresses 007AH et 007BH, le dispositif passe en mode "actif". Le décodeur de lecture 36 détecte les tentative de lecture grâce au signal RD/ du processeur. Il décode les signaux IO LOCAL/ et MI-lO pour fournir sur sa sortie "2", un signal de lecture local pour les adresses entre 0078H et 0078H et sur sa sortie 3 un signal de lecture externe pour toutes les autres adresses d'entrée-sortie. Grâce à une porte NON ET (non représentée) reliée par sa sortie à la bascule de demande NMI 18 et par ses deux entrées respectivement au décodeur d'écriture 35 et au décodeur de lecture 36,l'un ou l au- tre des signaux aux bornes de sortie "3" de l'un de ces décodeurs 35 ou 36, sert de signal d'horloge pour la bascule 18 qui passe alors a "1" demandant ainsi une interruption NMI au microprocesseur si le dispositif est dans le mode "actif", c'est à dire que cette bascule reçoit un signal "actif" sur son entrée D. Cette demande est déclenchée par toute entrée-sortie non locale au dispositif. Cette bascule 18 peut également être mise à l'état "1" par le signal RAM WR/ sur son entrée SET. Les portes NON ET de la logique de détection d'accès externe 24 de meme que l'inverseur de celle-ci, engendrent å partir des signaux H-lOI, ACTIF, 110 LOCAL/ et 1RAM/,le signal LOCAL qui est au niveau haut pour tous les accès mémoires locaux (si gnal 1RAM/ est au niveau bas), toutes les entréessorties locales, (signal 110 LOCAL/ du niveau bas) et pour toutes les entrées-sorties externes si le dispositif est en mode actif. Ce signal LOCAL active le générateur d'état d'attente 25 par ses entrées J et K. Ce générateur 25 est remis à zéro par le signal ALE/ et produit le signal READY LOCAL au bout d'un temps d'horloge grâce au signal CLK qui lui sert d'horloge. Une porte NON ET de la logique de détection d'accès externe 24 engendre le signal EXT actif si le signal LOCAl est au niveau bas ou si le signal TINTAI du microprocesseur est au niveau bas. Le signal EXT est donc actif pour tous les accès non internes et pour les cycles de réponse aux interruptions du microprocesseur. L'aiguilleur 19 est activé par le signal DEN/ qu'il envoie soit sur sa sortie "0" (DEN LOCAL/ si EXT est au niveau bas) ou sur sa sortie "1" (DEN EXTERNE/ si EXT est au niveau haut). Les signaux RD/ et WRI du microprocesseur sont transmis au reste de la machine 15 par les inverseurs 20 et 22 et les portes NON ET 21 et 23 si le signal EXT est au niveau haut (accès EXTERNE). Si le signal EXT est au niveau bas ( accès INTERNE),les signaux RD/ et WRI vers le reste de la machine sont maintenus à l'état inactif haut par les portes 21 et 23, En même temps, le signal DEN/ est également maintenu inactif à l'état haut par l'aiguilleur 19. Le multiplexeur 26 aiguille vers l'entrée READY du microprocesseur, le signal READY du reste de la machine si le signal EXT est au niveau haut, c'est à dire en accès externe ou le signal READY LOCAL si le signal EXT est au niveau bas, c'est à dire en accès local. Le tampon bidirectionnel 27 relie aux lignes de données ADO à AD7 du microprocesseur, les entrées sorties DO à D7 de l'un des composants de la mémoire 28 et les huit sorties de l'une des bascules constituant le dispositif de mémorisation 29. Ce tampon bidirectionnel 27 relie également aux lignes de données AD8 à AD15 du microprocesseur, les entrées-sorties DO à D7 de l'autre composant de la mémoire 28 et les huit sorties de l'autre bascule constituant le dispositif de mémorisation 29. Ce tampon est déterminé en direction par le signal DT-R/ du microprocesseur appliqué sur son entrée DIR. Il est activé par le signal DEN LOCAL/ sur son entrée EN/, Ce tampon est donc actif pour les accès locaux. Les deux composants constituant la mémoire 28 sont adressés par les signaux AI à A11 sur leurs entrées AD à A10. Il-s sont sélectionnés respectivement par les signaux 1RAM et SHEl et 1RAM et AO/ grâce aux portes NON ET constituant le dispositif de sélection de mémoire 30. C'est ainsi que l'un des composants constituant cette mémoire 28 est sélectionné pour les accès en partie haute du bus de données, tandis que l'autre composant est sélectionné pour les accès en partie basse de celui-ci, grâce à leurs entrées CS/. Ces composants sont activés en lecture par le signal RD/ du microprocesseur sur leurs entrées OE/. Ces composants sont activés en écriture par le signal RAMWR/ sur leurs entrées WE/. Le signal DEMANDE NMI/ sert également d'horloge pour les bascules constituant le dispositif de mémorisation 29 par leurs entrées CK. Ces bascules mémorisent les signaux AO à All. BHE/, 1RAM et RD. Ces informations permettent de déterminer s'il s'agit d'un accés mémoire c'est à dire que le signal 1RAM est au niveau haut ou d'une opération d'entrée-sortie lorsque le signal 1RAM est au niveau bas, d'une lecture lorsque le signal RD est au niveau haut ou d'une écriture si le signal RD est au niveau bas, ainsi que son adresse. Les bascules du dispositif de mémorisation 29 sont lues à travers le tampon bidirectionnel 27 quand le signal lecture LOCAL/ est activé par le décodeur de lecture 36, c' est-à-dire pour les adresses comprises entre 0078H à 007BH. Ce décodeur active les sorties des bascules du dispositif de mémorisation 29 par leurs entrées OC/.Enfin, il est à noter que tous les signaux du microprocesseur autre que RD/, WRt, DEN/, NMI et READY sont reliés directement à leur connexion d'origine sur la machine, Le dispositif selon l'invention reçoit son alimentation grâce aux broches de masse et de tension d'alimentation VCC du microprocesseur qui sont ellesmemes reliées aux broches correspondantes du reste de la machine Le décodeur 33 décode en permanence les éventuels accès en lecture ou en écriture aux adresses comprises entre BOOOOH et BFFFFH, c'est à dire lorsque le dispositif veut avoir accès à la mémoire vidéo alphanumérique etlou graphique qui est disposée à ces adresses sur un ordinateur IBM-PC. Pour cela, ce décodeur utilise les adresses A16 à A19 ainsi que le signal MAIS/. Les deux comparateurs constituant le décodeur d'adresse 34 comparent en permanence les adresses AD à A15 à une valeur prédéterminée qui est ici fixée à 0078H à 007FH. Ces valeurs représentent les adresses choisies pour les accès aux mémoires du dispositif et ce choix est arbitraire. Cette comparaison est également conditionnée par le signal M-IO/, qui doit être dans l'état IOt. Le résultat de ces deux comparaisons est lui-meme mémorisé dans le dispositif de mémorisation 32 à chaque cycle de la machine, déterminé par le signal ALE. Les deux amplificateurs de bus bidirectionnels constituant le tampon bidirectionnel 27 relient le bus de données local du dispositif selon l'invention, aux bornes ADO à AD15 du microprocesseur. Ces amplificateurs sont commandés en direction par le signal DT-R/ et sont activés par le signal DEN/ LOCAL engendré par le dispositif. Sur le bus de données local. sont connectées les deux bascules constituant le dispositif de mémorisation d'adresse vidéo 29 dont le contenu pourra être lu à l'adresse 0078H dans l'espace d'entrée-sortie, ainsi que deux composants constituant la mémoire vidéo factice du dispositif qui simule la mémoire vidéo alphanumérique de l'ordinateur IBM-PC La bascule de mode 37 mémorise le mode de fonctionnement du dispositif et à chaque activation du signal RESET elle est mise à l'état "inactif". Comme on l'a vu ce dispositif peut comporter un mode de fonctionnement "inactif". La logique de décodage du dispositif décide alors à chaque cycle si il s'agit d'un accès externe, c'est-à-dire que des informations seront transmises vers le reste de la machine ou interne c'est-à-dire que ces informations sont destinées au dispositif selon l'invention. Les accès internes sont ceux qui ont lieu aux adresses 0078H à 007bu dans l'espace d'entrée-sortie comme on vient de le décrire. Les signaux WR/,RDt,DEN/ sont alors maintenus à l'état inactif, c'est-à-dire au niveau haut vers le reste de la machine grâce à des portes NON-ET. De plus un signal READY actif est fourni au microprocesseur pour que le cycle se termine normalement. Les tampons de données sont activés par le signal DENILOCAL. La bascule de mode 37 est positionnée selon l'état du bit d'adresse A2. Ainsi des écritures en 0078H ou 0079H, quelque soient les données, positionnent le dispositif en mode INACTIF et des écritures en 007AH ou 0078H le positionnent en mode ACTIF. Il peut également être prévu que le signal Ai positionne une bascule d'autorisation de demande d'interruption d'origine selon qu'on laisse ou non remonter un signal NMI engendré par la machine, jusqu'au microprocesseur. En lecture on peut obtenir à l'adresse 0078H ou 007AH le contenu du dispositif de mémorisation 29. Tous les autres accès sont dits "externes". La seule action du dispositif est de retarder légère- ment les signaux RD/, WRI et DEN/ vers le reste de la machine puisqu'ils traversent des portes logiques. Ce retard de quelques n.sec. est sans influence sur le fonctionnement de la machine. Dans le sens entrée vers le microprocesseur, les signaux NMI et READY sont également retardé de quelques n.sec. Lors du fonctionnement du dispositif en mode "actif", il se passe différentes actions communes à tous les accès internes - on bloque à l'état inactif c'est à dire au niveau haut les signaux WR/, RD/, DEN/ vers le reste de la machine; - on active les tampons de données locaux par le signal DENILOCAL - on ignore le signal READY en provenance de la machine qui est remplacé par un READY engendré localement par le dispositif selon l'invention et transmis au microprocesseur avec un retard d'un temps d'horloge grâce à la bascule 25. Les accès aux adresses d'entrée sortie 0078H à 007bu continuent à fonctionner de la même façon qu'en mode INACTIF. Cependant, sont également considérés comme accès internes: - les lectures entre BOOOOH et BFFFFH, c'est ainsi que entre BOOOOH et B7FFFH, ces lectures sont dirigées vers les deux composants de la mémoires 28 qui délivrent leur contenu à travers le tampon bidirectionnel 27 sur le bus de données du microprocesseur. Le signal DENILOCAL est activé par le dispositif selon l'invention pour tous les accès internes. Cette mémoire 28 n'est adressée que par les adresses Ai à Ail, les signaux AO et BHEI servant à selectionner l'un ou l'autre des composants constituant cette mémoire ou les deux. L'espace de décodage plus grand que les mémoires réelles introduit une redondance qui est voulue pour simuler au plus près le fonctionnement d'un ordinateur du type IBM.C'est ainsi que l'on voit la même mémoire à des adresses successives cycliques; - les lectures entre B8000H et BFFFFH engendrent des données quelconques et les mémoires ne sont pas lues afin de simuler l'absence d'une mémoire vidéo graphique sur un micro-ordinateur du type IBM-PC; - les écritures entre BOOOOH et 87FFFH sont dirigées vers les composants de la mémoires 28 ou elles sont effectivement mémorisées par le signal RAMWRI engendré par le décodeur 31. En même temps, les adres ses AD à Ail, le signal BHE/et un signal 1RAM indiquant qu il s'agit d'un accès mémoire vidéo sont mémorisés dans le dispositif de mémorisation d'adresse mémoire vidéo 29. La bascule 18 de demande NMI est alors activée, et sera remise à zéro par la prochaine lecture entre 0078H et 0078H. Cette bascule active alors le signal NMI du microprocesseur.Le temps d'horloge de retard pour fournir au microprocesseur, le signal READY sert à s'assurer que le signal NMI va bien être pris en compte par le microprocesseur avant l'éxécution de l'instruction suivante, ce qui est obligatoire pour assurer le fonctionnement du dispositif: - tous les accès dans l'espace d' entrée-sor- tie, autre qu'entre les adresses 0078H et 007BH sont considérés comme INTERNES. Le signal 1RAM est mémorisé à l'état bas dans le dispositif de mémorisation 29 ainsi que le signal RD qui indique que s'il s'agit d une lecture ou d'une écriture. Le signal NMI de demande d'interruption est alors engendré comme précédemment. - les autres accès sont considérés comme externes et fonctionnent comme lorsque le dispositif se trouve en mode "inactif". D'autres particularités de fonctionnement peuvent être également soulignées. Ainsi, le signal HLDA inhibe le décodage des adresses c'est-à-dire que le dispositif de mémorisation 32 passe à l'état de haute impédance ce qui entraine que les signaux 110 local/ et 1RAM/ passent à l'état inactif grâce à des résistances de tirage con nectées à la tension d'alimentation VCC. Ceci entraine que le dispositif ne perturbe pas les accès directs en mémoire de la machine. On sait que lorsqu'un microprocesseur est soumis â une demande d'interruption du type NMI et que 1 on a entré une certaine adresse dans la mémoire du vecteur d'interruption. l'ordinateur exécute le programme qui est chargé à cette adresse. Un exemple d un tel logiciel d'accompagnement permettant de faire la conversion des actions "illégales" engendrées par le logiciel d'application chargé dans la machine, et en actions "légales" compatibles avec le matériel de la machine est donné ci-après. Il est à noter que cette demande d'interruption est engendrée comme on l'a vu par le dispositif lorsque ces actions "illégales" sont déterminées. Dans le cas d'une tentative d'écriture par le logiciel d'application, des informations sont transmises sur les bus d'adresses et de données, par le microprocesseur. Ces informations sont détectées par le décodeur d adresse mémoire vidéo 33 comme on l'a déjà vu. Ce décodeur 33 engendre le signal RAM/ qui est mémorisé dans le dispositif de mémorisation 32 par le signal ALE. Ce signal 1RAM/ est également appliqué à la logique de décodage 24 qui en réponse à ce signal, bloque par l'intermédiaire des portes 21 et 23, les signaux WRI et ROI vers le reste de la machine et par l'intermédiaire de l'aiguilleur de DEN/19, le signal DEN/ vers le reste de la machine. Ceci se traduit en pratique par la déconnexion logique du reste de la machine pendant cette tentative d'écriture, ce qui a pour effet d'empecher l'opération d'écriture en cours. Le signal 1RAM active également la mémoire 28 par l'intermédiaire du décodeur d'écriture mémoire 31 et du dispositif de sélection de mémoire 30. Le décodeur 31 commande la mémoire 28 pour qu'elle mémorise les informations présentes sur le bus de données à l'adresse mémorisée dans le dispositif de mémorisation 32, par l'intermédiaire du signal WRI, cette adresse étant alors mémorisée dans le dispositif 29. Le décodeur 31 vient également déclencher la bascule 18 de demande d'interruption NMI qui engendre alors une demande d'interruption du microprocesseur. Comme on l'a vu le microprocesseur va alors se connecter sur les moyens de conversion des informations mémorisées en informations compatibles avec la logique d'écriture de l'ordinateur. La logique de décodage 24, déclenche également le générateur d'état d'attente 25 sous l'effet de 1RAM/, pour que ce générateur 25 engendre un signal READY LOCAL transmis à travers le multiplexeur 26 au microprocesseur pour qu'il termine l'instruction en cours. Les moyens de conversion qui sont par exemple constitués par le logiciel d'accompagnement donné en annexe, vont alors venir relire ces informations mémorisées dans la mémoire 28 en ce qui concerne les données que le microproceseur voulait écrire et dans le dispositif 29 en ce qui concerne l'adresse à laquelle devait se passer cette écriture. Ce logiciel convertit ces informations et les transmet à la logique d'écriture de la machine pour qu'elle effectue l'opération interrompue. La mémoire 28 constitue donc des moyens de mémorisation des données correspondant à 1 opération d'écriture que l'on a tenté d'effectuer, ces moyens étant distincts de la logique d'écriture de la machine. Dans le cas d'une lecture, les informations sont détectées de manière similaire à ce qui vient d'être décrit. La déconnexion du microprocesseur du reste de la machine s'effectue également de la même façon. Le dispositif de sélection de mémoire 30 activé par le signal 1RAM commande alors la mémoire 28 qui va être lue par le signal RD/ et qui transmet sur le bus de données, les données correspondantes à l'adresse délivrée sur le bus d adresse par le dispositif 32 activé par le signal ALE. Le signal READY est engendré comme précédemment. Dans le cas décrit, aucune demande d'interruption NMI n'est engendré en raison de la structure du dispositif, cependant d'autres structures de celuici peuvent en imposer une. Les données contenues dans la mémoire 28 sont transmises sur le bus de données par le tampon bidirectionnel 27 commandé par l'aiguilleur 19 de DEN/ qui est lui-même activé par la logique de décodage 24 recevant le signal 1RAM. Le microprocesseur peut alors relire le contenu de la mémoire 28 qui correspond à ce qui aurait été contenu dans la mémoire vidéo d'un ordinateur pour lequel a été écrit le logiciel "transporté". Dans le cas d'une opération sur la logique d'entrée-sortie de la machine, le décodeur d'écriture 35 et le décodeur de lecture 36 détectent les entrées et les sorties en analysant les signaux M-IO/, RD/ et WR/, du microprocesseur. S'il s'agit d'une tentative de sortie, la logique de décodage 24 bloque le reste de la machine comme il a été décrit précédemment sous l'action du signal M-lOI. Ceci a pour effet, en pratique de de- connecter le microprocesseur du reste de la machine. Le décodeur d'écriture 35 active la bascule de demande d'interruption NMI qui engendre le signal d interruption du microprocesseur et qui active également le dispositif de mémorisation 29 pour qu'il mémorise l'état du signal 1RAM. Lorsqu il s'agit d'une sortie, ce signal 1RAM est à l'état inactif. Le signal READY est également engendré comme décrit précédemment. En réponse à la demande d'interruption, le microprocesseur passe le contrôle au logi#ciel d'accompagnement qui convertit les informations issues du microprocesseur en informations compatibles avec la logique de sortie de la machine. Dans le cas d'une entrée, la logique de décodage 24 bloque le reste de la machine comme décrit précédemment. Le décodeur de lecture 36 active la bascule de demande d'interruption NMI qui engendre le signal d interruption du microprocesseur. Celui-ci passe alors le contrôle au logiciel d accompagnement qui effectue la conversion des informations pour les rendre compatibles avc le logiciel chargé dans la machine. ; LE LOGICIEL D'ACCOMPAGNEMENT CI-DESSOUS EST ECRIT EN ; CODE MACHINE INTEL 8086. POUR ETRE ASSEMBLE PAR UN : MACRO-ASSEMBLEUR MICROSOFT "MASM" CECI EST UN EXEMPLE DE LOGICIEL D'ACCOMPAGNEMENT POUVANT ETRE UTILISE AVEC LE DISPOSITIF SELON L'IN VENT ION QUI A ETE DECRIT ; CET EXEMPLE EST VOLONTAIREMENT SIMPLIFIE POUR EN DE ; GAGER LES PRINCIPES DE BASE. ; L'ORDINATEUR DANS LEQUEL ON A "TRANSPORTE" UN LOGI ; CIEL D'APPLICATION COMPREND UN ECRAN DE VISUALISA ; TION ALPMANUMERIQUE DONT LA MEMOIRE VIDEO EST SI TUEE EN 8000:OH CHAQUE CARACTERE VISUALISE EST REPRESENTE PAR DEUX MOTS DE 16 BITS ADJACENTS LE MOT D'ADRESSE PAIRE CONTIENT LE CODE ASCII DANS LES 8 BITS BAS ; LE MOT D'ADRESSE HAUTE CONTIENT 16 BITS D'ATTRIBUTS VISUELS DIVERS. ; CE PROGRAMME D'ACCOMPAGNEMENT EST APPELE PAR CHAQUE OCCURRENCE DE L'INTERRUPTION NMI. SON POINT D'ENTREE EST NOTE "NMI" CODE SEGMENT ASSUME CS: CODE CES DEUX TABLES PERMETTENT DE CONVERTIR LES ATTRI BUTS VISUELS IMB (8 BITS) EN ATTRIBUTS VISUELS DE L'ORDINATEUR HOTE (16 BITS). ELLES SONT INITIALISEES PREALABLEMENT TABLE BASSE DB 256 DUP (?) TABLE HAUTE DB 256 DUP (?) ADRESSE DU REGISTRE DE MEMORISATION DES ADRESSES: REG AD EQU 0078H ADRESSE DE BASE ES = REGISTRE AD ADRESSE DE MISE EN MODE ACTIF MODE ACTIF EQU 007bu OUT A CETTE ADRESSE -- > MISE EN MODE ACTIF ADRESSE DE MISE EN MODE INACTIF MODE INACTIF EQU 0079H OUT A CETTE ADRESSE -- > MISE EN MODE INACTIF ADRESSE DE LA MEMOIRE VIDEO FACTICE:: RAM~IBM~SEG EQU OBOOOH Segment mémoire vidéo IBM ADRESSE DE LA VRAIE MEMOIRE VIDEO RAM~HOTE~SEG EQU OBOOOH Segment mémoire vidéo ordinateur hote LIMITE BASSE EQU OCOOOH LIMITE BASSE DU BIOS, par son segment Position des registres dans la PILE lors des sauvegardes suivantes R~BP EQU O R~ES EQU R~BP+2 R~DX EQU R~ES+2 R~BX EQU R~DX+2 R~AX EQU R~BX+2 R~IP EQU R~AX+2 R~CS EQU R~IP+2 R~FLA6 EQU R~CS+2 POINT D'ENTREE DU PROGRAMME NMI: ASSUME CS: CODE,DS:NOTHING,ES:NOTHING,SS::NOTHING SAUVEGARDE DES REGISTRES OUI VONT ETRE DETRUITS PUSK AX PUSH BX PUSH DX PUSH ES PREPARATION DE LA RELECTURE DE LA MEMOIRE VIDEO FACTICE MOV BX,RAK~IBM~SEG MOV ES,8X ES = Segment RAM Vidéo IBM REMISE A ZERO DE LA DEMANDE NMI LOCALE OUT MODE~ACTIF, AL Acquittement NMI local LECTURE DANS AX DE L'ADRESSE MEMORISEE IN AX,REG~AD Entrée du MOT d'état SI LE BIT HAUT EST A UN, IL S'AGIT D'UNE ECRITURE MEMOIRE TEST AH,100000000B ;;Bit 7 = RAM ECRITURE JE C~EST~UNE~ES Dans le cas contraire OUI, IL S'AGIT BIEN D'UNE ECRITURE MEMOIRE TRAITEMENT DES ACCES A LA MEMOIRE D'ECRAN MOV BX,AX ISOLE LES BITS UTILES DE L'ADRESSE AND BX,OFFEH Garde dans BX l'adresse de AD à Ali avec AO=O RELECTURE DE LA MEMOIRE VIDEO FACTICE MOV DX,ES: [BX] DATA dans DX: DL=CAR DH=ATT Conversion adresse IBM en adresse de 1' ordina- teur hôte MOV AX,RAM~HOTE~SEG MOV ES,AX ; ES= Segment RAM Vidéo ORDINATEUR hôte SHL BX,1 ; un octet IBM -- > un mot pour L'hôte ; ES/BX = ADRESSE mémoire hôte ; Conversion des attributs visuels Les tables de conversion ont été initialisées par un programme d'installation préalable ;En prenant la valeur des attributs IBM comme adres ; se dans la table, le contenu de la table fournit la ; valeur des attributs correspondants dans l'ordina- ; teur hote. Il y a en fait deux tables pour fournir ; deux fois 8 bits. PUSH BX ; Sauve adresse locale l'attribut contenu dans DH va fournir la partie ; haute des attributs convertis. MOV AL,DH MOV BX,OFFSET TABLE~HAUTE XLAT CS:TA8LE~HAUTE MOV AH,AL ; Partie haute convertie l'attribut contenu dans DH va fournir la partie basse des attributs convertis. MOV AL,DH MOV BX,OFFSET TABLE~BASSE XLAT CS:TABLE~BASSE ;AX = attribut hôte POP BX ; Restaure adresse locale ECRITURE DU CARACTERE (code ascii tel que) DANS LA# MEMOIRE VIDEO MOV ES:BX2,DX DATA re-écrite. seuls 8 bits bas pris en compte C'est le code car qui est re-écrit. ECRITURE DES ATTRIBUTS CONVERTIS DANS LA MEMOIRE VIDEO MOV Es:[BX+2],AX ; Attributs ré-écrits RESTAURATION DES REGISTRES POP ES POP DX POP BX POP AX FIN DE LA ROUTINE D'INTERRUPTION, RETOUR AU PRO GRAMME INTERROMPU I RET TRAITEMENT DES ENTREES/SORTIES ATTENTION : Cette routine suppose qu'il n'existe pas d'ES MOT d'adresse IMPAIRE. TABLE D'INSTRUCTIONS JAMAIS EXECUTEES, UTILISES PAR LE PROGRAMME POUR CONNAîTRE LEUR CODE EN LAN GUAGE MACHINE Les Codes IN~AL LABEL BYTE IN AL,D IN~AL~DX LABEL BYTE IN AL,DX IN~AX LABEL BYTE IN AX,O IN~AX~DX LABEL BYTE IN AX,DX OUT~AL LABEL BYTE OUT O,AL OUT~DX~AL LABEL BYTE OUT DX,AL OUT~AX LABEL BYTE OUT O,AX OUT~DX~AX LABEL BYTE OUT DX,AX ; DEBRANCHEMENT DANS LE CAS D'UNE ENTREE/SORTIE: C~EST~UNE~ES: MET LE DISPOSITIF EN MODE INACTIF, POUR TRAVAIL LER A L'AISE OUT MODE INACTIF, AL laisse passer les ES légales ; RECUPERATION DE L'ADRESSE MEMOIRE DU PROGRAMME ;INTERROMPU PUSH BP MOV BP,SP MOV BX,[BP+R~CS] MOV ES,BX MOV BX,[BP+R~IP] ; CS : IP DE L'APPLICATION DANS ES:BX ; DISTINCTION ENTRE ENTREE OU SORTIE PAR LE BIT 14 ; DU REGISTRE ; SI IL EST A UN, C'EST UNE ENTREE TEST AH,01000000@ ; 0=SORTIE JNE ES~ENTREE JMP ES~SORTIE IL EST A UN, C'EST UNE ENTREE ES~ENTREE ; Voyons si c'est une lecture d'un mot, avec BHE/bas TEST AX,ODOiOOOOOOODOOOiB JNE EX~ENTREE~OCTET JMP ES~ENTREE~MOT ; IL S'AGIT DE L'ENTREE D'UN OCTET ES~ENTREE~OCTET: MOV DX,ES:BXj ~ récupère le code de l'instruction CMP DH,CS:IN~AL~DX JNE ES~ENTREE~OCTET~FIXE ce n'est pas un IN AL,DX ;Ce doit être un input DX CMP DL,CS:IN~AL JE ES~ENTREE~OCTET~FIXE Non, c'était un code opération ambigu C'est bien in IN AL,DX MOV DX,[BP+R~DX] ;DX=adresse de l'entrée MOV AX,[BP+R~AY] ;Valeur de AX au moment de NMI ENTREE~OCTET~COMMUN: MOV BX,ES ;CODE SEGMENT du programme interrompu Reconnaissance du programme interrompu CMP BX,LIMITE~BASSE JB ES~ENTREE~OCTET~SIMULE ON EST AU DESSUS DE LA LIMITE, C'EST LE BIOS, L'ACCES EST LEGAL ENTREE OCTET REELLE ES~ENTREE~OCTET~REEL: IN AL,DX ;ENTREE REELLEMENT EFFECTUEE MOV CBP+R#AXj,AX RESULTAT RENDU AU PROGRAMME INTERROMPU JPM ES~RETURN ET FIN ENTREE A ADRESSE SPECIFIEE DANS L'INSTRUCTION ES-ENTREE~OCTET~FIXE: MOV DL,DH MOV DH,O ;SIMULE IN AL,DX et le traitement devient identique au précédent MOV AX,[BP+R~AX] ; AX AU MOMENT DE NMI JPM ENTREE~OCTET~COMMUN ENTREE OCTET SIMULEE 2 exemples de simulation possible I: L'ENTREE D'ADRESSE 3F4 SUR IBM EXISTE ICI EN OAO ; 2: L'ENTREE D'ADRESSE 060 SUR IBM EST SIMULABLE PAR ; LOGICIEL DX contient l'adresse de l'entrée ES~ENTREE~OCTET~SIMULE: MOV AX,[BP+R~AX] ;AX AU MOMENT DE NMI CMP DX,03F4H ;EST CE UNE ENTREE EN 3F4 ? JE EXEMPLE 1 OUI CMP DX,060H EST CE UNE ENTREE EN 060 ? JE EXEMPLE 2 OUI ;TOUTES LES AUTRES ENTREES SONT IGNOREES, ON REND ; ZERO DANS AL MOV AL,0 ON REND 0 MOV [BP+R~AX],AX ;ON REND AX DANS LA PILE JMP ES~RETURN ;EXEMPLE 1: ;L'ENTREE EXISTE, MAIS A UNE AUTRE ADRESSE ;PAR EXEMPLE OAOH AU LIEU DE 3F4H EXEMPLE 1: IN AL,OAOH ;L'ENTREE EST REELLEMENT EFFECTUEE A LA VRAIE ADRESSE MOV [BP+R~AX], AX ;ET RENDUE DANS LA PILE JMP ES~RETURN EXEMPLE 2 L'ENTREE N'EXISTE PAS, MAIS SON RESULTAT EST SIMULABLE EXEMPLE 2: ;'======= MOV AL,01001110B ;LA VALEUR A LIRE EST SIMULEE MOV [BP+R~AX],AX ;ET RENDUE DANS LA PILE JPM ES~RETURN ; IL S'AGIT DE L'ENTREE D'UN MOT ES~ENTREE~MOT: LE PROBLEME EST LE MEME QUE POUR UN OCTET, ON NE REPRESENTE PAS LE CODE MACHINE, QUI EST TRES PROCHE DE CELUI DU CAS PRECEDENT. JMP ES~RETURN ; CAS DES ECRITURES (=SORTIES) ES~SORTIE: Voyons si c'est une écriture d'un mot, avec BHE/bas TEST AX,OOO1000000000001B JNE EX~SORTIE~OCTET JMP ES~SORTIE~MOT SORTIE D'UN OCTET ES~SORTIE~OCTET: MOV DX#ES:fBXi ;RECUPERE LE CODE DE L'INSTRUCTION CMP DH,CS:OUT~DX-AL JNE ES~SORTIE~OCTET~FIXE Ce doit être un output DX CMP DL,CB:OUT~AL JE ES-ECRITURE~OCTET~FIXE NON, C'ETAIT UN CODE AMBIGU C'est bien un OUT DX,AL MOV DX,[BP+R~DX] RETROUVE L'ADRESSE DE LA SORTIE MOV AX,[BP+R~AX] ET LA DONNEE DANS AL SORTIE~OCTET~COMMUN: ;est-il légal ? MOV BX,ES ADRESSE DU PROGRAMME INTERROMPU CMP BX,LIMITE-BASSE JP EX~ECRITURE~OCTET~SIMULE ON EST AU DESSUS DE LA LIMITE, C'EST LE BIOS, ; L'ACCES EST LEGAL SORTIE OCTET REELLE OUT DX,AL LA SORTIE EST REELLEMENT EFFECTUEE JMP ES-RETURN ET RETOUR AU PROGRAMME ; SIMULATION DES SORTIES ; 2 exemples possibles ;1: LA SORTIE D'ADRESSE 3F2 SUR IBM EXISTE ICI EN 0A2 ;2:LA SORTIE D'ADRESSE 061 SUR IBM EST SIMULABLE DX CONTIENT L'ADRESSE DE LA SORTIE ET AL LA DONNEE ES~SORTIE~OCTET~SIMULE: CMP DX,03F2H EST CE UNE SORTIE EN 3F2? JE EXEMPLE S1 OUI CMP DX,061H ;EST CE UNE SORTIE EN 061? JE EXEMPLE~S2 OUI ;TOUTES LES AUTRES SORTIES SONT IGNOREES, ELLES N'ONT AUCUNE ACTION IGNORE: JMP ES~RETURN ;EXEMPLE 1: ;LA SORTIE EXISTE, A UNE AUTRE ADRESSE EXEMPLE~S1: OUT 0A2H,AL LA SORTIE EST EFFECTUEE A CETTE AUTRE ADRESSE JMP ES~RETURN ;ET RETOUR AU PROGRAMME ~EXEMPLE 2: ;LA SORTIE N'EXISTE PAS, MAIS ELLE EST SIMULABLE EXEMPLE S2: ;========== TEST AL,00000001@ ;LE BIT 0 EST-IL HAUT ? JE IGNORE NON.ON IGNORE LA SORTIE ;LE BIT 0 EST HAUT, LE PROGRAMME VOULAIT ACTIONNER LE SIGNAL SONORE ;SIMULATION DE CETTE SORTIE EN ACTIVANT LE VRAI SIGNAL SONORE MOV AL,07H CODE ASCII "BELL" MOV AH,14 MODE TELETYPE INT 10H APPEL DU DRIVER VIDEO QUI VA ;ACTIONNER LA SONNETTE JMP ES~RETURN ;ET RETOUR AU PROGRAMME SORTIE A ADRESSE SPECIFIEE DANS L'INSTRUCTION ES~SORTIE~OCTET~FIXE: MOV DL,DH MOV DH,0 ;SIMULE UN OUT DX,AL MOV AX,[BP+R~AX] ;ET REPREND LE TRAITEMENT DU CAS ;PRECEDENT JMP SORTIE~OCTET~COMMUN ; IL S'AGIT DE LA SORTIE D'UN MOT ES~SORTIE~MOT: ; LE PROBLEME EST LE MEME QUE POUR UN OCTET, ON NE ; NE REPRESENTE PAS LE CODE MACHINE, QUI EST TRES PRO ; CHE DE CELUI DU CAS PRECEDENT. JMP ES~RETURN ; RETOUR AU PROGRAMME INTERROMPU ES~RETURN: OUT MODE~ACTIF,AL REMET LE DISPOSITIF EN MODE ~ACTIF ; Restauration des registres détruits POP BP POP ES POP DX POP BX POP AX IRET CODE ENDS END NMI REVENDICATIONS t. Procédé de gestion d'informations sur un dispositif de visualisation d'un premier ordinateur comportant un processeur et dans lequel a été #chargé un logiciel écrit pour un second ordinateur comportant un processeur, le processeur du premier ordinateur étant compatible avec le processeur du second ordinateur, mais le premier ordinateur comportant des logiques d'écriture et de lecture différentes de celles du second ordinateur, caractérisé en ce qu'on détecte des informations issues du processeur du premier ordinateur destinées à commander une opération de la logique d écriture de celui-ci, on déconnecte la partie du processeur du premier ordinateur concerné, par ces informations du reste du premier ordinateur de façon à empêcher cette opération, on mémorise ces informations, on convertit ces informations mémorisées en informations compatibles avec la logique d'écriture du premier ordinateur et on envoie les informations ainsi converties à ladite logique d'écriture du premier ordinateur de façon qu'elle effectue ladite opération. 2. Procédé selon la revendication 1 dans lequel lesdites informations comportent entre autres une adresse et des données, caractérisé en ce qu on mémorise les données à l'adresse correspondante dans une mémoire distincte de la logique d'écriture du premier ordinateur. 3. Procédé selon 1 une quelconque des revendications 1 ou 2, caractérisé en ce que lorsqu on a détecté des informations destinées à commander une opération de la logique d'écriture du premier ordinateur on engendre une demande d'interruption du processeur de celui-ci. 4. Procédé selon la revendication 2 ou 3, caractérisé en ce qu'on détecte des informations issues du processeur du premier ordinateur, destinées à commander une opération de la logique de lecture de celui-ci, on déconnecte la partie du processeur du premier ordinateur concernée par ces informations, du reste du premier ordinateur, et on connecte ladite mémoire distincte sur ladite partie concernée du processeur du premier ordinateur. 5. Dispositif de gestion d'informations sur un dispositif de visualisation d'un premier ordinateur comportant un processeur (16) et dans lequel a été chargé un logiciel écrit pour un second ordinateur comportant également un processeur, le processeur du premier ordinateur étant compatible avec le processeur du second ordinateur, mais le premier ordinateur comportant des logiques d'écriture et de lecture différentes de celles du second ordinateur, caractérisé en ce qu'il comporte des moyens de détection (33) des informations issues du processeur (16) du premier ordinateur, destinées à commander une opération de la logique d'écriture de celui-ci, des moyens (19,21,23) destinés à déconnecter la partie du processeur (16) du premier ordinateur concernée par ces informations, du reste (15) du premier ordinateur, de façon à empêcher cette opération, des moyens (28,29) de mémorisation de ces informations et des moyens de conversion de ces informations en informations compatibles avec la logique d écriture du premier ordinateur, ces moyens de conversion étant connectés à ladite logique d'écriture du premier ordinateur, de façon à transmettre les informations ainsi converties à la logique d'écriture du premier ordinateur pour qu'elle effectue ladite opération. 6. Dispositif selon la revendication S, caractérisé en ce que les moyens de mémorisation comportent une mémoire (28) distincte de la logique d'écriture du premier ordinateur. 7. Dispositif selon la revendication 6, caractérisé en ce qu'il comporte des moyens de détection (33) des informations issues du processeur du premier ordinateur, destinées à commander une opération de la logique de lecture de celui-ci, des moyens (19,21,23) destinés à déconnecter la partie du processeur (16) du premier ordinateur concernée par ces informations, du reste (15) du premier ordinateur, et des moyens (27) destinés à connecter ladite mémoire distincte (28) sur la partie concernée du processeur du premier ordinateur. 8 Dispositif selon l'une quelconque des revendications 5 à 7, caractérisé en ce qu il comporte des moyens (18) destinés à engendrer une demande d'interruption du processeur (16) en réponse à la détection d'informations issues du processeur et destinées à commander une opération de la logique d'écriture du premier ordinateur. 9. Dispositif selon 1 'une quelconque des revendications des revendications 5 à 8, caractérisé en ce que les moyens de détection des informations destinées à commander une opération de la logique d'écriture, sont constitués par un décodeur d'adresse mémoire (33) connecté au bus d'adresse et à une borne du processeur délivrant un signal de sélection d'espace mémoire ou d'entrée-sortie (MAIS/). 10. Dispositif selon la revendication 9, caractérisé en ce que les moyens destinés à déconnecter la partie du processeur (16) du reste (15) du premier ordinateur sont constitués par deux portes (21, 23) dont l'une des entrées est connectée à la sortie d'une logique de décodage reliée à la borne du processeur délivrant le signal de sélection d'espace mémoire ou d'entrée-sortie (M-IO/) et à la sortie des moyens de détection (33) des informations destinées à commander une opération de la logique d'écriture, la sortie de l'une des portes. dont l'autre entrée est connectée au signal de commande d'écriture du processeur (16), étant connectée à la borne de commande d'écriture (WR/) du reste (15) de l'ordinateur et la sortie de l'autre porte, dont l'autre entrée est connectée au signal de commande de lecture du processeur, étant reliée à la borne de commande de lecture (RD/) du reste (15) de l'ordinateur et par un aiguilleur (19) de signal de validation d'amplificateurs de chemin de données dont la sortie est reliée à la borne (DEN/) correspondante du reste (15) de l'ordinateur. 11. Dispositif selon la revendication 8, caractérisé en ce que les moyens destinés à engendrer la demande d'interruption sont constitués par une bascule (18) reliée à la sortie d'un décodeur d'écriture mémoire (31) dont les entrées sont connectées à la sortie des moyens (33) de détection des informations destinées à commander une opération de la logique d'écriture et à la borne du processeur (16) délivrant un signal de commande d'écriture (WR/). 12. Dispositif selon 1 une quelconque des revendications 5 à 11, caractérisé en ce que les moyens de détection des informations destinées à commander une opération de la logique de lecture sont constitués par un décodeur d'adresse mémoire (33 > connecté au bus d'adresse et à la borne du processeur délivrant un signal de sélection d'espace mémoire ou d'entrée-sortie (M-IO/) du premier ordinateur. 13. Dispositif selon l'une quelconque des revendications 5 à 12, caractérisé en ce que les moyens destinés à connecter ladite mémoire distincte (28) sur la partie concernée du processeur, sont constitués par un tampon bidirectionnel (27 > commandé par une logique de décodage (24) dont l'entrée est reliée à la sortie des moyens de détection (33) des informations destinées à commander une opération de la logique de lecture. 14. Dispositif selon l'une quelconque des revendications 5 à 13, caractérisé en ce que les moyens de détection d'informations destinées à commander une opération de la logique d'écriture et les moyens de détection d'informations destinées à commander une opération de la logique de lecture sont constitués par le même décodeur d'adresse mémoire vidéo (33). 15. Dispositif selon la revendication 14, caractérisé en ce que la sortie dudit décodeur d'adresse (33) est reliée à un dispositif (32) de mémorisation d'adresse à chaque cycle du processeur (16) dont la sortie est reliée à un dispositif de mémorisation d'adresse mémoire vidéo (29) et à ladite mémoire distincte (28). 16. Dispositif selon les revendications 11 et 14, caractérisé en ce qu'une borne de commande du dispositif de mémorisation d'adresse mémoire vidéo (29) est reliée à la sortie d'un décodeur d'écriture mémoire (31) dont l'entrée est reliée à la sortie des moyens de détection d'informations destinées à commander une opération de la logique d''écriture et à la borne de commande d'écriture (WR/) du processeur (16), à travers la bascule de demande d'interruption (18). 17. Dispositif selon lune quelconque des revendications 6 à 16, caractérisé en ce qu une borne de commande de ladite mémoire distincte (28) est reliée à la sortie du décodeur (31) d'écriture mémoire. 18. Dispositif selon la revendication 17, caractérisé en ce qu'une autre borne de commande de la mémoire distincte (28) est reliée à la borne de commande d'écriture (RD/) du processeur,