Dieser Anhang beschreibt die Register der im VC-20 eingesetzten Spezialbausteine. Er richtet sich an interessierte Programmierer, die fremde VC-20 Programme analysieren oder selbst neue Programme erstellen wollen. Wenn Sie mit Power20 nur Ihre alten Programme nutzen wollen, brauchen Sie sich um diese Details nicht sorgen.
D.1 VIC (Video/Sound Controller) - 9000-900F
9000: Horizontale Bildzentrierung (Bits: 6…0, Bit 7: Interlace Mode)
9001: Vertikale Bildzentrierung
9002: Horizontale Bildgröße
Bit 7: Bit 9 der VideoAdresse (siehe 9005)
Bits 6…0: Anzahl der Spalten auf dem Bildschirm
9003: Vertikale Bildgröße
Bit 7: Ungenutzt
Bits 6…1: Anzahl der Zeilen auf dem Bildschirm
Bit 0: Zeichengröße 0: 8x8 Pixel - 1: 16x8 Pixel
9004: Aktuelle Rasterzeile (Bits: 8…1 - Bit 0 nicht verfügbar!)
9005: Video Address Register
Bit 7: Bit 15 der VideoAddr - Negiert!
Bits 14…13 der VideoAddr sind 0
Bits 6…4: Bits 12…10 der VideoAddr
Bit 9 der VideoAddr ist in 9002 gespeichert!
Bit 3: Bit 15 der CharSetAddr - Negiert!
Bits 14…13 der CharSetAddr sind 0
Bits 2…0: Bits 12…10 der CharSetAddr
9006: Lightpen X-Pos. (Bits 8…1)
9007: Lightpen Y-Pos. (Bits 7…0)
9008: Paddle 1 Position
9009: Paddle 2 Position
900A: Stimme #1 (Tiefe Frequenzen)
Bit 7: Stimme An/Aus
Bits 6…0: Frequenz (negiert, *4)
900B: Stimme #2 (Mittlere Frequenzen)
Bit 7: Stimme An/Aus
Bits 6…0: Frequenz (negiert, *2)
900C: Stimme #3 (Hohe Frequenzen)
Bit 7: Stimme An/Aus
Bits 6…0: Frequenz (negiert, *1)
900D: Stimme #4 (Rauschen)
Bit 7: Stimme An/Aus
Bits 6…0: Frequenz (negiert)
900E: Lautstärke/Farbe
Bits 7…4: Hilfsfarbe für Multicolor Zeichen (ColorRAM Bit 3:1)
Bits 3…0: Lautstärke
900F: Rahmen-/Hintergrundfarbe
Bits 7…4: Hintergrundfarbe
Bit 3 : 1: Normale Darstellung - 0: Inverse Darstellung
Bits 2…0: Rahmenfarbe und Hilfsfarbe für Multicolor Zeichen
91x0: Port B Daten Register
91x1: Port A Daten Register
91x2: Port B Daten Richtung Register (0: Eingang ~ 1: Ausgang)
91x3: Port A Daten Richtung Register (0: Eingang ~ 1: Ausgang)
91x4: Zähler 1 Counter Register - Bits 7…0
Lesen: Aktueller Stand des Zählers 1
Schreiben: Jener Wert mit der der Zähler beim nächsten
Nulldurchgang geladen wird.
91x5: Zähler 1 Counter Register - Bits 15…8
Lesen: Aktueller Stand des Zählers 1
Schreiben: Jener Wert mit der der Zähler beim nächsten
Nulldurchgang geladen wird und sofortiger Reload des Zählers.
91x6: Zähler 1 Latch Register - Bits 7…0
Jener Wert mit der der Zähler 1 beim nächsten Nulldurchgang
geladen wird.
91x7: Zähler 1 Latch Register - Bits 15…8
Jener Wert mit der der Zähler 1 beim nächsten Nulldurchgang
geladen wird.
91x8: Zähler 2 Counter Register - Bits 7…0
Lesen: Aktueller Stand des Zählers 2
Schreiben: Jener Wert mit der der Zähler 2 beim nächsten
Nulldurchgang geladen wird.
91x9: Zähler 2 Counter Register - Bits 15…8
Lesen: Aktueller Stand des Zählers 2
Schreiben: Jener Wert mit der der Zähler 2 beim nächsten
Nulldurchgang geladen wird und sofortiger Reload des Zählers.
91xA: Serielles Daten Register
91xB: Auxiliary Control Register
Bit 7: Unterläufe von Zähler 1 werden an Pin PB7 angezeigt.
Bit 6: 0: Zähler 1 beginnt nach einem Unterlauf automatisch
von vorne
1: Zähler 1 hält an, wenn er einmal fertig gezählt hat.
Bit 5: Zähler 2 Signalquelle (1: Systemtakte - 0: PB6 Pulse)
Bit 4…2: Steuerung des Seriellen Daten Registers
Bit 1: Port B Latch Enable
Bit 0: Port A Latch Enable
91xC: Periphery Control Register
Bits 7…5: CB2 Handshake Steuerung
000 ~ Eingang: Interr. bei neg. Flanke
Lesen oder Schreiben von Port B löscht den Interr.
001 ~ Eingang: Interr. bei neg. Flanke
Zugriff auf Port B löscht den Interr. nicht
010 ~ Eingang: Interr. bei pos. Flanke
Lesen oder Schreiben von Port B löscht den Interr.
011 ~ Eingang: Interr. bei pos. Flanke
Zugriff auf Port B löscht den Interr. nicht
100 ~ Ausgang: Schreiben des Port B Daten Reg. setzt
auf 0
Wechsel von CB1 setzt auf 1
101 ~ Ausgang: Schreiben des Port B Daten Reg. setzt für
einen Taktzyklus auf 0
110 ~ Ausgang Low
111 ~ Ausgang High
Bit 4: CB1 Eingang: 0: Interr. für neg. Flanke
1: Interr. für pos. Flanke
Bits 3…1: CA2 Handshake Steuerung
Wie Bits 7…5 aber Port A Daten Reg.
Bit 0: CA1 Eingang: Wie Bit 4
Es ist kein unmittelbarer Zugriff auf den Werte in Port C
möglich. Nur Änderungen können per Interr. ermittelt werden.
91xD: Interrupt Flag Register
Bit 7: Control Bit
Bit 6: Timer 1 Unterlauf
Bit 5: Timer 2 Unterlauf
Bit 4: CB1 Interrupt
Bit 3: CB2 Interrupt
Bit 2: Serielle Datenübertragung fertig
Bit 1: CA1 Handshake Interrupt
Bit 0: CA2 Handshake Interrupt
91xE: Interrupt Control Register
Bedeutung der Bits wie 91xD.
91xF: Port A Daten Register (wie 91x1 aber ohne Handshake)
9110: VIA1 Port B
Bit 7: RS232: DSR (Data Set Ready)
Bit 6: RS232: CTS (Clear to Send)
Bit 5: Ungenutzt
Bit 4: RS232: CF (Receive Line Signal)
Bit 3: RS232: RI (Ring Indicator)
Bit 2: RS232: DTR (Data Terminal Ready)
Bit 1: RS232: RTS (Request to Send)
Bit 0: RS232: RXD (Receive Data)
911C: VIA1 Port C
CB2: RS232: SOut (Transmitted Data)
CB1: RS232: SIn (Interrupt for SIn)
9111: VIA1 Port A
Bit 7: IEC-Bus: ATN Ausgang
Bit 6: Kassetten Schalter Abfrage
Bit 5: Joystick Feuer
Bit 4: Joystick Links
Bit 3: Joystick Hinunter
Bit 2: Joystick Hinauf
Bit 1: Ungenutzt
Bit 0: Ungenutzt
9120: VIA2 Port B
Bits 7…0: Tastatur Zeilenauswahl
Bit 7: Joystick Rechts
Bit 3: Kassetten Schreibleitung
9121: VIA2 Port A
Bits 7…0: Tastatur Spaltenresultat
912C: VIA2 Port C
CB2: IEC-BUS: Daten Ausgang
CB1: IEC-BUS: Daten Eingang
CA2: IEC-BUS: Takt Ausgang
CA1: Kassetten Leseleitung