C128 NetLex

Commodore 128 Bedienungshandbuch
Commodore 128 System Guide



E. Registerzuordnungen beim SID, VIC und VDC

80-Zeichen Video Controller 8563 (und 8568)

Der Video-Controller 8563 kann über die Adressen $D600 und $D601 angesprochen werden. Die Übergabe eines Wertes an den Controller (nur C128 Betriebsart) geschieht folgendermaßen:

Übergabe der Registernummer (0-36) an Adresse $D600 (54784 dez.) und Übergabe des Wertes an Adresse $D601 (54785 dez.)

Bsp.: Ändern des Vordergrund-Farbregisters 26

BANK15:POKE DEC("D600"),26:POKE DEC("D601"),9

Korrekturhinweis: Die Registerprogrammierung über PEEK und POKE, wie im vorstehenden Originalbeispiel verwendet, widerspricht den Vorgaben des Chipherstellers (PEEK und POKE verwenden indizierte Addressierung zur Übertragung der Werte, die beim VDC in einigen Fällen zu Fehlreaktionen führt). Zum Beschreiben und Lesen der Register sollten daher immer die Kernalroutinen bei $CDCC bzw. $CDDA verwendet werden. Beispiel für das Schreiben und Auslesen (mit RREG) des Vordergrund-Farbregisters:

BANK15:SYS(DEC("CDCC")),9,26:REM SCHREIBEN
BANK15:SYS(DEC("CDDA")),9,26:RREG A:REM LESEN



Reg. (dez.)  (hex.) BitsFunktion

0

$00
76543210
Gesamte Anzahl der Zeichen zwischen aufeinander
folgenden horizontalen Synchronimpulsen minus 1

1$0176543210Anzahl der dargestellten Zeichen pro Zeile

2$0276543210Position des horizontalen Synchronimpulses

3$037654.... Breite des vertikalen Synchronimpulses
(Anzahl der Bildschirmzeilen)
....3210Breite des horizontalen Synchronimpulses
(Zeichengenerator-Taktzyklen plus 1 )

4$0476543210Gesamtzahl Zeichenzeilen minus 1
(Siehe auch Register 5)

5$05...43210Feinabgleich (Anzahl der Bildzeilen)

6$0676543210Anzahl der dargestellten Zeilen

7$0776543210Position des vertikalen Synchronimpulses
(Anzahl Zeichenzeilen)

8
$08......10Anzeigeform:
X0: Kein Zeilensprung
01: Zeilensprung
11: Zeilensprung doppelte Dichte

9$09...43210Anzahl der Bildschirmzeilen pro Zeichenzeile minus 1
[Zeichenhöhe in Dots minus 1]

10$0A.65.....Cursor Modus:
00: Cursor blinkt nicht
01: Kein Cursor sichtbar
10: Cursor blinkt mit 1/16 der Bildwiederholfrequenz
11: Cursor blinkt mit 1/32 der Bildwiederholfrequenz
...43210Cursor Startadresse

11$0B...43210Cursor Endadresse

12$0C76543210Startadresse des Bildschirmspeichers (High Byte)

13$0D76543210Startadresse des Bildschirmspeichers (Low Byte)

14$0E76543210Cursor-Position im Bildschirmspeicher (High Byte)

15$0F76543210Cursor Position im Bildschirmspeicher (Low Byte)

16$1076543210Vertikale Light-Pen Position (In Zeichen-Zeilen plus 1)

17$1176543210Horizontale Light-Pen Position (In Zeichen-Zeilen plus 8)

18$1276543210Bildschirmspeicher-Adresse auf die sich der nächste
CPU- Lese-, oder Schreibbefehl bezieht (High Byte)

19$1376543210Siehe Register 18 (Low Byte)

20$1476543210Startadresse des Attribut-Speichers (High Byte)

21$1576543210Startadresse des Attribut-Speichers (Low Byte)

22$167654....Zeichenbreite in Pixel minus 1
(Inklusive Zeichenzwischenraum)
....3210Zeichenbreite in Pixel minus 1
(Ohne Zeichenzwischenraum)

