	This file contains notes for users of PSS sound cards who wish to use the 
newly added features of the newest version of this driver.

	The major enhancements present in this new revision of this driver is the 
addition of two new module parameters that allow you to take full advantage of 
all the features present on your PSS sound card.  These features include the 
ability to enable both the builtin CDROM and joystick ports.

pss_enable_joystick

	This parameter is basically a flag.  A 0 will leave the joystick port 
disabled, while a non-zero value would enable the joystick port.  The default 
setting is pss_enable_joystick=0 as this keeps this driver fully compatible 
with systems that were using previous versions of this driver.  If you wish to 
enable the joystick port you will have to add pss_enable_joystick=1 as an 
argument to the driver.  To actually use the joystick port you will then have 
to load the joystick driver itself.  Just remember to load the joystick driver 
AFTER the pss sound driver.

pss_cdrom_port

	This parameter takes a port address as its parameter.  Any available port 
address can be specified to enable the CDROM port, except for 0x0 and -1 as 
these values would leave the port disabled.  Like the joystick port, the cdrom 
port will require that an appropriate CDROM driver be loaded before you can make 
use of the newly enabled CDROM port.  Like the joystick port option above, 
remember to load the CDROM driver AFTER the pss sound driver.  While it may 
differ on some PSS sound cards, all the PSS sound cards that I have seen have a 
builtin Wearnes CDROM port.  If this is the case with your PSS sound card you 
should load aztcd with the appropriate port option that matches the port you 
assigned to the CDROM port when you loaded your pss sound driver.  (ex. 
modprobe pss pss_cdrom_port=0x340 && modprobe aztcd aztcd=0x340)  The default 
setting of this parameter leaves the CDROM port disabled to maintain full 
compatibility with systems using previous versions of this driver.

	Other options have also been added for the added convenience and utility 
of the user.  These options are only available if this driver is loaded as a 
module.

pss_no_sound

	This module parameter is a flag that can be used to tell the driver to 
just configure non-sound components.  0 configures all components, a non-0 
value will only attept to configure the CDROM and joystick ports.  This 
parameter can be used by a user who only wished to use the builtin joystick 
and/or CDROM port(s) of his PSS sound card.  If this driver is loaded with this 
parameter and with the parameter below set to true then a user can safely unload 
this driver with the following command "rmmod pss && rmmod ad1848 && rmmod 
mpu401 && rmmod sound && rmmod soundcore" and retain the full functionality of 
his CDROM and/or joystick port(s) while gaining back the memory previously used 
by the sound drivers.  This default setting of this parameter is 0 to retain 
full behavioral compatibility with previous versions of this driver.

pss_keep_settings

	This parameter can be used to specify whether you want the driver to reset 
all emulations whenever its unloaded.  This can be useful for those who are 
sharing resources (io ports, IRQ's, DMA's) between different ISA cards.  This 
flag can also be useful in that future versions of this driver may reset all 
emulations by default on the driver's unloading (as it probably should), so 
specifying it now will ensure that all future versions of this driver will 
continue to work as expected.  The default value of this parameter is 1 to 
retain full behavioral compatibility with previous versions of this driver.

pss_firmware

	This parameter can be used to specify the file containing the firmware 
code so that a user could tell the driver where that file is located instead 
of having to put it in a predefined location with a predefined name.  The 
default setting of this parameter is "/etc/sound/pss_synth" as this was the 
path and filename the hardcoded value in the previous versions of this driver.

Examples:

# Normal PSS sound card system, loading of drivers.
# Should be specified in an rc file (ex. Slackware uses /etc/rc.d/rc.modules).

/sbin/modprobe pss pss_io=0x220 mpu_io=0x338 mpu_irq=9 mss_io=0x530 mss_irq=10 mss_dma=1 pss_cdrom_port=0x340 pss_enable_joystick=1
/sbin/modprobe aztcd aztcd=0x340
/sbin/modprobe joystick

# System using the PSS sound card just for its CDROM and joystick ports.
# Should be specified in an rc file (ex. Slackware uses /etc/rc.d/rc.modules).

/sbin/modprobe pss pss_io=0x220 pss_cdrom_port=0x340 pss_enable_joystick=1 pss_no_sound=1
/sbin/rmmod pss && /sbin/rmmod ad1848 && /sbin/rmmod mpu401 && /sbin/rmmod sound && /sbin/rmmod soundcore  # This line not needed, but saves memory.
/sbin/modprobe aztcd aztcd=0x340
/sbin/modprobe joystick
