SID: Die Register

weitersagen ...
Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedIn

SID – Registerübersicht

Wie bereits gewohnt, wird auch der SID über spezielle Speicherstellen angesprochen. Werfen wir daher erstmal einen Blick auf die zum SID gehörenden Register. Davon gibt es insgesamt 29 und ihr findet sie an den Speicherstellen $D400 bis $D41C.
Habt ihr einen zweiten SID (für die Stereowiedergabe) in eurem C64, dann werden die dafür notwendigen Register an einer anderen Stelle eingeblendet, z. B. ab $D040 oder hinter den oben erwähnten Registern ab  $D420. Nur falls er im „Double-Mono“-Modus betrieben wird (dadurch werden auch „normale“ Musikstücke auf beiden Kanälen ausgegeben), nutzt der zusätzliche SID die selben Register, wie der original SID.

Über den Link in der Adressspalte kommt ihr wieder zu einem Beispiel, in dem das betroffene Register verwendet wird. Wenn ihr aber einfach den nächsten Beiträgen folgt, dann werden die Register nach und nach alle verwendet. Da sich die Register für die drei Stimmen ähneln führt der Link nicht immer speziell zu einem Beispiel für diese Stimme, es ist wohl egal, ob man die Frequenz für die 1. Stimme oder 2. Stimme setzt.

AdresseNr.Beschreibung
AdresseNr.Beschreibung
$D4000Stimme 1 : Frequenz 16-BIT-Wert (unteres BYTE)
$D4011Stimme 1 : Frequenz 16-BIT-Wert (oberes BYTE)
$D4022Stimme 1 : Tastverhältnis für Recheck 12-BIT-Wert (unteres BYTE)
$D4033Stimme 1 : Tastverhältnis für Recheck 12-BIT-Wert (oberes BYTE nur unteres Nibble wird verwendet)
$D4044Stimme 1 : Wellenform

BIT
7-4
: Wellenform
         %1000: Rauschen
         %0100: Rechteck
         %0010: Sägezahn
         %0001: Dreieck
3 : Test
     1 = RESET und sperren der Stimme
     0 = Stimme wieder freigeben
2 : Ringmodulation
     0 = keine Modulation
     1 = Modulation mit Stimme 3
1 : Synchronisation
     0 = keine Synchronisation
     1 = Synchronisation mit Stimme 3
0 : Hüllkurve steuern
     1 = starten ('Attack'-Phase)
     0 = freigeben ('Release'-Phase)
$D4055Stimme 1 : Anschlag 'attack' / abschwellen 'decay'

BIT
7-4
: Attack (von %0000 hart bis %1111 weich)
3-0 : Decay (von %0000 hart bis %1111 weich)
$D4066Stimme 1 : Halten 'sustain' / ausklingen 'release'

BIT
7-4
: Sustain (von %0000 stumm bis %1111 laut)
3-0 : Release (von %0000 schnell bis %1111 langsam)
$D4077Stimme 2 : Frequenz 16-BIT-Wert (unteres BYTE)
$D4088Stimme 2 : Frequenz 16-BIT-Wert (oberes BYTE)
$D4099Stimme 2 : Tastverhältnis für Recheck 12-BIT-Wert (unteres BYTE)
$D40A10Stimme 2 : Tastverhältnis für Recheck 12-BIT-Wert (oberes BYTE nur unteres Nibble wird verwendet)
$D40B11Stimme 2 : Wellenform

BIT
7-4
: Wellenform
         %1000: Rauschen
         %0100: Rechteck
         %0010: Sägezahn
         %0001: Dreieck
3 : Test
     1 = RESET und sperren der Stimme
     0 = Stimme wieder freigeben
2 : Ringmodulation
     0 = keine Modulation
     1 = Modulation mit Stimme 1
1 : Synchronisation
     0 = keine Synchronisation
     1 = Synchronisation mit Stimme 1
0 : Hüllkurve steuern
     1 = starten ('Attack'-Phase)
     0 = freigeben ('Release'-Phase)
$D40C12Stimme 2 : Anschlag 'attack' / abschwellen 'decay'

