mirror of
https://github.com/cc65/cc65.git
synced 2024-08-18 10:29:06 +00:00
The way we want to use the INITBSS segment - and especially the fact that it won't have the type bss on all ROM based targets - means that the name INITBSS is misleading. After all INIT is the best name from my perspective as it serves several purposes and therefore needs a rather generic name. Unfortunately this means that the current INIT segment needs to be renamed too. Looking for a short (ideally 4 letter) name I came up with ONCE as it contains all code (and data) accessed only once during initialization.
31 lines
918 B
ArmAsm
31 lines
918 B
ArmAsm
.include "pce.inc"
|
|
|
|
.export psg_init
|
|
|
|
.segment "ONCE"
|
|
psg_init:
|
|
clx
|
|
stz PSG_GLOBAL_PAN ; Clear global balance
|
|
|
|
psg_clear_loop:
|
|
stx PSG_CHAN_SELECT ; Select channel
|
|
stz PSG_FREQ_LO ; Clear frequency LSB
|
|
stz PSG_FREQ_HI ; Clear frequency MSB
|
|
stz PSG_CHAN_CTRL ; Clear volume
|
|
stz PSG_CHAN_PAN ; Clear balance
|
|
stz PSG_NOISE ; Clear noise control
|
|
stz PSG_LFO_FREQ ; Clear LFO frequency
|
|
stz PSG_LFO_CTRL ; Clear LFO control
|
|
|
|
cly
|
|
psg_clear_waveform:
|
|
stz PSG_CHAN_DATA ; Clear waveform byte
|
|
iny
|
|
cpy #$20
|
|
bne psg_clear_waveform
|
|
|
|
inx
|
|
cpx #$06
|
|
bne psg_clear_loop
|
|
rts
|