23$17...43210Anzahl der Bildschirmzeilen pro Zeichenzeile minus 1
ohne vertikalen Zeichenabstand

24$187.......
Block Copy  0:Block wird geschrieben nach einem
Schreiben in Register 30
1:Block wird kopiert nach einem
Schreiben in Register 30
.6......
Bildschirm  0:Normaldarstellung
1:Reversdarstellung
..5.....
Blinkfrequenz der Buchstaben (FLASH-Attribut)
0:Blinkfrequenz = 1/16 der
Bildwiederholfrequenz
1:Blinkfrequenz = 1 /32 der
Bildwiederholfrequenz
...43210Anzahl der Bildschirmzeilen, die der Bildschirm nach
oben geschoben wird. Der Inhalt dieses Registers
sollte zwischen 0 und dem Inhalt des Registers 9 liegen

25$197.......
Betriebsart  0:Textdarstellung
1:Bit-Mapped-Darstellung [HiRes-Grafik]
.6......
Attribute  0:Attribute abgeschaltet (die
Vordergrundfarbe wird durch Register
26 bestimmt)
1:Vordergrundfarbe und Attribut sind im
Attribut-Byte (des Attribut-RAMs) enthalten
..5.....Semigrafik Betriebsart
0:Der horizontale Zwischenraum zweier
Zeichen wird in der Hintergrundfarbe
dargestellt
1:Der horizontale Zwischenraum zweier
Zeichen wird in der gleichen Farbe
dargestellt, wie das letzte normal
dargestellte Zeichen.
...4....
Pixelgröße 0:Pixelgröße = 1 DOT-Takt
1:Pixelgröße = 2 DOT-Takte
Horizontale Parameter müssen angepaßt werden
....3210Anzahl der Pixel, die der Bildschirm nach links
geschoben wird. Der Wert dieses Registers sollte
zwischen dem Wert von Register 22 (Bit 4-7) und
0 (Inklusive) sein. Register 22 (Bits 0-3) sollte
um den Wert dieser 4 Bits erhöht werden, um eine
konstante Zeichenbreite zu erreichen

26$1A7654....Vordergrundfarbe (RGBI), wenn Bit 6 von Register 25 = 0
....3210Hintergrundfarbe für alle Zeichen und Rahmenfarbe

27$1B76543210Wert, der zum Bildschirm- und Attributzeiger nach jeder
Zeile aufaddiert wird, um die nächste Zeile zu erhalten

28$1C765.....Adresse des Zeichengenerators (Bits 13-15).
Vorher sollte Register 9 gesetzt werden
...4....DRAM-Type (4416/4164)
0:4416
1:4164

29$1D...43210Bildschirmzeilenzähler für Unterstreichen

30$1E76543210Anzahl der Block-Write oder Block-Copy Zyklen.
Eine 0 entspricht 256 Zyklen. Das Verändern
dieses Registers startet den Block-Zyklus

31$1F76543210Daten für Block-Write und normales "Write".
Beim Lesen des Registers wird die durch Register
18/19 bestimmte Bildschirmposition übergeben

32$2076543210Block-Copy Quelladresse (Bits 15-8). Die Zieladresse
wird in Register 18/19 erwartet

33$2176543210Block-Copy Quelladresse (Bits 7-0)

34$2276543210Anzahl der Zeichen vom Beginn der dargestellten
Zeile bis zur positiven Flanke des Display-enable-pins

35$2376543210Anzahl der Zeichen vom Beginn der dargestellten
Zeile bis zur negativen Flanke des Display-enable-pins

36$24....3210Anzahl der Refresh-Zyklen pro Bildschirmzeile


Auszug aus dem Commodore C128 (D) Bedienungshandbuch: Seite E-4 bis E-7


[Seitenanfang] [Infos] [Links] [Lexikon] [Home]
Erstellt von WTE, am 14. Februar 2008; überarbeitet am 19. Januar 2013