;
; sinewave.asm
;
; In this example, which gathers together all of the program segments
; from the Audio Hardware sections, a sine wave is played through
; channel 0. The example assumes exclusive access to the Audio
; hardware, and will not work directly in a multitasking environment.
;
MAIN:
        LEA     CUSTOM,a0       ; Custom chip base address
        LEA     SINEDATA(pc),a1 ;Address of data to
                                ;  audio location register 0
WHERE0DATA:
        MOVE.L  a1,AUD0LCH(a0)  ;The 680x0 writes this as though it were a
                                ;  32-bit register at the low-bits location
                                ;  (common to all locations and pointer
                                ;  registers in the system).
SETAUD0LENGTH:
        MOVE.W  #4,AUD0LEN(a0)  ;Set length in words
SETAUD0VOLUME:
        MOVE.W  #64,AUD0VOL(a0) ;Use maximum volume
SETAUD0PERIOD:
        MOVE.W  #447,AUD0PER(a0)
BEGINCHAN0:
        MOVE.W  #(DMAF_SETCLR!DMAF_AUD0!DMAF_MASTER),DMACON(a0)
        RTS                     ; Return to main code...
        DS.W    0               ; Be sure word-aligned
SINEDATA:                       ; Audio data must be in Chip memory
        DC.B    0, 90, 127, 90, 0, -90, -127, -90
        END