Die Lautsprecher-Routinen
Setze die Lautsprecher-Routinen zurück.
Eingaben: keine
Ausgaben: keine
Unverändert: IX,IY
Stoppt Anhang: Die Tonausgabedie Tonausgabe, leert die Ton-Warteschlangen, setzt ein ON SQ GOSUB zurück. Die Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurven bleiben erhalten.
Schicke einen Ton zum Sound-Manager.
Eingaben: HL zeigt auf Parameterblock
Ausgaben: CY=1 -> Ton wurde in die Der Key Manager: WarteschlangeWarteschlange aufgenommen sonst: CY=0
Unverändert: IY. Wenn CY=0 dann auch HL
DEFB Bedienen bei Bedarf: Kanalstatus: BCAD: SOUND CHECK: Kanalstatus:Kanalstatus
DEFB Nr. der ENV (Volumenhüllkurve. 0 = keine Änderung)
DEFB Nr. der ENT (Frequenzhüllkurve. 0 = keine Änderung)
DEFW Der Sound Manager: PeriodenlängePeriodenlänge (Frequenz)
DEFB Rauschperiode (0 = kein Rauschen)
DEFB Startamplitude
DEFW Dauer (in 1/100 sek.) oder Wiederholfaktor
Die Angaben entsprechen denen im SOUND-Kommando in Einleitung: BASIC Anhang: BasicBasic, nur die Reihenfolge ist etwas vertauscht.
Eine Tonperiode von 0 erzeugt keinen Ton, sondern eine Pause.
Bei einer negativen Dauer wird die Länge der Volumenhüllkurve als Maß genommen. Diese wird dann -n mal abgespielt. Die Angabe 0 für die Dauer entspricht -1 (ein mal die Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurve abspielen).
Die SOUND MANAGER: BCAA: SOUND QUEUESOUND QUEUE Der Kernel - Software-Interrupts: EventsEVENTs (ON SQ GOSUB) aller Kanäle, die durch diesen Ton bedient wurden (Bedienen bei Bedarf: Kanalstatus: BCAD: SOUND CHECK: Kanalstatus:Kanalstatus!), werden deaktiviert.
Die mit SOUND MANAGER: BCB6: SOUND HOLDSOUND HOLD angehaltenen Töne werden wieder frei gegeben.
Frage an, ob in der Ton-Warteschlange ein Platz für einen neuen Ton frei ist.
Eingaben: Operationen: BD5B / 349A / 349A: FLO SUBA = Bitmaske für den zu testenden Kanal
Ausgaben: Operationen: BD5B / 349A / 349A: FLO SUBA = Bedienen bei Bedarf: Kanalstatus: BCAD: SOUND CHECK: Kanalstatus:Kanalstatus
Unverändert: IX,IY
Auch wenn bei der Eingabe mehrere 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 in Operationen: BD5B / 349A / 349A: FLO SUBA gesetzt sind, wird nur ein Kanal getestet. Und zwar Operationen: BD5B / 349A / 349A: FLO SUBA vor LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPTB und LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPTB vor C.
Der Bedienen bei Bedarf: Kanalstatus: BCAD: SOUND CHECK: Kanalstatus:Kanalstatus entspricht der Die Fließkomma-Routinen: FunktionenFunktion SQ(n) in Einleitung: BASIC Anhang: BasicBasic:
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 0,1,2 = Anzahl freier Plätze in der Queue des Kanals.
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 3,4,5 = Gesetzt, wenn der erste Ton der Queue ein Rendezvous
mit Kanal 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 INTERRUPTB und/oder C hat.
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 = Erster Ton befindet sich im Haltezustand (Hold).
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 = Erster Ton ist gerade aktiv (kann nicht gleichzeitig
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 gesetzt sein).
Das SOUND MANAGER: BCAA: SOUND QUEUESOUND QUEUE Der Kernel - Software-Interrupts: EventsEVENT (ON SQ GOSUB) des getesteten Kanals wird deaktiviert.
Bestimme eine Routine, die aufgerufen werden soll, sobald in der Ton-Warteschlange ein Platz frei ist. (ON SQ GOSUB)
Eingaben: Operationen: BD5B / 349A / 349A: FLO SUBA=Bitmaske für Kanal
HL=Adresse des Der Kernel - Software-Interrupts: EventsEVENT Die Speicherkonfiguration im Schneider CPC: BlockBLOCKs
Ausgaben: keine
Unverändert: IX,IY
Auch wenn bei der Eingabe mehrere 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 in Operationen: BD5B / 349A / 349A: FLO SUBA gesetzt sind, wird nur ein Kanal aktiviert. Und zwar Operationen: BD5B / 349A / 349A: FLO SUBA vor LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPTB und LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPTB vor C.
Der Der Kernel - Software-Interrupts: EventsEVENT Die Speicherkonfiguration im Schneider CPC: BlockBLOCK muss vollständig initialisiert sein.
Der Der Kernel - Software-Interrupts: EventsEVENT Die Speicherkonfiguration im Schneider CPC: BlockBLOCK wird automatisch deaktiviert, wenn er • angestoßen wurde (KICK), • SOUND MANAGER: BCAA: SOUND QUEUESOUND QUEUE oder • SOUND MANAGER: BCAD: SOUND CHECKSOUND CHECK aufgerufen wird.
Gebe Anhang: Die Tonausgabedie Tonausgabe frei.
Eingaben: Operationen: BD5B / 349A / 349A: FLO SUBA = Bitmaske für die freizugebenden Kanäle
Ausgaben: keine
Unverändert: IY
Alle Töne, die durch SOUND MANAGER: BCB6: SOUND HOLDSOUND HOLD eingefroren wurden, werden frei gegeben. Zusätzlich werden die angegebenen Kanäle freigegeben, wenn diese durch das Hold-Bit im Bedienen bei Bedarf: Kanalstatus: BCAD: SOUND CHECK: Kanalstatus:Kanalstatus festgehalten wurden.
Friere Anhang: Die Tonausgabedie Tonausgabe ein.
Eingaben: keine
Ausgaben: CY=1 -> es waren Töne aktiv, die nun angehalten wurden
Unverändert: DE,IX,IY
Anhang: Die TonausgabeDie Tonausgabe wird sofort unterbrochen. Ist CY=0, so waren keine Töne aktiv.
Anhang: Die TonausgabeDie Tonausgabe wird wieder fortgesetzt, wenn SOUND MANAGER: BCAA: SOUND QUEUESOUND QUEUE, SOUND MANAGER: BCB3: SOUND RELEASESOUND RELEASE oder SOUND MANAGER: BCB9: SOUND CONTINUESOUND CONTINUE aufgerufen wird.
Setze Anhang: Die Tonausgabedie Tonausgabe fort.
Eingaben: keine
Ausgaben: keine
Unverändert: HL,IY
Die Tonunterbrechung durch SOUND MANAGER: BCB6: SOUND HOLDSOUND HOLD wird beendet. Sind keine Töne angehalten Datenbreite: Wordsworden, bewirkt die Routine nichts.
Lege eine Der Sound Manager: Amplituden-Hüllkurve BCBC: SOUND AMPL ENVELOPE: Der Parameterblock der Amplituden-Hüllkurve:Amplituden-Hüllkurve neu fest.
Eingaben: Operationen: BD5B / 349A / 349A: FLO SUBA = Hüllkurvennummer
HL = Adresse BCAA: SOUND QUEUE: Der Parameterblock:des Parameterblocks
Ausgaben: CY=1 -> o.k. - CY=0 -> ungültige Hüllkurvennummer
Unverändert: IX,IY. Wenn CY=0 dann auch HL, BC und Operationen: BD5B / 349A / 349A: FLO SUBA
DEFB Anzahl Hüllkurvenabschnitte
danach entsprechend oft:
DEFB Anzahl Schritte (0 ... 127)
DEFB Schritthöhe (0 ... 255 modulo 16 !!!)
DEFB Schrittlänge (0 ... 255. 0 = 256 !!!)
Es können maximal 5 Abschnitte angegeben werden. Die Anzahl wird aber nicht überprüft!
Gibt man 0 Abschnitte an, wird die 'Standard-Hüllkurve' (2 Sekunden lang ein konstanter Ton) eingestellt.
Der Die Speicherkonfiguration im Schneider CPC: BlockBlock darf überall im RAM liegen, wenn er durch kein Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM verdeckt ist (-> also nicht im unteren Viertel).
Die erlaubten Hüllkurvennummern sind 1 bis 15. Die Die Fließkomma-Routinen: FunktionenFunktion des Vektors und die Bedeutung der einzelnen Datentypen: Bytes Datenbreite: BytesBytes im Parameterblock entsprechen dem Befehl ENV in Einleitung: BASIC Anhang: BasicBasic.
Adressierungsarten der Z80: AbsolutAbsolute Volumen-Einstellungen werden mit der Schrittzahl 0 gekennzeichnet.
Ein Abschnitt kann auch eine Der Sound Manager: Hardware-HüllkurvenHardware-Hüllkurve des Die ICs im Überblick: Der PSG AY-3-8912 Die Anschlussbelegungen der wichtigsten ICs im CPC: Der PSG AY-3-8912PSG definieren. Er muss dann wie folgt aufgebaut sein:
DEFB #80 + Wert für Die Tonausgabe: Das Kontrollregister (Reg. 7) Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Register 13 (Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurvenform)
DEFW Der Sound Manager: PeriodenlängePeriodenlänge für den Hüllkurvengenerator (Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Reg. 11,12)
Lege eine Der Sound Manager: Frequenz-Hüllkurven BCBF: SOUND TONE ENVELOPE: Der Parameterblock der Frequenz-Hüllkurve:Frequenz-Hüllkurve neu fest.
Eingaben: Operationen: BD5B / 349A / 349A: FLO SUBA = Hüllkurvennummer
HL = Adresse BCAA: SOUND QUEUE: Der Parameterblock:des Parameterblocks
Ausgaben: CY=1 -> o.k. - CY=0 -> ungültige Hüllkurvennummer
Unverändert: IX,IY. Wenn CY=0 dann auch Operationen: BD5B / 349A / 349A: FLO SUBA,BC,HL
Die Die Fließkomma-Routinen: FunktionenFunktion dieses Vektors und seine Basic und Maschinencode: ParameterParameter sind identisch mit dem Befehl ENT in Einleitung: BASIC Anhang: BasicBasic.
DEFB Anzahl Hüllkurvenabschnitte (+ #80 für Der Key Manager: RepeatRepeat)
danach entsprechend oft:
DEFB Anzahl Schritte (0 ... &EF)
DEFB Schritthöhe (-128 ... +127)
DEFB Schrittlänge (0 ... 255. 0 = 256 !!!)
Ist 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 im ersten Datentypen: Bytes Datenbreite: BytesByte (Anzahl Abschnitte) gesetzt, so wird diese Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurve bei Bedarf beliebig oft wiederholt, bis der Ton abgearbeitet ist.
Abweichend davon können auch Adressierungsarten der Z80: Absolutabsolute Tonperiodenlängen (=APL) eingestellt werden. Ein Abschnitt ist dann wie folgt aufgebaut:
DEFB APL\256 OR &Der Zeichensatz des Schneider CPC: &F0 = 240F0 ; MSB der neuen Tonperidenlänge.
DEFB APL AND &FF ; LSB der neuen Tonperidenlänge.
DEFB Schrittlänge
Achtung: Das Datentypen: Bytes Datenbreite: BytesByte mit dem höherwertigen Datenbreite: NibblesNibble (Port C - Output: &F6xx: Bits 0 bis 3:Bits 8 bis 11) kommt zuerst! Außerdem müssen hier die Port C - Output: &F6xx: Bits 0 bis 3:Bits 4 bis 7 gesetzt sein, um diesen Abschnitt von einem normalen, Adressierungsarten der Z80: Relativrelativen zu unterscheiden.
Ansonsten gelten die allgemeinen Angaben bei &SOUND MANAGER: BCBC: SOUND AMPL ENVELOPEBCBC SOUND AMPL ENVELOPE.
Erfrage die Adresse einer Der Sound Manager: Amplituden-Hüllkurve BCBC: SOUND AMPL ENVELOPE: Der Parameterblock der Amplituden-Hüllkurve:Amplituden-Hüllkurve.
Eingaben: Operationen: BD5B / 349A / 349A: FLO SUBA = Hüllkurvennummer
Ausgaben: CY=1 -> o.k.: HL = Adresse der Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurve und
BC = Länge der Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurve (immer 16)
Unverändert: DE,IX,IY. Wenn CY=0 dann auch BC
Liegt die Nummer im Die Tonausgabe: Das Kontrollregister (Reg. 7) Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Register Operationen: BD5B / 349A / 349A: FLO SUBA nicht im zulässigen Bereich (1 bis 15) kehrt die Routine mit CY=0 zurück.
Erfrage die Adresse einer Der Sound Manager: Frequenz-Hüllkurven BCBF: SOUND TONE ENVELOPE: Der Parameterblock der Frequenz-Hüllkurve:Frequenz-Hüllkurve.
Eingaben: Operationen: BD5B / 349A / 349A: FLO SUBA = Hüllkurvennummer
Ausgaben: CY=1 -> o.k.: HL = Adresse der Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurve und
BC = Länge der Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurve (immer 16)
Unverändert: DE,IX,IY. Wenn CY=0 dann auch BC
Liegt die Nummer im Die Tonausgabe: Das Kontrollregister (Reg. 7) Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Register Operationen: BD5B / 349A / 349A: FLO SUBA nicht im zulässigen Bereich (1 bis 15) kehrt die Routine mit CY=0 zurück.
|