 GET TimLib:hdr.System
 GET TimLib:hdr.Macros
 GET TimLib:hdr.Division
 GET TimLib:hdr.SeqF

 EXPORT CSeq_Init2
 EXPORT CSeq_AllowFinalize
 EXPORT CSeq_SoundService
 EXPORT CSeq_DefaultConfig
 EXPORT CSeq_Configure
 EXPORT CSeq_SetMixScale
 EXPORT CSeq_GetMixingInfo
 EXPORT CSeq_RegisterHandler
 EXPORT CSeq_UnregisterHandler
 EXPORT CSeq_GetSampleSize
 EXPORT CSeq_ResetMaxWavePercentage
 EXPORT CSeq_Filler_WAV
 EXPORT CSeq_GetPlayingFrequency
 EXPORT CSeq_GetTime

; default area assignment

 AREA |Assembler|,READONLY,CODE

;-------------------------------------------------------------------------------
; CSeq_Init2
;
; In - R0 = globptr
;
; Out -
;-------------------------------------------------------------------------------
 ALIGN

CSeq_Init2 _FNAME
 _DEFPROCC "R12"
 MOV     R12,R0
 BL      Seq_Init
 MOVVC   R0,#0
 _ENDPROC

;-------------------------------------------------------------------------------
; CSeq_DefaultConfig
;
; In - R0 = globptr
;
; Out -
;-------------------------------------------------------------------------------
 ALIGN

CSeq_DefaultConfig _FNAME
 _DEFPROCC "R12"
 MOV     R12,R0
 BL      Seq_DefaultConfig
 MOVVC   R0,#0
 _ENDPROC

;-------------------------------------------------------------------------------
; CSeq_AllowFinalize
;
; In - R0 = globptr
;
; Out -
;-------------------------------------------------------------------------------
 ALIGN

CSeq_AllowFinalize _FNAME
 _DEFPROCC "R12"
 MOV     R12,R0
 BL      Seq_AllowFinalise
 MOVVC   R0,#0
 _ENDPROC

;-------------------------------------------------------------------------------
; CSeq_SoundService
;
; In - R0 = globptr
;      R1 = reglist
;
; Out -
;-------------------------------------------------------------------------------
 ALIGN

CSeq_SoundService _FNAME
 _DEFPROCC "R12"
 MOV     R12,R0
 LDR     R0,[R1,#0]
 BL      Seq_SoundService
 _ENDPROC

;-------------------------------------------------------------------------------
; CSeq_Configure
;
; In - R0 = globptr
;      R1 = reglist
;
; Out -R0 error ptr
;-------------------------------------------------------------------------------
 ALIGN

CSeq_Configure _FNAME
 _DEFPROCC "R4-R11,R12"
 MOV     R12,R0
 MOV     R11,R1
 LDMIA   R11,{R0-R8}
 BL      Seq_Configure
 STMVCIA R11,{R0-R8}
 MOVVC   R0,#0
 _ENDPROC

;-------------------------------------------------------------------------------
; CSeq_SetMixScale
;
; In - R0 = globptr
;
; Out -
;-------------------------------------------------------------------------------
 ALIGN

CSeq_SetMixScale _FNAME
 _DEFPROCC "R12"
 MOV     R12,R0
 BL      Seq_SetMixScale
 _ENDPROC

;-------------------------------------------------------------------------------
; CSeq_GetMixingInfo
;
; In - R0 = globptr
;      R1 = register list
;
; Out -R0 error ptr
;-------------------------------------------------------------------------------
 ALIGN

CSeq_GetMixingInfo _FNAME
 _DEFPROCC "R4,R11,R12"
 MOV     R12,R0
 MOV     R11,R1
 BL      Seq_GetMixingInfo
 STMIA   R11,{R0-R4}
 MOV     R0,#0
 _ENDPROC

;-------------------------------------------------------------------------------
; CSeq_RegisterHandler
;
; In - R0 = globptr
;      R1 = handler
;
; Out -R0 error ptr
;-------------------------------------------------------------------------------
 ALIGN

CSeq_RegisterHandler _FNAME
 _DEFPROCC "R12"
 MOV     R12,R0
 MOV     R0,R1
 BL      Seq_RegisterHandler
 MOVVC   R0,#0
 _ENDPROC

;-------------------------------------------------------------------------------
; CSeq_UnregisterHandler
;
; In - R0 = globptr
;      R1 = handler
;
; Out -R0 error ptr
;-------------------------------------------------------------------------------
 ALIGN

CSeq_UnregisterHandler _FNAME
 _DEFPROCC "R12"
 MOV     R12,R0
 MOV     R0,R1
 BL      Seq_UnregisterHandler
 MOV     R0,#0
 _ENDPROC

;-------------------------------------------------------------------------------
; CSeq_GetSampleSize
;
; In - R0 = globptr
;
; Out - R0 = size
;-------------------------------------------------------------------------------
 ALIGN

CSeq_GetSampleSize _FNAME
 _DEFPROCC "R12"
 MOV     R12,R0
 BL      Seq_GetSampleSize
 _ENDPROC

;-------------------------------------------------------------------------------
; CSeq_ResetMaxWavePercentage
;
; In - R0 = globptr
;
; Out -
;-------------------------------------------------------------------------------
 ALIGN

CSeq_ResetMaxWavePercentage _FNAME
 _DEFPROCC "R12"
 MOV     R12,R0
 BL      Seq_ResetMaxWavePercentage
 _ENDPROC

;-------------------------------------------------------------------------------
; CSeq_Filler_WAV
;
; In - R0 = globptr
;      R1 = reglist
;
; Out -
;-------------------------------------------------------------------------------
 ALIGN

CSeq_Filler_WAV _FNAME
 _DEFPROCC "R4,R11,R12"
 MOV     R12,R0
 MOV     R11,R1
 LDMIA   R11,{R0-R4}
 BL      Seq_Filler_WAV
 _ENDPROC

;-------------------------------------------------------------------------------
; CSeq_GetPlayingFrequency
;
; In - R0 = globptr
;
; Out - R0 =  Frequency in Hz (calculated from last buffer filling interrupt)
;-------------------------------------------------------------------------------
 ALIGN

CSeq_GetPlayingFrequency _FNAME
 _DEFPROCC "R12"
 MOV     R12,R0
 BL      Seq_GetPlayingFrequency
 _ENDPROC

;-------------------------------------------------------------------------------
; CSeq_GetTime
;
; In - R0 = globptr
;      R1 = int array
;
; Out - R1[0] = monotonic time (in cs)
;       R1[1] = timer value
;       R2[2] = timer ticks per second
;       R2[2] = timer max value
;-------------------------------------------------------------------------------
 ALIGN

CSeq_GetTime _FNAME
 _DEFPROCC "R11, R12"
 MOV     R12,R0
 MOV     R11,R1
 BL      Seq_GetTime
 STR     R0,[R11,#0]
 STR     R1,[R11,#4]
 STR     R2,[R11,#8]
 STR     R3,[R11,#12]
 _ENDPROC

 END
