Das Schneider CPC Systembuch

Das Innenleben der CPC-Rechner

Der PSG: AY-3-8912

Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
steht für 'programmable Einleitung: Sound
MAIN FIRMWARE JUMPBLOCK: SOUND MANAGER
Die Firmware des Schneider CPC: SOUND MANAGER
sound
generator'. Es handelt sich hierbei also um das IC, das im Schneider CPC der Einleitung: SoundTonerzeugung dient. Dieses IC von General Instruments ist dabei besonders vielseitig einsetzbar, weil es sehr viele Die Fließkomma-Routinen: FunktionenFunktionen enthält, die alle durch die Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
programmierbar sind. Entwickelt wurde es in der Zeit, als die ersten Telespiele noch mit recht langweiligen Piepsern um die Gunst der Kunden warben.

Außerdem ist in diesem Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
noch eine bidirektionale Parallelschnittstelle implementiert, also ein Tor zur Aussenwelt, durch das Daten sowohl ausgegeben als auch gelesen werden können. Dieser Port wird im Schneider aber ausschließlich für Eingabezwecke benutzt: An ihm ist die Lese-Seite der Tastenmatrix angeschlossen. Diesen Port also als Ausgang zu programmieren, ist Garbage Collection: ... beim CPC 464beim CPC nur in Ausnahmefällen sinnvoll.

Der Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
AY-3-8912
ist sehr einfach in ein System zu integrieren: Er benötigt nur eine einfache Spannungsversorgung von 5 Volt und einen Eingangstakt. Was er machen soll, bekommt er über 8 Datenleitungen und zwei Steuerleitungen mitgeteilt, die allesamt an Die ICs im Überblick: Die PIO 8255
Das Innenleben der CPC-Rechner: Die PIO 8255
Speicher und Peripherie: Die PIO 8255
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die PIO 8255
die PIO
angeschlossen sind.

Dabei werden alle Signale im Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
durch Teilen eines Eingangstaktes erzeugt, der im Schneider CPC genau 1 MHz beträgt.

Die Möglichkeiten dieses Einleitung: Sound
MAIN FIRMWARE JUMPBLOCK: SOUND MANAGER
Die Firmware des Schneider CPC: SOUND MANAGER
Sound
Chips sind sehr umfassend: Er hat drei Tonkanäle, die getrennt programmiert werden können. Im Schneider CPC werden sie in zwei Gruppen aufgeteilt und dem Stereo-Ausgang zugeführt: Operationen: BD5B / 349A / 349A: FLO SUBA+LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
/2 bilden den linken Kanal, LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
/2+C den rechten. Für den eingebauten Lautsprecher werden aber alle drei Kanäle zusammengefasst.

Für jeden Tonkanal kann getrennt die Lautstärke und Frequenz eingestellt werden. Die Lautstärke dabei in 15 Stufen, die sogar ein logarithmisches Raster haben, was dem menschlichen Hörempfinden sehr entgegen kommt.

Die Frequenz wird allerdings in einer linearen Skalierung angegeben, obwohl hier das logarithmische Raster noch viel mehr angebracht wäre. Der Grund für die lineare Teilung der Tonperioden-Längen ist, dass alle Töne durch Teilen des Eingangstaktes erzeugt werden.

Für alle Kanäle zusammen gibt es auch noch einen Hüllkurvengenerator. Wählt man diesen an, wird die Lautstärke des entsprechenden Kanals von ihm bestimmt. Man hat dabei die Auswahl zwischen acht verschiedenen Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurvenformen, die alle Kombinationen aus fallenden und steigenden Sägezahnflanken sind. Dabei kann man die Geschwindigkeit, mit der die Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurven abgearbeitet werden sollen, in weiten Grenzen einstellen.

Ebenfalls für alle Kanäle gemeinsam ist ein Rauschgenerator. Dessen Grundfrequenz ist in 32 Schritten einstellbar. Mit ihm kann man beispielsweise sehr realistische Knall- und Schussgeraeusche, oder die Percussion zu einem Musikstueck realisieren.

Die Anschlussbelegung des AY-3-8912

                          _____  _____
Ton-Ausgang Kanal C <-- o|1    \/   28|o <-> Erklärung zu den Anschlüssen: D0 bis D7Datenbus Der Zeichensatz des Schneider CPC: &D0 = 208D0
               Erklärung der Anschlussbelegung: TestTest --> o|            |o <-> Erklärung zu den Anschlüssen: D0 bis D7Datenbus D1
      Erklärung zu den Anschlüssen: Vcc und Vss
