Das Schneider CPC Systembuch

Die Abteilungen des Betriebssystems

Der Sound Manager

Das Sound-Statement

Die Programmierung der Tonausgabe unterscheidet sich in Maschinensprache fast überhaupt nicht vom Einleitung: BASIC
Anhang: Basic
Basic
! Die Basic und Maschinencode: ParameterParameter, die man an einen Einleitung: Sound
MAIN FIRMWARE JUMPBLOCK: SOUND MANAGER
Die Firmware des Schneider CPC: SOUND MANAGER
Sound
-, ENV- oder ENT-Befehl anhängt, werden von Einleitung: BASIC
Anhang: Basic
Basic
nur ausgewertet und dann mit dem entsprechenden Vektor an Die Abteilungen des Betriebssystems: Der Sound Managerden Sound Manager übergeben. Wer in Einleitung: BASIC
Anhang: Basic
Basic
Sound-Effekte und Musikstücke programmieren kann, hat es sehr leicht, diese danach in Maschinensprache zu übertragen.

An Der Sound Manager: Das Sound-Statementdas SOUND-Statement kann man bis zu sieben Basic und Maschinencode: ParameterParameter anhängen. In Einleitung: BASIC
Anhang: Basic
Basic
sind dabei aber nur zwei Pflicht. In Maschinensprache muss man aber immer alle Basic und Maschinencode: ParameterParameter angeben, Auch ist die Reihenfolge etwas anders. Die sieben Argumente werden dabei im RAM in einem Parameter-Block zusammengestellt und dem Vektor &SOUND MANAGER: BCAA: SOUND QUEUEBCAA SOUND QUEUE im HL-Register ein Zeiger auf diesen Die Speicherkonfiguration im Schneider CPC: BlockBlock übergeben.

Was man auch in Einleitung: BASIC
Anhang: Basic
Basic
immer angeben muss, ist der 'Bedienen bei Bedarf: Kanalstatus:
BCAD: SOUND CHECK: Kanalstatus:
Kanalstatus
' und die 'Der Sound Manager: PeriodenlängePeriodenlänge' des gewünschten Tones. Belässt man es bei diesen beiden Parametern, so nimmt Einleitung: BASIC
Anhang: Basic
Basic
für die Tonlänge als Default 20 hundertstel Sekunden und für die Der Sound Manager: Start-AmplitudeStart-Amplitude (Lautstärke), den Wert 12 an. Alle restlichen Werte werden auf Real: NullNull gesetzt.

Die folgende Grafik zeigt, in welcher Form die einzelnen Werte im Parameter-Block aufeinanderfolgen müssen:

+------------------------------------------------------+
!            Basic und Maschinencode: ParameterParameter der Sound-Anweisung             !
+------------------------------------------------------+
!   Einleitung: BASIC
Anhang: Basic
BASIC
: Einleitung: Sound
MAIN FIRMWARE JUMPBLOCK: SOUND MANAGER
Die Firmware des Schneider CPC: SOUND MANAGER
SOUND
KS,TP,LEN,SA,AENV,TENV,N ! ! ! ! MCode: Vektor &SOUND MANAGER: BCAA: SOUND QUEUEBCAA: HL ---> Parameterblock ! ! ! !HL -> DEFB KS = Bedienen bei Bedarf: Kanalstatus:
BCAD: SOUND CHECK: Kanalstatus:
Kanalstatus
für diesen Einleitung: Sound
MAIN FIRMWARE JUMPBLOCK: SOUND MANAGER
Die Firmware des Schneider CPC: SOUND MANAGER
Sound
! ! DEFB AENV = gewünschte Der Sound Manager: Amplituden-Hüllkurve
BCBC: SOUND AMPL ENVELOPE: Der Parameterblock der Amplituden-Hüllkurve:
Amplituden-Hüllkurve
! ! DEFB TENV = gewünschte Ton-Hüllkurve ! ! DEFW TP = Ton-Periode (entspricht Frequenz) ! ! DEFB N = Noise = Rausch-Grundfrequenz ! ! DEFB SA = Der Sound Manager: Start-AmplitudeStart-Amplitude (Lautstärke) ! ! DEFW LEN = Länge des Tons ! +------------------------------------------------------+

Der Basic-Befehl 'SOUND_7,200' müsste in Assembler durch die folgenden Anweisungen ersetzt werden:

        ...
        LD   HL,BLOCK1
        Maschinencode über HIMEM: CALLCALL #BCAA
        ...
;
BLOCK1: DEFB 7      ; Bedienen bei Bedarf: Kanalstatus:
BCAD: SOUND CHECK: Kanalstatus:
Kanalstatus
wie angegeben. DEFB 0 ; Nr. der Default-Amplituden-Hüllkurve (= keine Änderung) DEFB 0 ; Nr. der Default-Frequenz-Hüllkurve (= keine Änderung) DEFW 200 ; Ton-Periodenlänge wie angegeben. DEFB 0 ; kein Rauschen DEFB 12 ; Default-Startamplitude DEFW 20 ; Default-Wert für Dauer

Valid HTML   Valid CSS