VIC 6560 / 6561

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.

VIC Multicolormodus Beispiel 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.

Verwendet in
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
76543210 R Paddle 1
Register 9 / $9: Paddle 2
76543210 R 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