NAME ADCMD_FREE -- free audio channels for allocation FUNCTION ADCMD_FREE is a command for multiple audio channels. For each selected channel (io_Unit), if the allocation key (ioa_AllocKey) is correct, ADCMD_FREE does the following: . restores the channel to a known state (CMD_RESET), . changes the channels allocation key, and . makes the channel available for re-allocation. . If the channel is locked (ADCMD_LOCK) ADCMD_FREE unlocks it and clears the bit for the channel (io_Unit) in the lock I/O request. If the lock I/O request has no channel bits set ADCMD_FREE replies the lock I/O request, and . checks if there are allocation requests (ADCMD_ALLOCATE) waiting for the channel. Otherwise, ADCMD_FREE returns an error (ADIOERR_NOALLOCATION). ADCMD_FREE is synchronous and only replies (mn_ReplyPort) if the quick flag (IOF_QUICK) is clear. Do not use ADCMD_FREE in interrupt code. INPUTS mn_ReplyPort- pointer to message port that receives I/O request if the quick flag (IOF_QUICK) is clear io_Device - pointer to device node, must be set by (or copied from I/O block set by) opendevice function io_Unit - bit map of channels to free (bits 0 thru 3 correspond to channels 0 thru 3) io_Command - command number for ADCMD_FREE io_Flags - flags, must be cleared if not used: IOF_QUICK - (CLEAR) reply I/O request ioa_AllocKey- allocation key, must be set by (or copied from I/O block set by) opendevice function or adcmd_allocate command OUTPUTS io_Unit - bit map of channels successfully freed (bits 0 thru 3 correspond to channels 0 thru 3) io_Error - error number: 0 - no error ADIOERR_NOALLOCATION - allocation key (ioa_AllocKey) does not match key for channel