;------------------------------------------------------------------------------
;
;   File    :	AudioPort.i
;
;   Author  :	Stéphane TAVENARD
;
;   $VER:   AudioPort.i  1.3  (22/07/1995)
;
;   (C) Copyright 1995-1995 Stéphane TAVENARD
;	All Rights Reserved
;
;   #Rev|   Date   |			  Comment
;   ----|----------|--------------------------------------------------------
;   0	|05/06/1995| Initial revision
;   1	|06/06/1995| First release (no more C code)                       ST
;   2	|19/06/1995| Added FreeSignal in DeletePort			  ST
;   3	|23/06/1995| Aminet release					  ST
;   4	|09/07/1995| Use now ex_EClockFrequency for period calculation	  ST
;   5	|22/07/1995| Added volume control for 16-bit samples		  ST
;
;   ------------------------------------------------------------------------
;
;   Audio port definitions
;
;------------------------------------------------------------------------------

                     IFND  AUDIOPORT_I
AUDIOPORT_I          set 1

; AU port structure

; Flags (hp_flags)

; Flags to set at open
AUFB_STEREO	     equ   0
AUFB_16BITS	     equ   1
AUFB_MIXING	     equ   6	 ; #5
; Other flags
AUFB_FILTER	     equ   2
AUFB_VOL	     equ   3
AUFB_FREQ	     equ   4
AUFB_NOWAIT	     equ   5
; Masks
AUF_STEREO	     equ   (1<<AUFB_STEREO)
AUF_16BITS	     equ   (1<<AUFB_16BITS)
AUF_MIXING	     equ   (1<<AUFB_MIXING)
AUF_FILTER	     equ   (1<<AUFB_FILTER)
AUF_VOL 	     equ   (1<<AUFB_VOL)
AUF_FREQ	     equ   (1<<AUFB_FREQ)
AUF_NOWAIT	     equ   (1<<AUFB_NOWAIT)


		     rsreset
au_hard_port	     rs.l  1	 ; hard_port ptr
au_flags	     rs.b  1	 ; UBYTE     ; Various flags (AUFB_xxx)
au_signal	     rs.b  1	 ; UBYTE     ; Signal number for Wait()
au_command	     rs.b  1	 ; UBYTE     ; Audio command (AUC_xxx)
au_filter_on	     rs.b  1	 ; UBYTE     ; 0 if filter off
au_frequency	     rs.l  1	 ; ULONG     ; Input samples frequency
au_l_vol	     rs.w  1	 ; UWORD     ; Left volume (0..64)
au_r_vol	     rs.w  1	 ; UWORD     ; Right volume (0..64)
au_l_wave	     rs.l  1	 ; WORD *    ; WARNING ! @ can be changed
au_r_wave	     rs.l  1	 ; WORD *    ; each time you use AUC_WRITE
au_wave_length	     rs.l  1	 ; ULONG     ; Wave length (in samples)
au_mixing_frequency  rs.l  1	 ; ULONG     ; Used if AUFB_MIXING set
au_error	     rs.l  1	 ; LONG      ; 0 if ok
au_sizeof	     rs.l  0

; Commands

AUC_CONTROL	     equ   0
AUC_WRITE	     equ   1
AUC_STOP	     equ   2
AUC_CONTINUE	     equ   3

; Hard port structure

		     rsreset
hp_task 	     rs.l  1
hp_signal	     rs.l  1	    ; Signal bit for audio process
hp_wave_max_length   rs.l  1	    ; Max length of one USER sample buffer
hp_input_l_wave      rs.l  1	    ; USER Left sample buffer	     #5
hp_input_r_wave      rs.l  1	    ; USER Right sample buffer	     #5
hp_active_wave	     rs.l  1	    ; Actual audio buffer playing
hp_input_frequency   rs.l  1	    ; USER input sample frequency    #5
hp_output_frequency  rs.l  1	    ; Output audio frequency	     #5
hp_current_period    rs.l  1	    ; Audio hardware current period value #5
hp_next_period	     rs.l  1	    ; Audio hardware next period value	#5
hp_wave_period	     rs.l  2	    ; Audio hardware waves period value #5
hp_mixing_max_size   rs.l  1	    ; Mixing buffer max size  (bytes) #5
hp_mixing_length     rs.l  1	    ; Mixing buffer current length    #5
hp_mixing_buffer     rs.l  1	    ; Mixing buffer		      #5
hp_wave_max_size     rs.l  2	    ; Audio buffers max sizes (bytes) #5
hp_wave_length	     rs.l  2	    ; Audio buffers current lengths
hp_l_wave_h	     rs.l  2	    ; Audio 8-bit buffers Left (high bits)
hp_l_wave_l	     rs.l  2	    ; Audio 8-bit buffers Left (low bits)
hp_r_wave_h	     rs.l  2	    ; Audio 8-bit buffers Right (high bits)
hp_r_wave_l	     rs.l  2	    ; Audio 8-bit buffers Right (low bits)
hp_flags	     rs.b  1	    ; Current flags
hp_playing	     rs.b  1	    ; set if playing
hp_end_of_play	     rs.b  1	    ; set if last buffer to play
hp_dma_loaded	     rs.b  1	    ; set if Audio dma's activared
hp_channels_bitmap   rs.l  1	    ; Bitmap of Hardware audio channels used
hp_l_vol	     rs.w  1	    ; Left volume (0..64)
hp_r_vol	     rs.w  1	    ; Right volume (0..64)
hp_l_channel_h	     rs.w  1	    ; Hardware audio channel Left (high bits)
hp_l_channel_l	     rs.w  1	    ; Hardware audio channel Left (low bits)
hp_r_channel_h	     rs.w  1	    ; Hardware audio channel Right (high bits)
hp_r_channel_l	     rs.w  1	    ; Hardware audio channel Right (low bits)
hp_audena	     rs.w  1	    ; Hardware register AUDENA save bits
hp_adkcon	     rs.w  1	    ; Hardware register ADKCON save bits
hp_intdis	     rs.w  1	    ; Interrupt bits to disable
hp_intena	     rs.w  1	    ; Hardware register INTENA save bits
hp_intnum	     rs.l  1	    ; Interrupt number used for audio process
hp_port 	     rs.l  1	    ; Audio device port address
hp_old_interrupt     rs.l  1	    ; Old interrupt handler
hp_audio_interrupt   rs.b  IS_SIZE  ; = Interrupt size
hp_sizeof	     rs.l  0

; Flags (hp_flags)

AU_B_STEREO	     equ   0
AU_B_16BITS	     equ   1
AU_B_NOSPLIT	     equ   2
AU_B_FILTER	     equ   3

                     ENDC  ; AUDIOPORT_I
                     