Erklärung zu den Anschluss-Bezeichnungen: Vcc und Vss
Vcc
= +5 Volt o| |o <-> Erklärung zu den Anschlüssen: D0 bis D7Datenbus D2 Ton-Ausgang Kanal LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
<-- o| |o <-> Erklärung zu den Anschlüssen: D0 bis D7Datenbus D3 Ton-Ausgang Kanal Operationen: BD5B / 349A / 349A: FLO SUBA <-- o| |o <-> Erklärung zu den Anschlüssen: D0 bis D7Datenbus D4 Erklärung zu den Anschlüssen: Vcc und Vss
Erklärung zu den Anschluss-Bezeichnungen: Vcc und Vss
Vss
= 0 Volt o| |o <-> Erklärung zu den Anschlüssen: D0 bis D7Datenbus D5 I/O-Port A7 <-> o| Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
AY-3-8912
|o <-> Erklärung zu den Anschlüssen: D0 bis D7Datenbus D6 I/O-Port A6 <-> o| |o <-> Erklärung zu den Anschlüssen: D0 bis D7Datenbus D7 I/O-Port A5 <-> o| |o <-- Bus-Control BC1 I/O-Port A4 <-> o| |o <-- Bus-Control BC2 I/O-Port A3 <-> o| |o <-- Bus-Direction Erklärung der Anschlussbelegung: BDIRBDIR I/O-Port A2 <-> o| |o <-- (1) Erklärung zu den Anschluss-Bezeichnungen: CS - Chip SelectChip select Erklärung der Anschlussbelegung: A8
Der Zeichensatz des Schneider CPC: &A8 = 168
A8
I/O-Port A1 <-> o| |o <-- (0) Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: Reset
Erklärung zu den Anschluss-Bezeichnungen: RESET
Erklärung der Anschlussbelegung: Reset
Erklärung zu den Bezeichnungen: RESET
Erklärungen zu den Anschlussbezeichnungen: RESET
Erläuterung zu den Anschlüssen 40 bis 45: 41 - RESET (0)
Reset
I/O-Port Der Zeichensatz des Schneider CPC: &A0 = 160A0 <-> o|____________|o <-- Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: Takt
Erklärung der Anschlussbelegung: Takt
Erklärung zu den verwendeten Bezeichnungen: Takt
Takt
Erklärung der Anschlussbelegung
Vcc, Vss

Die Schnittstellen der Schneider CPCs: Die StromversorgungDie Stromversorgung des Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
erfolgt über die mit Erklärung zu den Anschlüssen: Vcc und Vss
Erklärung zu den Anschluss-Bezeichnungen: Vcc und Vss
Erklärung zu den verwendeten Bezeichnungen: Vcc und Vss
Erklärung zu den Bezeichnungen: Vcc und Vss
Vcc und Vss
benannten Eingänge. Dabei wird an Pin 3 (Erklärung zu den Anschlüssen: Vcc und Vss
Erklärung zu den Anschluss-Bezeichnungen: Vcc und Vss
Vcc
) +5 Volt und an Pin 6 (Erklärung zu den Anschlüssen: Vcc und Vss
Erklärung zu den Anschluss-Bezeichnungen: Vcc und Vss
Vss
) 0 Volt, also Masse angeschlossen.

Test

Der Eingang Erklärung der Anschlussbelegung: TestTEST wird im Betrieb nicht beschaltet. Er dient dazu, den Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
nach der Herstellung auf Funktionstüchtigkeit zu prüfen.

A, B, C

An den Pins 1, 4 und 5 liegt das Ausgangssignal der Tonkanäle C, LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
und Operationen: BD5B / 349A / 349A: FLO SUBA an. Diese werden im Schneider CPC über Wiederstände für den Stereo-Ausgang und den eingebauten Lautsprecher teilweise wieder zusammengemischt.

A0 bis A7

Die Speicher und Peripherie: Die Anschlüsse am Schneider CPCAnschlüsse 7 bis 14 sind der im Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
integrierte, bidirektionale I/O-Port. Der Port kann aber nur als Ganzes für Ein- oder Ausgabe programmiert werden. Im Schneider CPC wird er benutzt, um Einleitung: Die Tastatur
Anhang: Die Tastatur
die Tastatur
einzulesen. Die Bezeichnungen Erklärung der Anschlussbelegung: A0 bis A7A0 bis A7 könnten irrigerweise auf einen Adress-Anschluss hindeuten. Es ist aber der (Daten-) Port des Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
AY-3-8912
. Das 'Operationen: BD5B / 349A / 349A: FLO SUBA' resultiert daher, dass ein verwandtes IC zwei Ports hat, die 'Operationen: BD5B / 349A / 349A: FLO SUBA' und 'LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
' genannt wurden.

D0 bis D7

Pins 21 bis 28 sind die Speicher und Peripherie: Die Anschlüsse am Schneider CPCAnschlüsse an den Erklärung zu den Anschlüssen: D0 bis D7Datenbus und damit auch zur CPU. Hierüber wird der Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
programmiert und Daten von und zum Port übermittelt. Im Schneider CPC sind aber auch diese Speicher und Peripherie: Die Anschlüsse am Schneider CPCAnschlüsse über Die ICs im Überblick: Die PIO 8255
Das Innenleben der CPC-Rechner: Die PIO 8255
Speicher und Peripherie: Die PIO 8255
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die PIO 8255
die PIO
geführt.

