Wie haben ältere Computer wie der Commodore 64 ein Display ausgegeben?

729
user3211355

Ich habe mich schon eine Weile darüber gewundert. Ich verstehe, dass Grafikkarten heutzutage die Pixelinformationen in ihrem dedizierten Speicher halten und diese Informationen über die Karte auf den Bildschirm ausgeben. Der Commodore 64 und die meisten älteren Computer, nach meinem Verständnis, hatten diese Grafikkarten jedoch nicht mit dediziertem Speicher. Ich denke, sie hätten einen Teil ihres Systemspeichers als eine Art Rahmenpuffer reserviert. Der Prozessor könnte Pixelwerte berechnen und die Daten in diesem Bildspeicher speichern und diese Informationen dann auf dem Bildschirm ausgeben. Funktionieren diese älteren Computer so oder ist ein anderer Prozess völlig anders?

1

3 Antworten auf die Frage

3
user3767013

Ja, das ist im Grunde die Art, wie die Videoausgabe bis heute durchgeführt wurde. Es wurden Speicher zwischen 1 und 8 kB als Videopuffer reserviert, die CPU berechnete die Ausgabe und speichert sie im RAM.

Es gibt jedoch einige Unterschiede zu einer modernen Grafikkarte:

  • Es gab keine hochauflösenden Schnittstellen wie HDMI oder VGA. Normalerweise wurde Composite-Video mit NTSC- oder PAL-Farbschema für Heimcomputer verwendet, um an einen Fernseher angeschlossen zu werden.
  • Für den Textmodus wurde nur der ASCII-Code Byte für Byte im Speicher gespeichert. Die Videoschaltung hatte ein kleines ROM mit den 5 × 7-Punktmatriken jedes Zeichens. Auf diese Weise kann ein Bildschirm mit 40 x 25 Zeichen in nur 1 KB gespeichert werden.
  • Es gab spezielle Chips wie Intel 8275, die alles integrieren (Zugriff auf Pufferspeicher, Generierung von Pixeltakt und Synchronisation für NTSC-Monitore, Zugriff auf Character-Dot-Matrizen-ROM usw.), aber manchmal wurde die gesamte Videologik mit TTL-Logik-ICs ( Beispiel: Apple II).
  • Da RAM gemeinsam genutzt wurde, verwendete die Videoschaltung DMA oder eine andere Methode, um die CPU für den RAM-Zugriff zu unterbrechen. Die Videoschaltung hatte fast immer eine höhere Priorität, da es keine Pipelines zum Puffern der Daten gab und der Pixelausgang des Videosignals zeitkritisch war.
1
echristopherson

Ich nehme an, Sie sprechen von Heimcomputern der späten 70er / frühen 80er Jahre. Diese Computer funktionierten ziemlich gut, wie Sie vermuteten. Es gab einige Komplikationen, wie Hardware-Sprites, neu definierbare Zeichen und nichtlineare Speicherlayouts, aber im Prinzip hatten alle diese Computer zumindest einen Textmodus, in dem Zeichen als Bytes im Speicher abgelegt wurden. und später und schickere hatten Farb- und Bitmapgrafiken.

Es gab jedoch eine ältere grafische Anzeige, die Vektoranzeige, bei der der Computer nur die Koordinaten der sichtbaren Punkte im Speicher behalten musste. Dies war von Vorteil, wenn sich Hersteller und Verbraucher nicht den erforderlichen Speicher leisten konnten, um selbst eine Bitmap mit sehr niedriger Auflösung zu speichern.

0
supercat

Der 6502-Mikroprozessor muss seinen Speicherbus für die Hälfte jedes Zyklus verwenden. Viele Computer der späten 1970er und frühen 1980er Jahre nutzten dies aus, indem sie ihr Speichersystem so bauten, dass sie den 6502 während einer Hälfte des Zyklus mit dem Speicher und die Videoschaltung während der anderen Hälfte verbinden. Es ist interessant festzustellen, dass Apple II, Vic-20 und Commodore 64 unterschiedliche Ansätze für das Video-Timing gewählt haben.

Das Apple II holte pro CPU-Zyklus ein Byte Videospeicher ab, mit dem festgelegt wurde, welches Zeichen angezeigt werden soll. Die Zeichen waren acht Abtastzeilen hoch, sodass jedes Byte der Zeichendaten acht Mal pro Frame abgerufen wurde - einmal in jeder der acht aufeinanderfolgenden Zeilen. Die sechs Bits des abgerufenen Zeichenbytes würden dann zusammen mit den unteren 3 Bits eines Abtastzeilenzeichens als Adresse in einem 512 × 5-Bit-ROM verwendet. Die oberen zwei Bits des abgerufenen Zeichenbytes würden dann den normalen, inversen oder blinkenden Modus auswählen.

Der VIC-20 verwendete breitere Zeichen und holte in jedem zweiten CPU-Zyklus ein Zeichen ab. in dem Zyklus nach jedem Zeichenabruf würde es die 8 Bits der Zeichendaten zusammen mit 3 Bits der Abtastzeilenanzahl benötigen, diesen Wert zu einem in einem Register programmierten Wert addieren, ein Byte von dieser Adresse abrufen und diesen als acht anzeigen aufeinanderfolgende Pixel. Dieser Ansatz bedeutete, dass Zeichenformen im RAM statt im ROM gespeichert und nach Belieben neu programmiert werden konnten (die Zeichenspeicheradresse könnte auch auf ROM eingestellt werden, falls dies gewünscht wird, um 2 KB RAM zu sparen).

Der Commodore 64 musste wie das VIC-20 zwei Byte pro Zeichen abrufen, die Zeichen jedoch doppelt so schnell auf dem Bildschirm ausgeben (wie der Apple). Um diese Anforderungen auszugleichen, wird während der ersten Abtastzeile jeder Textzeile abwechselnd zwischen dem Abrufen von Zeichen und dem Abrufen ihrer Formen gewechselt, während die CPU nichts tun darf. Beim Abrufen der Zeichendaten kopiert der Videochip diese jedoch auch in einen 40-Byte-Puffer. Während die nächsten sieben Abtastzeilen von Text gezeigt werden, ruft der Videochip Zeichendaten aus diesem Puffer statt aus dem RAM ab, wodurch die CPU ihren Anteil an Zyklen erhält. Dadurch kann das System mehr Text wie der Apple anzeigen, und es können auch wiederprogrammierbare Zeichensätze wie der VIC-20 verwendet werden. Leider hält die CPU jedes Bild 25 Mal an,