"Jedesmal, wenn das 8. Bit gerade herausgeschoben wird, wird
ein Interrupt ausgelöst, der das nächste Byte schreibt."
Bei ZX80/81 kein Interrupt pro Byte, sondern einer pro Zeile.
Bei Pixeltakt 6,5MHz Prozessortakt 3,25MHz blieb pro Byte nur Zeit für
einen einzigen 4-Takt Befehl. Und das war ein NOP, solange bis das Ende
der Zeile im RAM erreicht war. Dieser NOP lieferte das Byte aus dem RAM
an der Adresse vom ROM ab, um dort in das Pixelmuster umgesetzt zu
werden. Bei der CPU kam nur noch ein NOP an. Am Ende der Zeile war's
dann der HLT-Befehl, der bei der Z80 eine 4-Takt Totschleife war, also
ähnlich wie die NOPs. Das Ende der Display-Zeile kam mit einem
Adress-Bit vom Refresh-Counter, mit dem ein Interrupt ausgelöst wurde.
Was nur deshalb so einfach war, weil die Z80-CPU die Interrrupt-Leitung
im DRAM-Refresh-Zyklus auswertete.
Damit also war der Display-Refresh eine geniale Nutzung diverser
spezieller Features der Z80-CPU und mit keiner anderen CPU so machbar.
Bei diesen Zeiten, auch denen im Link, sollte nicht vergessen werden,
dass ein VGA-Display die doppelte Zeilenfrequenz eines TV-Displays hat.
Bei 25µs für die Zeile bleiben bei minimaler Auflösung (320xXXX) pro
Byte also 0,625µs übrig. Rund 25 CPU-Takte pro Byte bei 16MHz Takt,
wenn schwarzweiss. Und die Hälfte bei 4 Farben.
Timing: http://www.epanorama.net/documents/pc/vga_timing.html