Takt

Pin 15 ist der Takteingang, dessen Frequenz beim Schneider CPC 1 MHz beträgt.

Reset

Wird Pin 16 auf Masse gelegt, so wird der Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
neu initialisiert und die Einleitung: SoundTonerzeugung auf allen Kanälen abgestellt.

A8

Um den Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
anzusprechen, muss an Pin 17, Erklärung zu den Anschluss-Bezeichnungen: CS - Chip SelectCHIP SELECT, eine positive Spannung anliegen. Andernfalls haben die Steuersignale BC1, BC2 und Erklärung der Anschlussbelegung: BDIRBDIR keine Wirkung. Dieser Eingang ist beim Schneider CPC fest auf +5 Volt gelegt.

BDIR

Über den Eingang Erklärung der Anschlussbelegung: BDIRBDIR (bus direction) wird festgelegt, ob ein Lesezugriff oder ein Schreibzugriff auf die internen Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
erfolgen soll. Liegt an Erklärung der Anschlussbelegung: BDIRBDIR ein positives Signal an, werden Daten zum Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
gesandt.

BC1 und BC2

Die beiden Eingänge Erklärung der Anschlussbelegung: BC1 und BC2BC1 und BC2 (bus control) steuern die Verwendung des auf dem Erklärung zu den Anschlüssen: A0 bis A15Adressbus liegenden Datenwortes.

Funktionsauswahl im PSG über BC1, BC2 und BDIR:

Erklärung der Anschlussbelegung: A8
Der Zeichensatz des Schneider CPC: &A8 = 168
A8
= Erklärung zu den Anschluss-Bezeichnungen: CS - Chip SelectChip Select = 1
   BC1   BC2   Erklärung der Anschlussbelegung: BDIRBDIR  |  Die Fließkomma-Routinen: FunktionenFunktion:
