Play recorded sounds: Difference between revisions

Line 918:
}</lang>
 
=={{header|Z80 Assembly}}==
{{works with|Sega Genesis}}
This routine streams an unsigned 8-bit PCM sample to the [[wp:Yamaha_YM2612|Yamaha 2612's]] [[wp:Digital-to-analog_converter|DAC]] in order to play a recorded sound. Unfortunately, the Sega Genesis's Z80 coprocessor can only access a limited pool of memory, so any PCM samples will have to be copied from the cartridge ROM to the shared memory area.
 
<lang z80>dac_enable equ &2B
dac_data equ &2A
 
init_dac:
;hl = pointer to stream
push bc
push de
ld de,&4000
inline_waiting1:
ld a,(de)
rlca
jr c,inline_waiting1 ;loop until bit 7 of (&4000) is clear.
;ready to write
ld a,dac_enable
ld (de),a ;write &2B to reg select
inline_waiting2:
ld a,(de)
rlca
jr c,inline_waiting2
ld a,&80
ld (&4001),a ;write &80 to reg data (dac enable)
;now start streaming.
stream_dac:
inline_waiting3:
ld a,(de)
rlca
jr c,inline_waiting3
ld a,dac_data
ld (&4000),a
inline_waiting4:
ld a,(de)
rlca
jr c,inline_waiting4
ld a,(hl)
ld (&4001),a
inc hl
or a ;exit on null terminator.
jp nz,stream_dac
pop de
pop bc
ret</lang>
 
{{omit from|Applesoft BASIC}}
1,489

edits