Der erste VIC-Chip (Video Interface Controller), der im VC-20 verbaut wurde,
wurde zwei Jahre vor dem Entwurf des VC-20 entwickelt. Er sollte
eigenlich an Dritthersteller zum Bau von Videospielen verkauft werden. Als
sich jedoch kein Abnehmer fand, beschloss Commodore, selber ein
System "drumherum" zu basteln um die Kosten wieder einzufahren.
Beim VIC-I handelt es sich um einen All-In-One-Chip. Das heißt, dass sowohl
Sound als auch Grafikfähigkeiten in einem Chip vereint waren und nicht wie
etwa beim C64 auf einzelne Chips verteilt sind. Der Chip mit der Nummer 6560
ist die NTSC-Version, die Nummer 6561 kennzeichnet die PAL-Version.
Die Grafikmodi
Der Chip kann standardmäßig eine maximale Grafikauflösung von 176 x 184 darstellen, allerdings
gibt es keinen echten hochauflösenden Modus sondern normalerweise nur eine Textmatrix von 22
Spalten x 23 Zeichen, wobei jedes Zeichen 8 x 8 oder 8 x 16 Pixel groß ist. Dafür können
die Bitmuster der einzelnen Zeichen verändert werden, womit man eine Art
hochauflösenden Bildschirm durch geschickte Platzierung und Definition der
Zeichen simulieren kann. Dazu mußte man jedoch, wenn man alle Zeichen umdefinieren wollte, 2
KByte Speicher für die Neudefinition frei haben, nicht einfach bei 3,5K freiem Speicher in der
Grundausstattung.
Als Besonderheit kann man die Zahl der Spalten und Zeilen innerhalb gewisser Grenzen frei
angeben, auch der Ursprung des Bildes kann angepaßt werden.
Bei jedem Zeichen kann zwischen 8 Hauptfarben gewählt werden. Dazu gibt es einen speziellen Farbspeicherbereich,
in dem lediglich die ersten 3 Bits pro Byte als Farbangabe verwendet werden, das vierte Bit ist das Multicolor-Flag. Von den 16 Farben des Chips
können 8 der Textfarbe und alle 16 der Hintergrundfarbe zugewiesen werden. Neben der Hintergrundfarbe und
dem Farb-RAM stehen im Multicolormodus noch die Rahmenfarbe und eine globale frei wählbare Zusatzfarbe
zur Verfügung.
Speicherorganisation
Im VC20 kann der VIC lediglich auf den eingebauten 5 KByte großen Speicher zugreifen. Ein
Teil davon ist der Bildschirmspeicher, dessen 506 Positionen dienen jeweils
als Zeiger innerhalb des Character-RAMs, welches die Daten der einzelnen
Zeichen enthält. Der Beginn des Character-RAMs kann innerhalb des Adressraums
des Chips verschoben werden. Dazu kommt noch das Farb-RAM, das halb so groß
ist da statt 8 Bits nur 4 Bits pro Position verwendet werden. Von diesen vier
Bits sind 3 als Farbidentifizierung für die Vordergrundfarbe reserviert,
das vierte dient als Multicolor-Flag.
Sound
Es stehen 4 Soundkanäle zur Verfügung, drei davon erzeugen Töne, die letzte erzeugt
weißes Rauschen. Insgesamt können 5 Oktaven überstrichen werden, jede der drei Tonstimmen hat eine
Bandbreite von 3 Oktaven. Stimme 1 hat hierbei die 3 niedrigsten, Stimme 2 die drei
mittleren und Stimme 3 die drei höchsten Oktaven zur Verfügung. Die Lautstärke kann
kontrolliert werden.
Register 0 / $0: |
7....... |
RW |
Interlacemodus: |
0 = Aus, 1 = An |
.6543210 |
RW |
Bildschirmursprung horizontal in 4 Pixel-Schritten |
|
|
Register 1 / $1: |
76543210 |
RW |
Bildschirmursprung vertikal in 2 Pixel-Schritten |
|
|
Register 2 / $2: |
7....... |
RW |
5. Bit der Bildschirmspeicheradresse, siehe Register 5 |
|
.6543210 |
RW |
Anzahl der Bildspalten |
|
|
Register 3 / $3: |
7....... |
RW |
9. Bit des Rasterwertes, siehe Register 4 |
|
.654321. |
RW |
Anzahl der Bildzeilen |
|
.......0 |
RW |
Zeichengröße: |
0 = 8 x 8 Pixel, 1 = 8 x 16 Pixel |
|
Register 4 / $4: |
76543210 |
RW |
Erste 8 Bit des Rasterwerts, siehe Register 3 |
|
|
Register 5 / $5: |
7654.... |
RW |
Erste 4 Bit der Bildschirmspeicheradresse, siehe Register 2 |
|
....3210 |
RW |
Adresse des Zeichengenerators |
|
|
Register 6 / $6: Lichtgriffel horizontal |
76543210 |
R |
Lichtgriffel horizontal |
|
|
Register 7 / $7: Lichtgriffel vertikal |
76543210 |
R |
Lichtgriffel vertikal |
|
|
Register 8 / $8: Paddle 1 |
|
Register 9 / $9: Paddle 2 |
|
Register 10 / $a: Bassstimme |
7....... |
RW |
Bassstimme: |
0 = Aus, 1 = An |
.6543210 |
RW |
Frequenz der Bassstimme |
|
|
Register 11 / $b: Altostimme |
7....... |
RW |
Altostimme: |
0 = Aus, 1 = An |
.6543210 |
RW |
Frequenz der Altostimme |
|
|
Register 12 / $c: Sopranstimme |
7....... |
RW |
Sopranstimme: |
0 = Aus, 1 = An |
.6543210 |
RW |
Frequenz der Sopranstimme |
|
|
Register 13 / $d: Geräuschstimme |
7....... |
RW |
Geräuschstimme: |
0 = Aus, 1 = An |
.6543210 |
RW |
Frequenz der Geräuschstimme |
|
|
Register 14 / $e: |
7654.... |
RW |
Zusatzfarbe |
|
....3210 |
RW |
Tonlautstärke |
|
|
Register 15 / $f: Farben |
7654.... |
RW |
Hintergrundfarbe |
|
....3... |
RW |
Invertierungsflag |
|
.....210 |
RW |
Rahmenfarbe |
|
|