@RomanWorkshop, post #1
@RomanWorkshop, post #3
@RomanWorkshop, post #1
@flops, post #5
;Każda Amiga może generować dźwięk w 4 kanałach (po 2 kanały na każde wyjście audio stereo). ;Kanały nr 0/3 tworzą lewe wyjście, a kanały nr 1/2 - prawe wyjście audio stereo. move.l $DFF000,A6 ;adres bazowy rejestrów kontrolnych układów specjalizowanych Amigi ;Ustawienie początku danych (tablicy 8-bitowych próbek) sampla do odtworzenia lea Wave(pc),A1 ;adres początku danych sampla do odtworzenia move.l A1,$A0(A6) ;zapis adresu początku sampla do rejestrów [AUD0LCH:AUD0LCL] (kanał 0) move.l A1,$B0(A6) ;zapis adresu początku sampla do rejestrów [AUD1LCH:AUD1LCL] (kanał 1) ;Ustawienie długości danych sampla, wyrażonej w słowach (1 = 2 bajty, czyli 2 próbki 8-bitowe) move.w #4,$A4(A6) ;zapis długości danych sampla (w słowach) do rejestru AUD0LEN (kanał 0) move.w #4,$B4(A6) ;zapis długości danych sampla (w słowach) do rejestru AUD1LEN (kanał 1) ;Ustawienie głośności odtwarzania w danym kanale (0-64, 64 = maksymalna głośność) move.w #64,$A8(A6) ;zapis poziomu głośności do rejestru AUD0VOL (kanał 0) move.w #64,$B8(A6) ;zapis poziomu głośności do rejestru AUD1VOL (kanał 1) ;Ustawienie przerwy między odtwarzaniem kolejnych próbek sampla (częstotliwość odtwarzania) move.w #443,$A6(A6) ;zapis liczby cykli opóźnienia do rejestru AUD0PER (kanał 0) move.w #443,$B6(A6) ;zapis liczby cykli opóźnienia do rejestru AUD1PER (kanał 1) ;Wartość opóźnienia 443, powoduje odtwarzanie sampla z częstotliwością ok. 1 kHz. ;Jest to liczba cykli zegara systemowego, która upływa przed odtworzeniem kolejnej 8-bitowej ;próbki sampla. Minimalna wartość wynosi 123/124 cykle dla Amigi pracującej w standardzie PAL/NTSC, ;a maksymalna wynosi 65535. Im mniejsza wartość, tym większa częstotliwość odtwarzania sampla. ;Maksymalna szybkość odtwarzania sampla przez jednoskę DMA, wynosi 28867 próbek (bajtów) na sekundę. ;Aby obliczyć prawidłową liczbę cykli opóźnienia CX dla uzyskania dowolnej częstotliwości odtwarzania, ;należy dokonać następujących obliczeń: CX = cc/(f*sn), gdzie: cc - stała zależna od standardu pracy ;Amigi: 3546895 (PAL); 3579545 (NTSC), f - zakładana częstotliwość odtwarzania [Hz], sn - liczba ;próbek (bajtów) w samplu. ;Włączenie odtwarzania sampla move.w #$8203,$96(A6) ;zapis do rejestru DMACON, ustawienie bitów nr: 15 - SET/CLR, ;9 - DMAEN (włączenie jednostki DMA), 1 - AUD1EN (włączenie kanału 1), ;0 - AUD0EN (włączenie kanału 0). ;Czekanie na naciśnięcie lewego przycisku myszy Wait: btst #6,$BFE001 bne.s Wait ;Wyłączenie odtwarzania sampla move.w #$0003,$96(A6) ;zapis do rejestru DMACON, zerowanie bitów nr: 15 - SET/CLR, ;1 - AUD1EN (wyłączenie kanału 1), 0 - AUD0EN (wyłączenie kanału 0). rts ;Dane sampla muszą znajdować się pod parzystym adresem (wyrównanie do słowa) w pamięci CHIP, ;aby jednostka DMA miała do nich dostęp. ;Każdy bajt to 8-bitowa próbka, określająca amplitudę (poziom) sygnału generowanego na wyjściu audio ;w danym momencie odtwarzania sampla. Amplituda każdej próbki zawiera się w zakresie od -128 do +127, ;co przy ustawionej maksymalnej głośności odtwarzania (64), zapewnia uzyskanie napięcia od -0.4 do +0.4V ;na wyjściu audio. Wave: dc.b 0,90,127,90,0,-90,-127,-90 ;sinus dc.b 127,127,127,127,-127,-127,-127,-127 ;prostokąt
@RomanWorkshop, post #6
;Każda Amiga może generować dźwięk w 4 kanałach (po 2 kanały na każde wyjście audio stereo). ;Kanały nr 0/3 tworzą lewe wyjście, a kanały nr 1/2 - prawe wyjście audio stereo. move.l #$DFF000,A6 ;adres bazowy rejestrów kontrolnych układów specjalizowanych Amigi ;Ustawienie początku danych (tablicy 8-bitowych próbek) sampla do odtworzenia move.l #Wave,A1 ;adres początku danych sampla do odtworzenia move.l A1,$A0(A6) ;zapis adresu początku sampla do rejestrów [AUD0LCH:AUD0LCL] (kanał 0) move.l A1,$B0(A6) ;zapis adresu początku sampla do rejestrów [AUD1LCH:AUD1LCL] (kanał 1) ;Ustawienie długości danych sampla, wyrażonej w słowach (1 = 2 bajty, czyli 2 próbki 8-bitowe) move.w #4,$A4(A6) ;zapis długości danych sampla (w słowach) do rejestru AUD0LEN (kanał 0) move.w #4,$B4(A6) ;zapis długości danych sampla (w słowach) do rejestru AUD1LEN (kanał 1) ;Ustawienie głośności odtwarzania w danym kanale (0-64, 64 = maksymalna głośność) move.w #64,$A8(A6) ;zapis poziomu głośności do rejestru AUD0VOL (kanał 0) move.w #64,$B8(A6) ;zapis poziomu głośności do rejestru AUD1VOL (kanał 1) ;Ustawienie przerwy między odtwarzaniem kolejnych próbek sampla (częstotliwość odtwarzania) move.w #443,$A6(A6) ;zapis liczby cykli opóźnienia do rejestru AUD0PER (kanał 0) move.w #443,$B6(A6) ;zapis liczby cykli opóźnienia do rejestru AUD1PER (kanał 1) ;Wartość opóźnienia 443, powoduje odtwarzanie sampla z częstotliwością ok. 1 kHz. ;Jest to liczba cykli zegara systemowego, która upływa przed odtworzeniem kolejnej 8-bitowej ;próbki sampla. Minimalna wartość wynosi 123/124 cykle dla Amigi pracującej w standardzie PAL/NTSC, ;a maksymalna wynosi 65535. Im mniejsza wartość, tym większa częstotliwość odtwarzania sampla. ;Maksymalna szybkość odtwarzania sampla przez jednoskę DMA, wynosi 28867 próbek (bajtów) na sekundę. ;Aby obliczyć prawidłową liczbę cykli opóźnienia CX dla uzyskania dowolnej częstotliwości odtwarzania, ;należy dokonać następujących obliczeń: CX = cc/(f*sn), gdzie: cc - stała zależna od standardu pracy ;Amigi: 3546895 (PAL); 3579545 (NTSC), f - zakładana częstotliwość odtwarzania [Hz], sn - liczba ;próbek (bajtów) w samplu. ;Włączenie odtwarzania sampla move.w #$8203,$96(A6) ;zapis do rejestru DMACON, ustawienie bitów nr: 15 - SET/CLR, ;9 - DMAEN (włączenie jednostki DMA), 1 - AUD1EN (włączenie kanału 1), ;0 - AUD0EN (włączenie kanału 0). ;Czekanie na naciśnięcie lewego przycisku myszy Wait: btst #6,$BFE001 bne.s Wait ;Wyłączenie odtwarzania sampla move.w #$0003,$96(A6) ;zapis do rejestru DMACON, zerowanie bitów nr: 15 - SET/CLR, ;1 - AUD1EN (wyłączenie kanału 1), 0 - AUD0EN (wyłączenie kanału 0). rts ;Dane sampla muszą znajdować się pod parzystym adresem (wyrównanie do słowa) w pamięci CHIP, ;aby jednostka DMA miała do nich dostęp. ;Każdy bajt to 8-bitowa próbka, określająca amplitudę (poziom) sygnału generowanego na wyjściu audio ;w danym momencie odtwarzania sampla. Amplituda każdej próbki zawiera się w zakresie od -128 do +127, ;co przy ustawionej maksymalnej głośności odtwarzania (64), zapewnia uzyskanie napięcia od -0.4 do +0.4V ;na wyjściu audio. SECTION data,DATA_C Wave: dc.b 0,90,127,90,0,-90,-127,-90 ;sinus dc.b 127,127,127,127,-127,-127,-127,-127 ;prostokąt
@RomanWorkshop, post #11
@RomanWorkshop, post #12
Dziękuję za uwagę.
@ede, post #13
:) no ja czytam uważnie.Chociaż jeden ;)