Die Programmierung der Tonausgabe unterscheidet sich in Maschinensprache fast überhaupt nicht vom Einleitung: BASIC Anhang: BasicBasic! Die Basic und Maschinencode: ParameterParameter, die man an einen Einleitung: Sound MAIN FIRMWARE JUMPBLOCK: SOUND MANAGER Die Firmware des Schneider CPC: SOUND MANAGERSound-, ENV- oder ENT-Befehl anhängt, werden von Einleitung: BASIC Anhang: BasicBasic nur ausgewertet und dann mit dem entsprechenden Vektor an Die Abteilungen des Betriebssystems: Der Sound Managerden Sound Manager übergeben. Wer in Einleitung: BASIC Anhang: BasicBasic 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: BasicBasic 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: BasicBasic 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: BasicBasic 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: BasicBASIC: Einleitung: Sound MAIN FIRMWARE JUMPBLOCK: SOUND MANAGER Die Firmware des Schneider CPC: SOUND MANAGERSOUND 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 MANAGERSound !
! 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
|