RosettaCodeData/Task/Musical-scale/68000-Assembly/musical-scale.68000
2025-02-27 18:35:13 -05:00

25 lines
856 B
Text

lea sample(pc),a0
move.l a0,$dff0a0 ; AUD0LCH and AUD0LCL
move.w #32,$dff0a4 ; AUD0LEN = number of sample words
move.w #48,$dff0a8 ; AUD0VOL
moveq #9,d2 ; number of notes -1
lea notes(pc),a0
move.w #$8203,$dff096 ; enable DMA for AUD0
loop: move.w (a0)+,$dff0a6
moveq #50,d1 ; delay 50 frames
waitv1: tst.b $dff006 ; VPOSHR
bne waitv1
waitv2: tst.b $dff006
beq waitv2
dbf d1,waitv1
dbf d2,loop
move.w #1,$dff096 ; turn DMA off again
rts
notes: dc.w 212,189,168,159,141,126,112,106,106,106
; a simple triangular waveform
sample: dc.b 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120
dc.b 128, 120, 112, 104, 96, 88, 80, 72, 64, 56, 48, 40, 32, 24, 16, 8
dc.b 0,-8,-16,-24,-32,-40,-48,-56,-64,-72,-80,-88,-96,-104,-112,-120
dc.b -127,-120,-112,-140,-96,-88,-80,-72,-64,-56,-48,-40,-32,-24,-16,-8