FR 2534043 A1 19840406 FR 8216837 A 19821001 La présente invention concerne un système pour améliorer les performances graphiques des ordinateurs et, plus particulièrement, des ordinateurs de bas de gamme. Dans la suite, on considérera des systèmes d'affichages dans lesquels un caractère est défini dans une matrice de np pixels, Avec un écran d'affichage du type télévision capable d'afficher a rangées de b caractères chacune, le nombre maximal de pixels utilisables est de abnp pixels. Pour pouvoir exploiter complètement cette ressource, il faut que la mémoire de caractères de l'ordinateur ait une capacité égale à ab. Certains ordinateurs, tels que les ordinateurs de bas de gamme ont une mémoire de caractères dont la capacité est limitée et bien inférieure à ce nombre. Une solution très partielle pour mieux utiliser l'écran consiste à changer la mémoire de caractères.En effet, si la capacité de la mémoire de caractères est de c caractères, c étant inférieur à ab, en écrivant dans la mémoire d-'écran de l'ordinateur un jeu différent de c caractères et en les redéfinissant de la manière désirée dans la nouvelle mémoire de caractères, on obtient la résolution maximale sur une zone de l'écran correspondant à c caractères. Toutefois, cette zone ne couvre pas encore la totalité de l'écran. Le problème que la présente invention permet de résoudre est celui de llutilisation de l'écran entier, les modifications à apporter dans l'ordinateur etant minimes. Suivant une caractéristique de l'invention, il est prévu d'utiliser une pluralité de mémoires de caractères, chacune de ces mémoires correspondant à une zone de l'écran comportant un nombre entier de lignes inférieur à c/b. Suivant une autre caractéristique, le système est composé de deux parties: une mémoire et un circuit de sélection, sous différentes conditions, des parties de cette mémoire. La mémoire comprend des mémoires de caractères proprement dites, toutes de même capacité, et un octet de commande du système pour ce qui est de la mémoire vive, et une partie de mémoire morte destinée à recevoir des programmes d'initialisation et de changement des différents modes de fonctionnement. La mémoire est placée dans une zone d'adresse de mémoire que n'utilise pas l'ordinateur, ceci entraînant, en pratique, un décodage supplémentaire de certaines lignes d'adresses non utilisées par l'ordinateur. Les mémoires de caractères se suivent sans intervalles pour former en réalité un seul bloc. La mémoire morte est placée dans n'importe quelle zone de mémoire que n'utilise pas l'ordinateur. L'octet de commande se superpose à la mémoire morte; la mémoire morte n'est évidemment accessible qu'en lecture. De plus l'octet de commande est répété de façon à couvrir la mémoire morte, un seul comparateur suffisant alors pour savoir quand sélectionner la mémoire morte ou l'octet de commande. De plus, les capacités des mémoires de caractères réservées par le système sont toujours des puissances de 2, pour n'avoir à décoder que les lignes d'adresses supérieures du microprocesseur. Le fonctionnement du système suivant l'invention est le suivant: en écriture: deux décodeurs sont placés sur les lignes supérieures d'adresse. Par exemple, pour une mémoire d'une capacité de 2K octets, les ll lignes d'adresses inférieures ne sont pas utilisées. Ut décodeur compare ces lignes avec l'adresse de la mémoire vive de caractère et l'autre avec l'adresse de la mémoire morte. Si l'on veut avoir accès à l'une de ces zones, le système active la sélection et l'écriture de la mémoire correspondante et inhibe l'écriture et la sélection de toute la mémoire de l'ordinateur. A noter que si la mémoire vive de caractère et la mémoire morte sont placées dans la même zone de mémoire, ce qui est le cas dans l'exemple décrit ci-dessous, un seul décodeur est nécessaire. Les lignes d'adresses inférieures arrivent normalement jusqu'aux boîtiers mémoires et sélectionnent ainsi l'octet désiré. en affichage: trois modes de fonctionnement existent suivant les valeurs des octets de commande. * Système inhibé: il n'a absolument aucun effet sur l'ordinateur. * Mode changement de caractère: un comparateur ou plusieurs, si la capacité de la mémoire de caractères initiale de l'ordinateur n'est pas une puissance de 2, détectent chaque fois que le microprocesseur a accès à la mémoire de caractère initiale, en utilisant les lignes supérieures d'adresse. Alors le système inhibe la sélection de la mémoire de caractère initial et active la sélection de la nième mémoire du système, n étant le nombre contenu dans les 4 premiers bits de l'octet de commande, en inhibant les autres mémoires du système. Comme on n'a pas touché aux lignes d'adresses inférieures, on a remplacé un octet par un autre; celui-ci pouvant prendre la valeur que désire l'utilisateur. On a donc bien la possibilité de redéfinir des caractères. * Mode haute résolution: ce mode nécessite un programme d'initialisation emmagasiné en mémoire morte. Ce programme met à "O" les 4 bits de poids faible de l'octet de commande et remplit la mémoire d'écran de l'ordinateur de la manière suivante: Dans les n premières lignes, n étant le nombre de lignes correspondant à une mémoire de caractère du système, il met des caractères tous différents. Il recommence pour lesn lignes suivantes de la meme manière. Et s'il reste à la fin moins de n lignes, il fait quand même de même. La façon dont les caractères sont rangés dans chaque zone de n lignes n'a pas d'importance, il faut qu'ils soient seulement tous différents et que chaque zone se termine par le même caractère, car c'est l'accès à ce caractère par le microprocesseur qui va déclencher le passage à la mémoire de caractères suivante.Au départ, il y a 0000 dans le compteur de mémoire. - Le circuit sélectionne la mémoire NO 1. On a donc un changement de caractères et haute résolution sur n lignes. Quand le microprocesseur a accès au dernier caractère de la zone de mémoire d'écran, un comparateur placé sur le bus d'adresse incrémente le compteur de mémoire d'une unité. La mémoire sélectionnée est alors la 2ème et le processus ci-dessus se répète. Quand on arrive à la fin de la dernière zone de mémoire, le compteur sélectionne une mémoire qui n'existe pas. Mais cela n'a pas d'importance car à ce moment le microprocesseur ne s'occupe plus de l'affichage. Quand il désire afficher de nouveau, il envoie un signal sur NMI qui est détecté par le système et qui provoque la remise à 0000 du compteur de mémoire. Le système est donc parfaitement synchronisé sur le processus d'affichage de l'ordinateur. Les caractéristiques de l'invention mentionnées ci-dessus, ainsi que d'autres apparaîtront plus clairement à la lecture de la description suivante d'un exemple de réalisation, ladite description étant faite en relation avec les dessins joints, parmi lesquels: la Fig. 1 est le bloc-diagramme du système suivant l'invention, la Fig. 2 est un schéma détaillé du branchement de la mémoire vive, et la Fig. 3 est un schéma détaillé du branchement des différents tampons (buffers) des bus de données et d'adresse. Dans la suite, on supposera que le système est utilisé avec un ordinateur ZX 81 commercialisé par la société Sinclair Research Limited. Le système de la Fig. 1 comporte un détecteur 1, pouvant être constitué d'une porte NON-ET à neuf entrées, -permettant d'avoir accès au dernier octet du dernier caractère de la mémoire de caractères, un compteur 2, commercialisé sous la référence 74193, un multiplexeur 3, commercialisé sous la référence 74157, un convertisseur BCD/décimal 4, commercialisé sous la référence 7442, deux bascules D, 10 et 12, contenues dans un même circuit commercialisé sous la référence 7474, un détecteur 15, réalisable à l'aide de portes NON ET et de portes OU, permettant d'avoir accès à la mémoire de caractère, trois amplificateurs inverseurs 11, 17 et 34, et portes ET 5,-6, 7, 8, 18, 19 et 37, trois portes OU 16, 35 et 36, une porte NON-OU 9, deux boutons poussoirs 13 et 14, ainsi que-douze boîtiers de mémoires vives MO à M11, commercialisées sous la référence 2114 L et un boîtier de mémoire morte MM commercialisée sous la référence 2716. Enfin, il comporte encore un buffer (tampon) d'adresse 20 commercialisé sous la référence 81LS97 et deúx buffers de données 21 et 22 commercialisés sous la référence 74LS247. Les mémoires vives MO à M11 constituent la mémoire de caractères du système tandis que la mémoire morte MM constitue la mémoire de programme Il faut noter que: * tous les circuits TTL peuvent être remplacés par des circuits LS, * tous les circuits doivent avoir les broches référencées VCC et GND reliées respectivement au + 5V et à la masse de l'ordinateur, * dans le ZX81, la mémoire morte MX se trouve aux adresses 0000 à 1FFF et elle est répétée aux adresses 2000 à 3FFF, en notation hexadécimale, * dans le ZX81, la mémoire de caractères MY se trouve dans les 512 derniers octets de la mémoire morte, * l'interface TV a accès à la mémoire de caractère pendant les cycles de rafraîchissement de la mémoire vive. Le détecteur 1 fournit une tension de O V quand l'interface TV accède au dernier octet de la mémoire de caractère. Avec le ZX81, ceci se produit lorsque les neuf bits de poids faible AO' à A8' du bus BUSA d'adresse du ZX81 pris sur la mémoire morte (MM ou MX) sont à 5 V. La sortie du détecteur 1 est reliée à une entrée de la porte NON-OU -9, dont l'autre entrée est reliée à la sortie du détecteur 15. Le décodeur 15 a ses entrées reliées au bus d'adresse BUSA. I1 délivre un signal de sortie quand, dans le bus d'adresses BUSA du ZX81, les quatre lignes A9 à A12 sont à 5 V, la ligne A13 à O V et la ligne ROMCS à O V. La sortie de la porte NON-OU 9 est reliée à une entrée de la porte ET 7, dont la sortie est reliée à la broche 5, soit l'entrée d'horloge CL, du compteur 2. La sortie Q de la bascule 10 est reliée à la seconde entrée de la porte ET 7 et à la première entrée de la porte ET 8. Quand cette sortie Q est à 5V, il y a transmission du signal de comptage et de remise à zéro, et, donc, changement de la mémoire de caractères, c'est à dire passage d'une mémoire Mi à la mémoire M(i+l). L'entrée de l'inverseur 34 est reliée au fil NMI du ZX81 qui transmet le signal de retour trame de la télévision. Ce signal NMI est à O V lors du retour trame (avec une logique positive, il suffit de supprimer la porte 34). La sortie de l'inverseur 34 est reliée à la seconde entrée de la porte ET 8 dont la sortie est reliée à l'entrée de remise à zéro, soit la borne 14, du compteur 2. Les bornes 15, 1, 10 et 9 du compteur 2 sont respectivement reliées aux quatres fils DO à D3 du bus de données BUSD du ZX81. Lesbornes 3, 2, 6 et 7 du compteur 2 sont respectivement. reliées aux bornes 2, 5, 14 et 11 du multiplexeur 3. Les bornes 3, 6, 13 et 10 du multiplexeur 3 sont reliées aux quatre fils A9 à A12 du bus d'adresses BUSA du ZX81. Suborne 4 est reliée aux entrées A9 des mémoires vives MO à M11 et de la mémoire morte MM. Ses bornes 7, 12 et 9 sont reliées aux bornes 15, 14 et 13 du convertisseur 4. De plus, la borne 7 de 3 est reliée à la bronche A10 de la mémoire morte MM. Enfin, sa borne 15 est reliée à le masse. Les six bornes 1 à 6 du convertisseur 4 sont reliées chacune à la borne de sélection de deux des douze mémoires vives MO à Mîl. Ainsi, la borne 1 est reliée à la borne de sélection des mémoires MO et M1, etc. Les bornes 7 et 8 sont reliées aux entrées de la porte ET 5 dont la sortie est reliée, d'une part, à l'entrée de sélection de la mémoire morte MM et, d'autre part, à une entrée de la porte OU 37 dont l'autre entrée est reliée à la sortie WR du ZX81. La sortie de la porte 37 est reliée directement à la borne 11 du compteur 2 et, par l'intermédiaire de l'inverseur 11, aux entrées d'horloge, bornes 3 et 11, des bascules 10 et 12. Les entrées D, bornes 2 et 12, des bascules 10 et 12 sont respectivement reliées aux fils D4 et D5 du bus de données BUSD. Les entrées de remise à zéro et de mise à 1, bornes 1 et 4, de la bascule 12 sont reliées par l'intermédiaire des deux boutons poussoirs 13 et 14 à la masse. La sortie Q, borne 6, de la bascule 12 est reliées à une entrée de la porte OU?? 16 dont l'autre entrée est reliée à la sortie du détecteur 15. La sortie de la porte OU 16 est reliée à la borne 1 du multiplexeur 3. Quand la porte OU 16 ne délivre pas de signal de sortie1 la borne 1 du multiplexeur 3 est à 5V et les signaux du bus d'adresse BUSA, lignes A9 à A12, sont transmis au décodeur 4. Dans le cas contraire, la borne 1 de 3 est à O V et le contenu du compteur 2 est transmis. La sortie de la porte OU 16 est encore reliée, d'une part, à une entrée de la porte ET 6 et, d'autre part, à l'entrée de l'inverseur 17. L'autre- entrée de la porte ET 6 est reliée à la sortie d'un circuit de validation de mémoire morte 38. Le circuit de validation 38, avec le ZX81, peut être facilement réalisé à l'aide de portes logiques. I1 a une entrée reliée au fil A14 du bus BUSA et une entrée reliée au fil ROMCS. La sortie de 38 est à O V quand le fil A14 et le fil ROMCS sont respectivement à 5 et O V. La sortie de la porte ET 6 est reliée à la borne 12 du compteur 4 et permet de valider ce dernier. La sortie de l'inverseur 17 est reliée à une entrée de la porte OU 35 dont l'autre entrée est reliée à la borne ROMCS de sélection de la mémoire morte MX. La sortie de la porte OU 35 est reliée à une première entrée de la porte OU 36 dont la seconde entrée est reliée au fil A13 du bus BUSA,-pour éviter la sélection de la mémoire morte aux adresses 2000 à 3FFF. La sortie de la porte 36 est reliée à la borne ROMCS' de sélection du boîtier de la mémoire morte MM. Enfin, les boîtiers de mémoires vives MO à M11 et de la mémoire morte MM sont reliés aux fils DO à D7 du bus de données BUSD, aux fils AO' à A8' du bus d'adresse BUSA et à la borne de sélection d'écriture WR, pour MO à M11, et RD, pour MM. Des buffers 21, 22 et 20 sont placés sur les lignes d'adresse et de données. En ce qui concerne le circuit 21, ses bornes 3, 4, 5 et 6 sont respectivement reliées aux lignes DO à D3 du ZX81; ses bornes 11, 10, 9 et 8 sont respectivement reliées aux lignes DO à D3 de l'interface; et ses bornes 13 et 1 sont reliées à la ligne WR du ZX81. En ce qui concerne le circuit 22, ses bornes sont reliées d'une manière analogues à celles du circuit 21, en substituant les références D4 à D7 aux références DO à D3. En ce qui concerne le circuit 20, ses bornes 2, 4, 6, 8, 12, 14, 16 et 18 sont respectivement reliées aux sorties AO' à A7' du ZX81; ses bornes 3, 5, 7, 9, 11, 13, 15 èt 17 sont respectivement reliées aux lignes AO à A7 de l'interface; et ses bornes 1 et l9 sont reliées à la masse. Enfin, les deux entrées de la porte ET 19 sont reliées à ia sortie A8' du ZX81 et sa sortie est reliée à la borne A8 de l'interface. A la Fig. 3, on a considére que le circuit 20 et la porte 19 faisaient partie d'un circuit, égalemént montré à la Fig. 1, dont la fonction est de former le bus.AO à A15 à partir du bus AO' à A15'. Le système est prévu pour trois modes de fonctionnement: * mode dit de haute résolution, * mode dit de changement de caractère, et * mode dit inhibé. Ces trois modes sont sélectés par les deux bascules. Si la bascule 12 est à 0, avec sa sortie Q à +5 V, le système est en mode inhibé. Dans le cas contraire, si la bascule 10 est à 0, avec sa sortie Q à +5 V, le système est en haute résolution et si la bascule 10 est à 1, avec sa sortie Q à O V, le système est en mode changement de caractère. Dans les trois modes, on peut lire ou écrire dans la mémoire vive MY de 6K octets aux adresses 2000 à 37FF, en notation hexadécimale, on peut lire la mémoire morte MX de 2K octets aux adresses 3800 à 3FFF et on peut changer le contenu du compteur 2 et des deux bascules 10 et 12 par accès à une adresse comprise entre 3800 et 3FFF hexa. En effet, la sortie du circuit 15 se trouve alors à + 5V et les fils A9 à A12 du bus BUSD se trouve connecté vers le compteur 4. A tout instant on peut changer manuellement le contenu de la bascule 12 grâce aux deux boutons poussoirs 13 et 14. En mode inhibé, la sortie du circuit 16 est à +5 V et le signal de sélection de la mémoire de caractère est transmis à la mémoire de caractère. Le système n'a alors aucun effet sur l'affichage de l'ordinateur. En mode changement de caractère, la sortie Q de la bascule 10 est à O V et les impulsions de comptage et de remise à zéro ne parviennent pas au compteur. A chaque accès à la mémoire de caractères la mémoire morte de l'ordinateur est inhibée et le contenu du compteur est transmis au circuit 4. On a ainsi sélection d'une plage de 512 octets de la mémoire vive au de la mémoire morte (qui peut contenir un jeu de caractère nouveau) additionelles. Il apparaît alors sur l'écran le nouveau jeu de caractères défini par la mémoire ci-dessus. En mode haute résolution, les impulsions de comptage et de remise à zéro sont transmises au compteur 2. On a alors pour chaque doublet de ligne de caractère un jeu de caractère différent pour peu que l'écran ait été convenablement rempli. On accède ainsi à la haute résolution graphique. REVENDICATIONS 1) Système d'affichage graphique d'ordinateur sur un écran d'affichage du type télévision capable d'afficher a rangées de b caractères chacune, chaque caractère étant défini -par une matrice de p pixels, la capacité de la mémoire de caractères étant de c caractères, c étant inférieur à ab, un jeu différent de c caractères pouvant être écrit dans la mémoire d'écran de l'ordinateur et pouvant être redéfini de la manière désirée dans une nouvelle mémoire de caractères, caractérisé en ce qu'on utilise une pluralité de mémoires de caractères (MO à M11), chacune de ces mémoires correspondant à une zone de l'écran comportant un nombre entier de lignes inférieur à c/b. 2) Système suivant la revendication 1, caractérisé en ce qu'il se compose d'un bloc-mémoire et d'un circuit de sélection (1 à 38) des parties dudit bloc-mémoire qui comprend des mémoires de caractères (MO à Mll) proprement dites, toutes de même capacité, et un octet de commande du système pour ce qui est de la mémoire vive, et une partie de mémoire morte (MM) destinée à recevoir des programmes d'initialisation et de changement des différents modes de fonctionnement. 3) Système suivant la revendication 2, caractérisé en ce que le bloc-mémoire est placé dans une zone d'adresse de mémoire que n'utilise pas l'ordinateur (ZX81), ce qui entraîne un décodage supplémentaire de certaines lignes d'adresses non utilisées par l'ordinateur (ZX8l). 4) Système suivant la revendication 2 ou 3, caractérisé en ce que les mémoires de caractères (MO à Mll) se suivent sans intervalles pour former un seul bloc. 5) Système suivant l'une des revendications 2 à 4, caractérisé en ce que l'octet decommande se superpose à la mémoire morte (MM) et est répété de façon à couvrir la mémoire morte, un comparateur étant prévu pour déterminer quand sélectionner la mémoire morte ou l'octet de commande. 6) Système suivant la revendication 5, caractérisé en ce que, pour l'écriture, deux décodeurs sont placés sur les lignes supérieures d'adresse, un décodeur (15) comparant ces lignes avec l'adresse de la mémoire vive de caractères (MO à M11) et l'autre avec l'adresse de la mémoire morte (mu), le système activant, pour avoir accès à l'une des mémoires de caractères (MO à Mil), la sélection et l'écriture de la mémoire correspondante et inhibant l'écriture et la sélection de toute la mémoire de l'ordinateur, les lignes d'adresses inférieures arrivant normalement jusqu'aulx boîtiers mémoires et sélectionnant ainsi l'octet désiré. 7) Système suivant la revendication 6, caractérisé en ce qu'en affichage, trois modes de fonctionnement existent suivant les valeurs des octets de commande, c est à dire: * système inhibé, avec aucun effet sur l'ordinateur (ZX81), * mode changement de caractère dans lequel un comparateur ou plusieurs, si la capacité de la mémoire de caractères initiale de l'ordinateur (ZX81) n'est pas une puissance de 2, détectent chaque fois que l'ordinateur (ZX81) a accès à la mémoire de caractère initiale, en utilisant les lignes supérieures d'adresse, le système inhibant la sélection de la mémoire de caractère initial et activant la sélection de la nième mémoire du système, n étant le nombre contenu dans les 4 premiers bits de l'octet de commande, en inhibant les autres mémoires du système, * mode haute résolution dans lequel un programme d'initialisation emmagasiné en mémoire morte, ledit programme mettant à "O" les 4 bits de poids faible de l'octet de commande et remplissant la mémoire d'écran de l'ordinateur de la manière suivante: : dans les n premières lignes, n étant le nombre de lignes correspondant à une mémoire de caractère du système, ledit programme met des caractères tous différents, puis recommence pour les n lignes suivantes de la même manière, et s'il reste à la fin moins de n lignes, il fait quand même de même, la façon dont les caractères sont rangés dans chaque zone de n lignes n'ayant pas d'importance, à la condition qu'ils soient seulement tous différents et que chaque zone se termine par le même caractère, de manière que l'accès à ce caractère par l'ordinateur déclenche le passage à la mémoire de caractères suivante.