I've determined the following by inspection of the code.

Ben Avison, 15 Jan 2001


Handlers, as installed by SharedSound_InstallHandler
----------------------------------------------------

On entry:
  R0 = parameter passed in R1 to SharedSound_InstallHandler
  R1 -> buffer to fill
  R2 -> end of buffer
  R3 = flags (see 2107,746/FS)
  R4 = sample frequency
  R5 = sample period
  R6 = fractional step as specified by SharedSound_SampleRate
  R7 = LR volume
  R14 = return address, including PSR if in 26-bit mode
  SVC or IRQ mode
On exit:
  R3 may be updated
  R0-R2,R4-R5,R8-R9,R11-R12,R14,flags may be corrupted


Drivers, as installed by SharedSound_InstallDriver
--------------------------------------------------

(The same applies for the internal log and linear drivers that map onto the
Sound_ChannelHandler and Sound_LinearHandler SWIs respectively.)

Entry points:
  +0 (Install):     An initialisation entry point.
                    On entry:
                      R0 -> fill code in SharedSound
                      R1 = SharedSound's workspace pointer
                      R12 = parameter passed in R1 to SharedSound_InstallDriver
                      [SP] = return address, including PSR if in 26-bit mode
                    On exit:
                      R0 = 0 if install failed, else any non-zero value
                      R1-R12,R14,flags may be corrupted
  
  +4 (Remove):      A finalisation entry point.
                    On entry:
                      R12 = parameter passed in R1 to SharedSound_InstallDriver
                      [SP] = return address, including PSR if in 26-bit mode
                    On exit:
                      R0-R12,R14,flags may be corrupted
  
  +8 (Fill):        Never called (at least in this version).
  
  +12 (SampleRate): Read/set sample rate entry point.
                    On entry:
                      R0 = 0 to read
                      R0 > 0 to set the frequency in R0
                      R12 = parameter passed in R1 to SharedSound_InstallDriver
                      [SP] = return address, including PSR if in 26-bit mode
                    On exit:
                      R0 = current sample rate, irrespective of R0 on entry,
                        or 0 if failed to read sample rate
                      R1-R12,R14,flags may be corrupted
  
  +16 (Volume):     Set volume entry point, or 0 if not available.
                    On entry:
                      R0 = new LR volume (packed half-words)
                      R12 = parameter passed in R1 to SharedSound_InstallDriver
                      [SP] = return address, including PSR if in 26-bit mode
                    On exit:
                      R0 = LR volume scaling (packed half words) that must be
                        performed externally to the driver (eg &FFFF if the
                        driver can perform the requested scaling)
                      R1-R12,R14,flags may be corrupted
  
  +20 (Mixer):      Read/set mixer value, or 0 if not available.
                    On entry:
                      R0 = 0 to read or 1 to set
                      R1 = mixer number
                      R2 = value to set if R0 = 1
                      R12 = parameter passed in R1 to SharedSound_InstallDriver
                      [SP] = return address, including PSR if in 26-bit mode
                    On exit:
                      R1 = number of mixers
                      R2 = current value
                      R3 -> mixer name
                      R0,R4-R12,R14,flags may be corrupted