BIT
7-4
: Attack (von %0000 hart bis %1111 weich)
3-0 : Decay (von %0000 hart bis %1111 weich)
$D40D13Stimme 2 : Halten 'sustain' / ausklingen 'release'

BIT
7-4
: Sustain (von %0000 stumm bis %1111 laut)
3-0 : Release (von %0000 schnell bis %1111 langsam)
$D40E14Stimme 3 : Frequenz 16-BIT-Wert (unteres BYTE)
$D40F15Stimme 3 : Frequenz 16-BIT-Wert (oberes BYTE)
$D41016Stimme 3 : Tastverhältnis für Recheck 12-BIT-Wert (unteres BYTE)
$D41117Stimme 3 : Tastverhältnis für Recheck 12-BIT-Wert (oberes BYTE nur unteres Nibble wird verwendet)
$D41218Stimme 3 : Wellenform

BIT
7-4
: Wellenform
         %1000: Rauschen
         %0100: Rechteck
         %0010: Sägezahn
         %0001: Dreieck
3 : Test
     1 = RESET und sperren der Stimme
     0 = Stimme wieder freigeben
2 : Ringmodulation
     0 = keine Modulation
     1 = Modulation mit Stimme 2
1 : Synchronisation
     0 = keine Synchronisation
     1 = Synchronisation mit Stimme 2
0 : Hüllkurve steuern
     1 = starten ('Attack'-Phase)
     0 = freigeben ('Release'-Phase)
$D41319Stimme 3 : Anschlag 'attack' / abschwellen 'decay'

BIT
7-4
: Attack (von %0000 hart bis %1111 weich)
3-0 : Decay (von %0000 hart bis %1111 weich)
$D41420Stimme 3 : Halten 'sustain' / ausklingen 'release'

BIT
7-4
: Sustain (von %0000 stumm bis %1111 laut)
3-0 : Release (von %0000 schnell bis %1111 langsam)
$D41521Grenzfrequenzfilter (unteres BYTE nur BIT 0-2!!)
$D41622Grenzfrequenzfilter (oberes BYTE)
$D41723Resonanz

BIT
7-4
: Resonanz (von %0000 keine bis %1111 stark)
3-0 : Filter
         %1000: extern
         %0100: 3. Stimme
         %0010: 2. Stimme
         %0001: 1. Stimme
         %0000: kein Filter
$D41824Gesamtlautstärke für alle Stimmen

BIT
7-4
: Filtermodus
         %1000: 3. Stimme aus
         %0100: Hochpass
         %0010: Bandpass
         %0001: Tiefpass
         %0000: kein Filter
3-0 : Lautstärke von %0000 stumm bis %1111 volle Lautstärke
$D419251. A/D-Wandler (z. B. X-Wert der Maus bzw. Paddle 1 oder 3)
$D41A262. A/D-Wandler (z. B. Y-Wert der Maus bzw. Paddle 2 oder 4)
$D41B273. Stimme Oszillator auslesen
$D41C283. Stimme Hüllkurve auslesen

Wie ihr seht ist die Menge der Register gar nicht so groß. Jeweils sieben davon sind für die einzelnen Stimmen identisch. Somit bleiben nur noch acht weitere übrig.

Die Register 0 bis 24 können nur beschrieben und nicht ausgelesen werden. Dagegen können die Register 25 bis 28 nur ausgelesen und nicht beschrieben werden!

Wie schon beim VIC-II, wurde auch hier mehr Speicher „reserviert“, als tatsächlich benötigt wird. Die drei Speicherstellen  $D41D bis  $D41F sind unbenutzt und liefern beim Lesen immer  #$FF zurück. Ein Schreibvorgang in diese Adressen hat keine Auswirkung! Von  $D420 bis  $D7FF wiederholen sich diese 32 Speicherstellen laufend.


Im folgenden Beitrag beginnen wir mit der Untersuchung der Register. Mit einem kleinen Testprogramm nehmen wir uns nach und nach die einzelnen Register einmal vor.



<<< zurück | weiter >>>

 

weitersagen ...
Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedIn

2 Gedanken zu „SID: Die Register“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Protected by WP Anti Spam