---------------------+------------------------------------
    0     0     0    |  Datenwort wird IGNORIERT
    0     0     1    |  Die Tonausgabe: Das Kontrollregister  (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
ADRESSIEREN 0 1 0 | Datenwort wird IGNORIERT 0 1 1 | in adressiertes Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
SCHREIBEN 1 0 0 | Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
ADRESSIEREN 1 0 1 | Datenwort wird IGNORIERT 1 1 0 | aus adressiertem Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
LESEN 1 1 1 | Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
ADRESSIEREN ---------------------+------------------------------------

Wie man sieht, sind viele Die Fließkomma-Routinen: FunktionenFunktionen doppelt vorhanden. Andererseits erzeugen viele Kombinationen keinen Schreib- oder Lesevorgang. Das erklärt sich daraus, dass der Die ICs im Überblick: Der PSG AY-3-8912AY zuerst für die Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
1610 von General Instruments entworfen wurde, und man deshalb bei der Gestaltung der Speicher und Peripherie: Die Anschlüsse am Schneider CPCAnschlüsse auf deren spezielle Bedürfnisse Rücksicht genommen hat.

Nimmt man die Tabelle noch etwas genauer unter die Lupe, so erkennt man, dass alle Die Fließkomma-Routinen: FunktionenFunktionen mit nur zwei Steuerleitungen ausgewählt werden können, nämlich mit BC1 und Erklärung der Anschlussbelegung: BDIRBDIR, wenn man BC2 auf +5 Volt legt:

   BC1   BC2   Erklärung der Anschlussbelegung: BDIRBDIR  |  Die Fließkomma-Routinen: FunktionenFunktion:
---------------------+------------------------------------
    0     1     0    |  Datenwort wird IGNORIERT
    0     1     1    |  in adressiertes Die Tonausgabe: Das Kontrollregister  (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
SCHREIBEN 1 1 0 | aus adressiertem Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
LESEN 1 1 1 | Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
ADRESSIEREN ---------------------+------------------------------------

Das wird deshalb auch fast immer gemacht. Auch im CPC liegt der Anschluss BC2 direkt auf +5 Volt. Nur BC1 und Erklärung der Anschlussbelegung: BDIRBDIR werden benutzt.

Im CPC ist der Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
an Die ICs im Überblick: Die PIO 8255
Das Innenleben der CPC-Rechner: Die PIO 8255
Speicher und Peripherie: Die PIO 8255
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die PIO 8255
die PIO
angeschlossen: Die Leitungen zum Erklärung zu den Anschlüssen: D0 bis D7Datenbus sind nicht direkt auf den Erklärung zu den Anschlüssen: D0 bis D7Datenbus der Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
gelegt, sondern an Erklärung zu den Anschluss-Bezeichnungen: PA0 bis PA7 - Port A Leitungen 0 bis 7Port A der Die ICs im Überblick: Die PIO 8255
Das Innenleben der CPC-Rechner: Die PIO 8255
Speicher und Peripherie: Die PIO 8255
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die PIO 8255
PIO
. Die Steuerleitungen werden über Kanal C angesprochen: Erklärung der Anschlussbelegung: BDIRBDIR mit Port B - Input: &F5xx: Bits 1, 2 und 3:
Port C - Output: &F6xx: Bit 6 und 7:
Bit 7 und
BC1 mit Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
6. Der Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
hat deshalb im Schneider CPC keine eigene Portadresse. Um ihn zu programmieren, muss man sich immer an Die ICs im Überblick: Die PIO 8255
Das Innenleben der CPC-Rechner: Die PIO 8255
Speicher und Peripherie: Die PIO 8255
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die PIO 8255
die PIO
wenden.

Portadresse Die ICs im Überblick: Die PIO 8255
Das Innenleben der CPC-Rechner: Die PIO 8255
Speicher und Peripherie: Die PIO 8255
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die PIO 8255
PIO
Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
------------------------------------------- &F4 Erklärung zu den Anschluss-Bezeichnungen: PA0 bis PA7 - Port A Leitungen 0 bis 7Port A (I/O) <-------> Erklärung zu den Anschlüssen: D0 bis D7Datenbus ------------------------------------------- &F6 Erklärung zu den Anschluss-Bezeichnungen: PC0 bis PC7 - Port C Leitungen 0 bis 7Port C (-/O) Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
7 --> Erklärung der Anschlussbelegung: BDIRBDIR Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
6 --> BC1 -------------------------------------------

Wie bereits erwähnt, lässt sich der Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
AY-3-8912
programmieren. Dazu müssen die Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
im Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
beschrieben werden. Wie man an den Die Fließkomma-Routinen: FunktionenFunktionen der Steuerleitungen erkennt, muss man dazu erst ein Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
adressieren, bevor man es in einem zweiten Schreibzyklus beschreiben kann.

Da sowohl der Erklärung zu den Anschlüssen: D0 bis D7Datenbus als auch die Steuereingänge des Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
an Die ICs im Überblick: Die PIO 8255
Das Innenleben der CPC-Rechner: Die PIO 8255
Speicher und Peripherie: Die PIO 8255
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die PIO 8255
die PIO
angeschlossen sind, ergibt sich, dass es ein recht kompliziertes Unterfangen ist, ein Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
des Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
korrekt zu beschreiben oder einen Zeilendraht der Tastaturmatrix einzulesen.

Im Schneider CPC hat man deshalb extra einen Vektor eingerichtet, mit dem man ein Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
des Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
einfach programmieren kann: MACHINE PACK: BD34: MC SOUND REGISTERMC SOUND REGISTER. Diese Routine liegt Garbage Collection: ... beim CPC 464beim CPC 464 im unteren Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM ab Adresse &0826:

Befehl       Queues als verkettete Liste: Anmerkung:Anmerkung
--------------------------------------
             Einsprung mit Operationen: BD5B / 349A / 349A:  FLO SUBA = Register-Nummer
                       und C = zu programmierender Wert
             ;
DI           Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt verbieten
             ;
             1. PSG-Register adressieren
             ;
LD   LOW KERNEL JUMPBLOCK: 000B:  LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
,#F4 Adresse von Erklärung zu den Anschluss-Bezeichnungen: PA0 bis PA7 - Port A Leitungen 0 bis 7Port A der Die ICs im Überblick: Die PIO 8255
Das Innenleben der CPC-Rechner: Die PIO 8255
Speicher und Peripherie: Die PIO 8255
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die PIO 8255
PIO
OUT (C),Operationen: BD5B / 349A / 349A: FLO SUBA Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
Operationen: BD5B / 349A / 349A: FLO SUBA (PSG-Reg.-Nr.) in Erklärung zu den Anschluss-Bezeichnungen: PA0 bis PA7 - Port A Leitungen 0 bis 7Port A der Die ICs im Überblick: Die PIO 8255
Das Innenleben der CPC-Rechner: Die PIO 8255
Speicher und Peripherie: Die PIO 8255
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die PIO 8255
PIO
schreiben LD LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
,#F6 Adresse von Erklärung zu den Anschluss-Bezeichnungen: PC0 bis PC7 - Port C Leitungen 0 bis 7Port C der Die ICs im Überblick: Die PIO 8255
Das Innenleben der CPC-Rechner: Die PIO 8255
Speicher und Peripherie: Die PIO 8255
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die PIO 8255
PIO
. Hier Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
7 = Erklärung der Anschlussbelegung: BDIRBDIR und Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
6 = BC1 IN Operationen: BD5B / 349A / 349A: FLO SUBA,(C) Erklärung zu den Anschluss-Bezeichnungen: PC0 bis PC7 - Port C Leitungen 0 bis 7Port C Zustand lesen OR #C0 Port B - Input: &F5xx: Bits 1, 2 und 3:
Port C - Output: &F6xx: Bit 6 und 7:
Bit 6 und
7 setzen -> Erklärung der Anschlussbelegung: BDIRBDIR=1 und BC1=1 -> PSG-Register adressieren OUT (C),Operationen: BD5B / 349A / 349A: FLO SUBA in Erklärung zu den Anschluss-Bezeichnungen: PC0 bis PC7 - Port C Leitungen 0 bis 7Port C beschreiben (Adress-Strobe für den Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
) (der Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
latcht jetzt die Register-Adresse von Erklärung zu den Anschluss-Bezeichnungen: PA0 bis PA7 - Port A Leitungen 0 bis 7Port A ein). AND #3F Port B - Input: &F5xx: Bits 1, 2 und 3:
Port C - Output: &F6xx: Bit 6 und 7:
Bit 6 und
7 rücksetzen -> Erklärung der Anschlussbelegung: BDIRBDIR=0 und BC1=0 -> inaktiv OUT (C),Operationen: BD5B / 349A / 349A: FLO SUBA in Erklärung zu den Anschluss-Bezeichnungen: PC0 bis PC7 - Port C Leitungen 0 bis 7Port C schreiben ; 2. PSG-Register beschreiben ; LD LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
,#F4 Adresse von Erklärung zu den Anschluss-Bezeichnungen: PA0 bis PA7 - Port A Leitungen 0 bis 7Port A der Die ICs im Überblick: Die PIO 8255
Das Innenleben der CPC-Rechner: Die PIO 8255
Speicher und Peripherie: Die PIO 8255
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die PIO 8255
PIO
OUT (C),C Z80-Register C (PSG-Reg.-Wert) in Erklärung zu den Anschluss-Bezeichnungen: PA0 bis PA7 - Port A Leitungen 0 bis 7Port A der Die ICs im Überblick: Die PIO 8255
Das Innenleben der CPC-Rechner: Die PIO 8255
Speicher und Peripherie: Die PIO 8255
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die PIO 8255
PIO
schreiben LD LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
,#F6 Adresse von Erklärung zu den Anschluss-Bezeichnungen: PC0 bis PC7 - Port C Leitungen 0 bis 7Port C der Die ICs im Überblick: Die PIO 8255
Das Innenleben der CPC-Rechner: Die PIO 8255
Speicher und Peripherie: Die PIO 8255
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die PIO 8255
PIO
-> Port B - Input: &F5xx: Bits 1, 2 und 3:
Port C - Output: &F6xx: Bit 6 und 7:
Bit 6 und
7 = BC1 und Erklärung der Anschlussbelegung: BDIRBDIR LD C,Operationen: BD5B / 349A / 349A: FLO SUBA C = alter Wert aus Erklärung zu den Anschluss-Bezeichnungen: PC0 bis PC7 - Port C Leitungen 0 bis 7Port C mit Erklärung der Anschlussbelegung: BDIRBDIR und BC1 = 0 (inaktiv) OR #80 Operationen: BD5B / 349A / 349A: FLO SUBA = Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
7 setzen -> Erklärung der Anschlussbelegung: BDIRBDIR=1 und BC1=0 -> PSG-Register beschreiben OUT (C),Operationen: BD5B / 349A / 349A: FLO SUBA Operationen: BD5B / 349A / 349A: FLO SUBA nach Erklärung zu den Anschluss-Bezeichnungen: PC0 bis PC7 - Port C Leitungen 0 bis 7Port C schreiben (Daten-Strobe für den Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
) (der Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
latcht jetzt den Wert aus Erklärung zu den Anschluss-Bezeichnungen: PA0 bis PA7 - Port A Leitungen 0 bis 7Port A ins angewählte Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
) OUT (C),C C nach Erklärung zu den Anschluss-Bezeichnungen: PC0 bis PC7 - Port C Leitungen 0 bis 7Port C schreiben -> Erklärung der Anschlussbelegung: BDIRBDIR und BC1 = 0 -> inaktiv ; EI Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt wieder zulassen RET Zurück zum rufenden Programm

Was für ein Aufwand für die simple Aufgabe, ein Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
der Sound-Chips zu beschreiben! Selbermachen lohnt sich, außer in Ausnahmefällen, wirklich nicht.

Zum weiteren Verständnis dieser Routine sei noch folgendes angemerkt:

Die Portadresse der Die ICs im Überblick: Die PIO 8255
Das Innenleben der CPC-Rechner: Die PIO 8255
Speicher und Peripherie: Die PIO 8255
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die PIO 8255
PIO
ist binär %111101xx????????. Das elfte Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
, die '0', adressiert Die ICs im Überblick: Die PIO 8255
Das Innenleben der CPC-Rechner: Die PIO 8255
Speicher und Peripherie: Die PIO 8255
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die PIO 8255
die PIO
, die Port B - Input: &F5xx: Bits 1, 2 und 3:
Port C - Output: &F6xx: Bit 6 und 7:
Bits 8 und
9, das 'xx' wählen, je nach Wert, Port Erklärung der Anschlussbelegung: A, B, CA, B, C oder das Steuerregister an. Das niederwertige Datentypen: Bytes
Datenbreite: Bytes
Byte
'????????' wird nicht ausgewertet! Beim Befehl OUT_(C),Operationen: BD5B / 349A / 349A: FLO SUBA o.Ä. wird das Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
C auf der unteren Adresshälfte ausgegeben, die aber nicht interessiert! Benutzt wird der 'Nebeneffekt', dass dabei Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
auf der oberen Adresshälfte ausgegeben wird. Obwohl im Befehls-Mnenonic also das C- Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
angegeben ist, wird eigentlich nur mit LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
adressiert.

Die Register des AY-3-8912

Insgesamt hat der Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
16 verschiedene Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
, wovon aber eins der implementierte I/O-Port und ein weiteres ein nicht existenter zweiter Port ist. Den zweiten Port gibt es nur in einer anderen Ausführung dieses ICs, dem AY-3-8910.

Die Tonausgabe: Das Kontrollregister  (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
| Belegung | Die Fließkomma-Routinen: FunktionenFunktion ---------+----------+------------------------------- 0 | xxxxxxxx | LSB der Tonperiodenlänge 1 | ....xxxx | MSB für Kanal Operationen: BD5B / 349A / 349A: FLO SUBA 2 | xxxxxxxx | LSB der Tonperiodenlänge 3 | ....xxxx | MSB für Kanal LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
4 | xxxxxxxx | LSB der Tonperiodenlänge 5 | ....xxxx | MSB für Kanal C 6 | ...xxxxx | Rauschperiodenlänge 7 | .xxxxxxx | Die Tonausgabe: Das Kontrollregister (Reg. 7)Kontrollregister 8 | ...hxxxx | Lautstärke Kanal Operationen: BD5B / 349A / 349A: FLO SUBA 9 | ...hxxxx | Lautstärke Kanal LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
10 | ...hxxxx | Lautstärke Kanal C 11 | xxxxxxxx | LSB der Der Sound Manager: PeriodenlängePeriodenlänge des 12 | xxxxxxxx | MSB Hüllkurvengenerators 13 | ....xxxx | Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurvenform 14 | xxxxxxxx | I/O-Port ---------+----------+-------------------------------
Das Kontrollregister (Reg. 7)
    Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
0 1 Bedeutung ----------------------------------------------------- 0 ja nein Tonausgabe auf Kanal Operationen: BD5B / 349A / 349A: FLO SUBA 1 ja nein Tonausgabe auf Kanal LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
2 ja nein Tonausgabe auf Kanal C 3 ja nein Rauschen auf Kanal Operationen: BD5B / 349A / 349A: FLO SUBA zumischen 4 ja nein Rauschen auf Kanal LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
zumischen 5 ja nein Rauschen auf Kanal C zumischen 6 in out Richtung des I/O-Ports -----------------------------------------------------
Die Tonperioden-Register (Reg. 0 bis 5)

Der Eingangstakt (CPC: 1MHz) des Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
wird in einer ersten Stufe vorab durch 16 geteilt. Danach wird er noch einmal für jeden Kanal durch eine programmierbare Teilerkette auf die gewünschte Der Sound Manager: PeriodenlängePeriodenlänge geteilt und so dem jeweiligen Kanal zugeführt.

Das Teiler-Verhältnis kann dabei in 2^12 = 4096 Stufen eingestellt werden. Da der Erklärung zu den Anschlüssen: D0 bis D7Datenbus nur acht Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
breit ist, musste die Programmierung der Tonperiode auf jeweils zwei Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
pro Kanal verteilt werden. Das erste Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
enthält dabei die unteren acht Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bits
, das zweite Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
jeweils die oberen vier Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bits
.

Die Frequenz eines Kanals ergibt sich dabei zu:

         f(Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: Takt
Erklärung der Anschlussbelegung: Takt
Erklärung zu den verwendeten Bezeichnungen: Takt
takt
) f = ------------ 16 * tv

wobei f(Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: Takt
Erklärung der Anschlussbelegung: Takt
Erklärung zu den verwendeten Bezeichnungen: Takt
takt
) die Frequenz des Eingangstaktes ist, die durch '16' geteilt wird, und tv das programmierte Teiler-Verhältnis.

Für den internationalen Kammerton Operationen: BD5B / 349A / 349A: FLO SUBA mit 440 Hertz ergibt sich deshalb etwa:

                  1.000.000                 1.000.000
   f(Operationen: BD5B / 349A / 349A:  FLO SUBA) = 440 = -------------   <=>  tv = -------------  = 142,045
                  16 * tv                   16 * 440

Zur Programmierung des Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
müssen die Nachkomma-Stellen natürlich weggerundet werden, wodurch sich, vor allem in der obersten Periodenlängen der Noten aus 9 Oktaven: Oktave -4
Periodenlängen der Noten aus 9 Oktaven: Oktave -3
Periodenlängen der Noten aus 9 Oktaven: Oktave -2
Periodenlängen der Noten aus 9 Oktaven: Oktave -1
Periodenlängen der Noten aus 9 Oktaven: Oktave +0
Periodenlängen der Noten aus 9 Oktaven: Oktave +1
Periodenlängen der Noten aus 9 Oktaven: Oktave +2
Periodenlängen der Noten aus 9 Oktaven: Oktave +3
Periodenlängen der Noten aus 9 Oktaven: Oktave +4
Oktave
, hörbare Disonanzen ergeben können.

Die erreichbare niedrigste Frequenz ist:

              1.000.000
   f(min) = ------------- =  16,28 Hertz
               16 * 4095

Die erreichbare höchste Frequenz liegt bei 62500 Hertz. Sie ist aber nicht so interessant, weil der nächst tiefere Ton bereits eine ganze Periodenlängen der Noten aus 9 Oktaven: Oktave -4
Periodenlängen der Noten aus 9 Oktaven: Oktave -3
Periodenlängen der Noten aus 9 Oktaven: Oktave -2
Periodenlängen der Noten aus 9 Oktaven: Oktave -1
Periodenlängen der Noten aus 9 Oktaven: Oktave +0
Periodenlängen der Noten aus 9 Oktaven: Oktave +1
Periodenlängen der Noten aus 9 Oktaven: Oktave +2
Periodenlängen der Noten aus 9 Oktaven: Oktave +3
Periodenlängen der Noten aus 9 Oktaven: Oktave +4
Oktave
entfernt liegt. Ein musikalisch verwertbares Raster der Frequenzen ergibt sich erst unter 4000 Hertz.

Eine Die CPU Z80: Besonderheiten der Z80 im Schneider CPCBesonderheit stellt noch die Tonperiodenlänge 0 dar: Bei diesem 'Teiler-Verhältnis' wird kein Rechtecksignal mehr erzeugt, sondern der Ausgang ständig auf dem oberen, dem der Amplitude entsprechenden Ausgangspotential gehalten. Dadurch kann man dann durch Programmierung der Amplitude des Kanals beliebige Signalformen erzeugen. ((ERATA: Teiler 0 == Teiler 1 !!!))

Alle Tonsignale des Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
werden durch Teilen des Eingangstaktes und, davon abhängig, Umschalten des Ton-Ausganges zwischen '0' und der eingestellten Amplitude erzeugt. Der Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
PSG
erzeugt deshalb ausschließlich Rechteck-Signale. Diese sind, im Vergleich zu den meisten natürlichen Instrumenten, sehr Oberwellen-reich. Deshalb muss man hier an Harmonien sehr viel höhere Anforderungen stellen. 'Gewagte' Dreiklänge, die auf einem Klavier durchaus harmonisch klingen, wirken beim Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
AY-3-8912
meist äußerst disharmonisch und 'schraeg'.

Die möglichen Hüllkurvenformen (Reg. 13)

In der folgenden Tabelle sind die möglichen Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurvenformen des Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
AY-3-8912
dargestellt und die Zahl, mit der Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
13 dafür jeweils programmiert werden muss, in binärer Form. Bei zwei Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurven gibt es mehrere Zahlen, durch die sie erzeugt werden können.

Alle Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurven lassen sich aber auch nur mit den letzten drei Port B - Input: &F5xx: Bits 1, 2 und 3:
Port C - Output: &F6xx: Bit 6 und 7:
Bits 0, 1 und
2 erzeugen, wenn man Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
3 immer auf 1 setzt.

!Nummer!    Form           !
+------+-------------------+
!      ! \  !\  !\  !\     !
! 1000 !  \ ! \ ! \ ! \ ...!
!      !   \!  \!  \!      !
+------+-------------------+
!      !   /!  /!  /!      !
! 1100 !  / ! / ! / ! / ...!
!      ! /  !/  !/  !/     !
+------+-------------------+
!      !                   !
! 1001 ! \                 !
! 00xx !  \                !
!      !   \___________ ...!
+------+-------------------+
!      !    ___________ ...!
! 1101 !   /               !
!      !  /                !
!      ! /                 !
+------+-------------------+
!      ! \    /\    /\     !
! 1010 !  \  /  \  /  \ ...!
!      !   \/    \/    \   !
+------+-------------------+
!      !   /\    /\        !
! 1110 !  /  \  /  \  / ...!
!      ! /    \/    \/     !
+------+-------------------+
!      !     __________ ...!
! 1011 ! \  !              !
!      !  \ !              !
!      !   \!              !
+------+-------------------+
!      !                   !
! 1111 !   /!              !
! 01xx !  / !              !
!      ! /  !__________ ...!
+------+-------------------+
Hüllkurven-Perioden-Register (Reg. 11 und 12)

Der Verlauf des Amplituden-Anstiegs und -Abfalls wird natürlich auch vom Eingangstakt gesteuert. Hierbei wird ebenfalls der bereits durch 16 geteilte Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: Takt
Erklärung der Anschlussbelegung: Takt
Erklärung zu den verwendeten Bezeichnungen: Takt
Takt
verwendet. Dieser wird dann über die 16 Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
breite, programmierbare Teilerkette auf die gewünschte Geschwindigkeit herabgesetzt.

Mit jeder Periode dieses Signals wird dann die Amplitude verändert. Da insgesamt 16 verschiedene Amplituden möglich sind, ist ein einzelner Sägezahn nach 16*16*tv = 256*tv Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: Takt
Erklärung der Anschlussbelegung: Takt
Erklärung zu den verwendeten Bezeichnungen: Takt
Takten
abgearbeitet. 'tv' ist hierbei wieder das programmierte Teiler-Verhältnis.

Die kürzeste programmierbare Sägezahn-Periode hat eine Frequenz von:

             1.000.000       1.000.000
  f(max) = ------------- = ------------- = 3906 Hz
             256 * tv         256 * 1

Werden so kurze Sägezahn-Perioden programmiert, dass sie im hörbaren Bereich liegen, so nimmt dies unser Ohr nicht mehr als ein Vibrato, sondern als ein eigenständiges Frequenzsignal wahr. Der abgestrahlte Ton scheint deshalb ein Mischsignal aus der eigentlichen Tonperiodenlänge und der Länge der Sägezahn-Periode zu sein.

Programmiert man die Tonperiode eines Kanals, dessen Amplitude über den Hüllkurven-Generator gesteuert wird, mit dem Wert 0, so wird die Ausgangsspannung dieses Kanals nur noch durch den Amplituden-Verlauf bestimmt. Damit kann man dann (mit gewissen Abstrichen) Sägezahn- uder Dreieck-Signale erzeugen.

Sinnvoll sind aber meist nur Der Sound Manager: PeriodenlängePeriodenlängen, die weit unter der Hörgrenze liegen. Die längste, erzeugbare Der Sound Manager: PeriodenlängePeriodenlänge ist:

  1                 1.000.000                   256 * 65535
------ = f(min) = -------------  <=>  p(max) = ------------- = 16.777 Sek.
p(max)             256 * 65535                   1.000.000
Die Lautstärken-Register (Reg. 8, 9 und 10)

Beim Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
AY-3-8912
kann jeder Kanal mit einer konstanten Amplitude (Lautstärke) in 15 Stufen programmiert werden. Programmiert man ein Lautstärkenregister mit dem Wert 0 wird dieser Kanal abgeschaltet.

Dabei ist das Lautstärkenraster logarithmisch angelegt, wodurch beim menschlichen Gehör der Eindruck eines gleichmäßigen Lautstärke-Anstieges entsteht. Wird in einem Lautstärken-Register aber Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
4 gesetzt, das in der Tabelle mit 'h' gekennzeichnet ist, so wird der Hüllkurvengenerator zur Erzeugung der Lautstärke angewählt.

Der Lautstärke-Unterschied zwischen zwei aufeinanderfolgenden Amplituden-Werten beträgt beim Die ICs im Überblick: Der PSG AY-3-8912
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912
AY-3-8912
etwa 2.85 dB. Die folgenden Pegel wurden mit Hilfe eines Kassettenrekorders und dessen Aussteuerungsanzeige ermittelt. Adressierungsarten der Z80: AbsolutAbsolute Genauigkeit sollte deshalb nicht erwartet werden.

Man sieht aber, dass die in Dezibel angegebenen Signalamplituden einen halbwegs konstanten Abstand zueinander haben. Da die Bezeichnung Dezibel eine logarithmische Skalierung in eine lineare übersetzt (Verdoppelung = 10 dB), muss die Amplituden-Abstufung also tatsächlich logarithmisch sein:

Amplitude | Pegel
----------+---------
    15    |  5.0
    14    |  2.5
    13    |  0.0
    12    | -3.0
    11    | -5.5
    10    | -8.5
     9    |-13.0
     8    |-15.0
     7    |-18.0
     6    |-21.0
----------+---------

Valid HTML   Valid CSS