Will sich jemand vielleicht mal einen VIC-Ersatz-Chip in TTL-Logik bauen?
Farbschema des VC-20 (VIC -I-Chip) aus meiner Sicht - auf die Entwicklung zum C64 gehe ich im Verlauf der Darstellung ein:
Farbnummer 4bit:
b3 b2 b1 b0
b3 und b0 lassen wir zunächst ausser Betracht.
b2 und b1 codieren das quadraturmodulierte Farbartsignal und werden hier als "low-aktiv" angenommen.
b2 = / null_Grad_90Grad
b1 = / null_Grad_45Grad
Damit lassen sich folgende Winkel kombinieren: 0°, 45°, 90°, 135°.
Die 4 Bit-Kombinationen hieraus ergeben nacheinander 4 Farbblöcke "Blau (11), Purpur (10), Rot (01) und braun (00)". Dies meinte ich weiter oben mit "streng linearer monotoner Zusammenhang." Die aus b2 und b1 gebildete absteigende Zahlenreihe {3,2,1,0} führt zu aufsteigenden Farbphasenwinkeln {0, 45, 90, 135}. Eine Veranschaulichung des Farbkreises findet sich auf der Seite von "Pepto".
b0 = INVERT_COLOR
(Wertigkeit 1)
Das Bit 0 negiert einfach das von b2,b1 definierte Summen-Farbsignal was einer Phasenverschiebung um 180° entspricht. Elektrisch stelle ich mir hier einen Op-Verstärker mit invertierendem Eingang vor, bzw. einen Differenzverstärker mit einem "Schalteingang." Negieren bedeutet optisch ein Spiegeln im Farbkreis um 180 °, dadurch entstehen nacheinander die Farben Gelb (= Anti-Blau), Grün (= Anti-Purpur), Cyan (=Anti-Rot) und eine Phantomfarbe die ich vorläufig "dunkel-blaugrau" nennen möchte. (s.u.)
Die 8 Rohfarben lauten zunächst, numerisch aufsteigend sortiert:
braun (Nr. 0) - Phantomfarbe - rot - cyan - purpur - grün - blau - gelb (=Nr. 7)
Jetzt nehmen wir das Bit b3 noch hinzu mit der Wertigkeit 8 in der Farbnummer.
b3 = BRIGHT
welches im Y-Signal einfach als zusätzliches Helligkeitsbit fungiert und schon sind wir bei 16 Farben. Und es gibt jetzt auch helle Mischfarben wie "hell-blaugrün" und "Hellgelb". Nur die Farbnummern 0, 1 , 8 und 9 stimmen noch nicht ganz.
Hierfür, für die genannten Farbnummern, brauchen wir eine extra Logik, die aber ebenfalls extrem einfach und regulär gehalten sein kann:
Man kann sich dafür einen 2-zu-4 Decoder 74LS139 vorstellen. Dieser soll nur aktiv werden bei Farbnummer 0,1,8 und 9. Diese haben alle gemeinsam, dass b2 und b1 beide = 0 sind.
Der gedachte Decoder habe enable-Eingänge /e1 und /e0.
b2 -> / e1
b1 -> / e0
Somit werde der Decoder nur bei diesen Farben aktiv.
Die Logik-Eingänge seien i0 und i1:
b3 -> i1
b0 -> i0
Die 4 Ausgänge des Decoders sollen wie folgt heißen (low active):
a3 = / INHIBIT_INVERT_COLOR
a2 = / INHIBIT_BRIGHT
a1 = / INHIBIT_COLOR
a0 = / INHIBIT_LUMA
Wie die von mir gewählten Signalnamen andeuten, "verhindern" diese Signale die bereits weiter oben angesprochenen Signale "fallweise" für die Farbnummern 0, 1, 8, 9:
- aus dunkel-braun wird schwarz, da a0 "inhibit luma" das Luminanz-Signal völlig abschaltet.
- die Phantomfarbe wird ersetzt durch "weiß" (Farbnr. 1), da a1 das Color - Signal völlig unterdrückt.
- aus hellbraun wird dunkelbraun (Farbnummer 8 , da a2 die sonst ab Nummer 8 wirksame Helligkeitsanhebung durch BRIGHT (b3) blockiert
- aus Phantomfarbe-hell wird "hell-Orange", da a3 die Spiegelung im Farbkreis um 180° verhindert (und a2 hier die BRIGHT-schaltung nicht verhindert).
Somit ergeben sich sämtliche Farben des VC20 direkt aus dem numerischen Farbwert und die Extras werden mit einem einzigen Decoder (und ein paar Gattern "Glue") abgehandelt.
Dass der VC20 auch sonst einzelnen Farben verschiedene Helligkeitswerte zuweist, vertiefe ich hier nicht näher, da es regelhaft die Mischfarben betrifft und mit wenigen Gattern erledigt werden kann.
Beim C64 kommen m.E. folgende Änderungen hinzu:
- rot und Hellrot rutschen um 30 Grad nach "vorne" im Farbkreis;
- Dunkelgrau, mittelgrau und hellgrau (Farbnummern 11, 12 und 15):
Zumindest bei dem VIC-II "R1" könnte ich mir vorstellen, dass dieser auch ohne ROM-Tabelle realisierbar sein könnte; aus den Farbnummern für diese Grautöne können 3 Luma-Werte abgeleitet werden
%1011 %1100 %1111
b1, b2 ergeben hier also 3 monoton aufsteigende Werte "1, 2, 3" was der Helligkeitsabstufung von dunkel zu hellgrau entspricht!
- braun und orange werden getrennte Farbtöne (statt nur 2 Helligkeiten desselben Tons)
- mehr Luminanzabstufungen.
Insgesamt sind die Extrawürste hier aber soviel, dass der Einzelgatter-Zusatzaufwand ein ROM rechtfertigt. Das mit Einzelgattern hinzukriegen scheint mir aber eine nette Knobelei zu sein.