Comment des ordinateurs plus anciens comme le Commodore 64 sont-ils sortis sur un écran?

1

Cela fait un moment que je m'interroge à ce sujet. Je comprends que les cartes graphiques conservent de nos jours les informations sur les pixels dans leur mémoire dédiée et les affichent via la carte et sur l’écran. Le Commodore 64 et la plupart des ordinateurs plus anciens, d’après ce que je comprends, n’avaient cependant pas ces cartes vidéo avec mémoire dédiée. Je suppose qu’ils auraient pu réserver une partie de la mémoire de leur système comme une sorte de tampon de trame. Le processeur pourrait calculer des valeurs de pixel et stocker les données dans ce tampon de trame, puis sortir cette information à l'écran. Est-ce ainsi que fonctionnaient ces ordinateurs plus anciens ou s'agit-il d'un autre processus complètement différent?

utilisateur3211355
la source

Réponses:

3

Oui, c’est essentiellement la façon dont les sorties vidéo ont été réalisées à l’époque. Il y avait de la mémoire entre 1 et 8 Ko réservée comme mémoire tampon vidéo, la CPU calculait la sortie et la sauvegardait en RAM.

Cependant, une carte vidéo moderne présente quelques différences:

  • Il n'y avait pas d'interface haute résolution comme HDMI ou VGA. Habituellement, la vidéo composite avec schéma de couleur NTSC ou PAL était utilisée pour les ordinateurs personnels devant être connectés à un téléviseur.
  • En mode texte, seul le code ASCII a été enregistré octet pour octet dans la mémoire. Le circuit vidéo avait une petite ROM contenant les matrices de points 5x7 de chaque caractère. Ainsi, un écran de 40x25 caractères peut être enregistré dans seulement 1 Ko.
  • Il existait des puces spéciales telles que Intel 8275 qui intégrait tout (accès à la mémoire tampon, génération d’horloge et de synchronisation de pixels pour les moniteurs NTSC, accès à la matrice de points de caractères, etc.), mais parfois toute la logique vidéo était construite avec des circuits intégrés logiques TTL ( exemple: Apple II).
  • Étant donné que la RAM était partagée, le circuit vidéo utilisait DMA ou une autre méthode pour interrompre la CPU pour accéder à la RAM. Le circuit vidéo avait presque toujours une priorité plus élevée car il n'y avait pas de pipeline pour stocker les données en mémoire tampon, et la sortie en pixels du signal vidéo était cruciale dans le temps.
utilisateur3767013
la source
1

Je suppose que vous parlez des ordinateurs personnels de la fin des années 1970 / début des années 1980. Ces ordinateurs ont fonctionné à peu près comme vous l'avez supposé. Il y avait quelques complications, comme des sprites matériels, des caractères redéfinissables et des dispositions de mémoire non linéaires, mais fondamentalement, tous ces ordinateurs avaient au moins un mode texte où les caractères étaient stockés sous forme d'octets dans la mémoire; et plus tard, les plus sophistiqués avaient des graphiques couleur et bitmap.

Cependant, il existait un type d'affichage graphique plus ancien, l' affichage vectoriel , qui obligeait uniquement l'ordinateur à conserver en mémoire les coordonnées des points visibles. Cela était avantageux lorsque les fabricants et les consommateurs ne pouvaient pas se permettre la mémoire nécessaire pour contenir même un bitmap à très basse résolution.

echristopherson
la source
0

Le microprocesseur 6502 doit utiliser son bus de mémoire pendant la moitié de chaque cycle. De nombreux ordinateurs de la fin des années 1970 et du début des années 1980 en ont profité pour construire leur système de mémoire, afin de connecter le 6502 à la mémoire pendant une moitié du cycle et de connecter des circuits vidéo pendant l'autre moitié. Il est intéressant de noter que les modèles Apple II, Vic-20 et Commodore 64 ont adopté différentes approches en matière de synchronisation vidéo.

Apple II a récupéré un octet de mémoire vidéo par cycle de processeur, ce qui a permis de déterminer le caractère à afficher. Les caractères ont huit lignes de balayage, ainsi chaque octet de données de caractères est extrait huit fois par image, une fois sur chacune des huit lignes consécutives. Les six bits de l'octet de caractère récupéré seraient alors utilisés, ainsi que les 3 derniers bits d'un caractère de ligne de balayage, en tant qu'adresse dans une ROM de 512x5 bits. Les deux bits supérieurs de l'octet de caractère récupéré sélectionneraient alors les modes normal, inverse ou clignotant.

Le VIC-20 utilisait des caractères plus larges et récupérait un caractère tous les deux cycles de la CPU; sur le cycle après chaque extraction de caractère, il faudrait les 8 bits de données de caractères avec 3 bits de comptage de lignes, ajouter cette valeur à une valeur programmée dans un registre, extraire un octet de cette adresse et l'afficher sous forme de huit pixels consécutifs. Cette approche signifiait que les formes de caractères pouvaient être stockées dans la RAM plutôt que dans la ROM et reprogrammées de manière pratique (l'adresse de mémoire de caractères pouvait également être définie sur ROM si nécessaire pour économiser 2 Ko de RAM).

Le Commodore 64 avait besoin d'extraire deux octets par caractère, comme le VIC-20, mais devait afficher les caractères à l'écran deux fois plus vite (comme le Apple). Pour équilibrer ces besoins, alors qu'il affiche la première ligne de numérisation de chaque ligne de texte, l'alternative consiste à extraire des caractères et à extraire leurs formes tandis que le processeur ne peut rien faire. Comme il récupère les données de caractères, la puce vidéo les copie également dans un tampon de 40 octets. Alors que les sept lignes de texte suivantes sont affichées, la puce vidéo extrait les données de caractères de ce tampon plutôt que de la RAM, permettant ainsi à la CPU de prendre sa part de cycles. Cela permet au système d'afficher plus de texte, comme Apple, tout en autorisant des polices de caractères reprogrammables comme le VIC-20. Malheureusement, il bloque le processeur 25 fois par image,

supercat
la source