67 lines
1.5 KiB
NASM
67 lines
1.5 KiB
NASM
SndTest_test:
|
|
; ch1 max volume
|
|
ld a,%10010000
|
|
out (SND_DATA_REG),a
|
|
; play note ch1
|
|
ld a,%10000000
|
|
out (SND_DATA_REG),a
|
|
ld a,%00100000
|
|
out (SND_DATA_REG),a
|
|
; wait
|
|
ld bc, 1200
|
|
call Time_delay55
|
|
|
|
; ch2 max volume
|
|
ld a,%10110010
|
|
out (SND_DATA_REG),a
|
|
; play note ch2
|
|
ld a,%10100000
|
|
out (SND_DATA_REG),a
|
|
ld a,%00010000
|
|
out (SND_DATA_REG),a
|
|
; wait
|
|
ld bc, 1200
|
|
call Time_delay55
|
|
|
|
; ch3 max volume
|
|
ld a,%11010100
|
|
out (SND_DATA_REG),a
|
|
; play note ch3
|
|
ld a,%11000000
|
|
out (SND_DATA_REG),a
|
|
ld a,%00001000
|
|
out (SND_DATA_REG),a
|
|
; wait
|
|
ld bc, 2400
|
|
call Time_delay55
|
|
|
|
; fade ch1,ch2,ch3
|
|
ld d, 0 ; attenuation
|
|
sndTest_fade: ; BROKEN!
|
|
inc d
|
|
; update ch1 atten
|
|
ld a, d ; use A as attenuation
|
|
and %10010000; place channel number in upper bits to compose attenuation byte
|
|
out (SND_DATA_REG),a
|
|
; update ch2 atten
|
|
ld a, d ; use A as attenuation
|
|
and %10110010; place channel number in upper bits to compose attenuation byte
|
|
out (SND_DATA_REG),a
|
|
; update ch3 atten
|
|
ld a, d ; use A as attenuation
|
|
and %11010100; place channel number in upper bits to compose attenuation byte
|
|
out (SND_DATA_REG),a
|
|
; wait
|
|
ld bc, 100
|
|
call Time_delay55
|
|
; cycle until attenuation is 1111
|
|
cp d %1111
|
|
jp nz, sndTest_fade
|
|
|
|
; wait
|
|
ld bc, 2400
|
|
call Time_delay55
|
|
|
|
; play noise
|
|
|
|
ret |