
Universal PnP Sound Card Driver for DOS v0.82a (c) JazeFox 2019-24 (UNISOUND)
=============================================================================

Index of this document:
-----------------------------------------------------------------------------

 1- Background, main features and general description
 2- Usage, options and examples
 3- Supported cards (in the current version)
 4- Special notes about some cards (like the GUS PnP, Maxi Sound..)
 5- EXtended settings. General or per-card (like Orpheus)
 6- Tested systems
 7- Version history


1- Background, main features and general description
=============================================================================

UNISOUND is a Freeware DOS-only tool useful to configure and initialize ISA
PnP sound cards from serveral brands and models and a few non-PnP exceptions
(see section 3 for a full list of supported cards).
It Works on all x86 CPUs, including 8088/8086/80286/386... and higher)

Main features:
-----------------------------------------------------------------------------

- Initialization and configuration of ISA PnP sound cards
- Initialization and configuration of a few non-PNP cards SB, ESS...
- Mixer settings (volume levels and other features)
- Special features of some cards (see section 5)
- Lightweight and fast
- Works even on the oldest PC CPUs 
- Only one file

This tool was created at fisrt for my own use. Finally I decided to release
it because I think it may be useful to someone else. The first objective was
to be able to use some cheap but capable ISA PnP cards from different brands
and manufacturers I had in a drawer on my AT and XT machines, with chipsets 
like ESS, Creative, ALS, Yamaha, CMI... Then I figured that it will be also
very useful to have an all-in-one tool to set up a lot of different cards, 
getting rid of the whole mess of different files, configurations, CONFIG.SYS
and AUTOEXEC.BAT ugly lines. UNISOUND is small, fast and easy to use.
isapnptools and other solutions are ok, but they miss important propietary
initialization sequences, special cases, mixer settings...

The main problem when you want to use your sound cards is the
configuration and initialization, as it depends on a lot of stuff, like:
The type of CPU you have, if the machine has a PnP BIOS or not (usually a
486 machine or lower doesn't have it), the PnP software to use (CTCM/CTCU
for Creative cards, Intel ICU for others, propietary software for others)
so finally you end up having a lot of files (ICU have more than 290 files!!)
and a big mess of CONFIG.SYS and AUTOEXEC.BAT lines. (I also got rid of the
DIAGNOSE.EXE and AWEUTIL /S for non-PnP SB16/AWE cards, adding support for
them in this tool.)

Tired of all that stuff, I wanted to do something to minimize everything
involved to my card's initialization. Only one file, very small size, 
(in fact it could be used to be fitted even in a floppy disk together with
a game if you want), and no need for anything else to get a card working, 
with mixer settings (Master vol, Wave/DAC vol, FM/Synth/WT vol, Line-in vol,
 Mic vol, CD vol and some more for a few cards like Trebble, Bass...).
Some resources are disabled by default (Modem, IDE...) Well, IDE is 
disabled by default but it is user-configurable with a custom parameter in
BLASTER environment variable Cxxx. Check the Usage section (2) for more 
info on this.

This tool has taken a lot of time, researching over technical 
documentation of the card's/chip's manufacturers, reverse engeneering, and
having some headaches, too. To initialize some cards properly, the PnP part
is not enough, as a lot of them need further initialization sequences that
in most cases are bad documented or no documented at all, or are obscure.
UNISOUND tries to initialize the cards fully, PnP part, propietary init part
and also mixer defaults, so it pretends to be real "Plug and Play".

As I made this tool for my own needs initially, and as I am not an expert,
it may have a lot of bugs. **Use at your own risk**

**IMPORTANT WARNING**:
This tool does *NOT* check for resource conflicts, so if you configure your
cards with already used ports, IRQs, DMAs... you may notice problems, like
hangs, corruptions, even damage to your data if you are not careful. You
have been warned!! I am not responsible for any damage.
In addition, this tool does not check if the settings you provide are right
or wrong (only very basic check like usual ranges of addresses and IRQs...,)
and will try to avoid some known issues with duplicated DMAs in some cards...
you are supposed to know what are you doing. *Use at your own risk!!*

This tool is FREEWARE! You can use an distribute it freely. If you paid for
it you have been scammed!

This tool can be bundled with other programs or games freely without asking
for permission, in any media format like floppy, CD, ISO... 


2- Usage, options and examples
=============================================================================

How does it work?
-----------------

The most common usage is in your AUTOEXEC.BAT, setting a BLASTER var first.
Example for one card:

SET BLASTER=A220 I5 D1 T4 J200 P330
UNISOUND.COM /V70

GUS PnP example:

SET ULTRASND=240,3,3,11,11
UNISOUND.COM /V70

UNISOUND can be launched without options, with optional command line 
options and with/without a BLASTER/ULTRASND environment variable present
(before launch). It doesn't consume RAM. It is not a TSR (and it will never
be), it doesn't require mem extenders, XMS/EMS...
You can use it of course in old machines (XT, AT, 386, 486..) without PnP
BIOS, but even with a PnP BIOS, you can override the values using UNISOUND.
So no problem to use it in more modern machines like pentiums, K6-2...

UNISOUND (without options): initializes 1st PnP card found in the system
with internal default resource settings and the following Mixer volume 
defaults: ~85% Master vol, 80% Wave vol, 80% FM/Synth vol, 0% Line in vol,
0% Mic vol, 0% CD vol. And for compatible cards, Treble and Bass levels 
are 50% by default, PC SPeaker-in 0%, 3D: off.

The tool default values, if no environment variable is found, are (optional 
args for some cards with special resources are between brackets):

For SB or SB compatible cards:
ADDR: 220, IRQ: 5, DMA1: 1, DMA2: 1, MPU: 330, (AWE: 620), (WSS: 530), 
(JOY: 200), (CD-IDE: 0), (OPL: 388), (MPUIRQ: 9), 
(CMI WSS IRQ:0), (CMI WSS DMA:0)

For GUS PnP:
ADDR: 240, CODEC: 34x, DMA1: 3, DMA2: 3, IRQ: 11

For the GUS PnP, the usual format of ULTRASND env var is:
ULTRASND=240,3,3,11,11

If BLASTER (or ULTRASND for GUS PnP) environment var is found, UNISOUND will
use its values to configure the card. If not, Unisound default values will
be used.

Usage: UNISOUND [options]

Options:
   /Cn    Select PnP card number 'n' to initialize/read (n = 1 to 9)
   /CS    Initialize non-PnP Creative card (SB16 & AWE32)
   /CL    List all PnP cards present in the system
   /R     Read PnP card current settings only (can be used with /Cn)
   /D     Disable PnP sound card (can be used with /Cn)
   /Vnn   Set Master Volume level to 'nn' % (00-99)
   /VWnn  Set Wave Volume level to 'nn' % (00-99)
   /VFnn  Set FM/Synth/WT Volume level to 'nn' % (00-99)
   /VLnn  Set Line-in Volume level to 'nn' % (00-99)
   /VCnn  Set CD Volume level to 'nn' % (00-99)
   /VMnn  Set Mic Volume level to 'nn' % (00-99)
   /VPnn  Set PC Speaker-in Volume level to 'nn' % (00-99) (Creative)
   /VTnn  Set Treble level to 'nn' % (00-99) (Compatible cards)
   /VBnn  Set Bass level to 'nn' % (00-99) (Compatible cards)
	  In ES189x cards, set AuxB (External WT) level (00-99)	
   /VRnn  Set FM Reverb amount (00-99) (SB AWE only)
   /VUnn  Set FM Chorus amount (00-99) (SB AWE only)
   /Xxxx  eXtened cards settings (see section 5 for details)
   /NOPNP Detect & init some Non-PnP cards (See end of section 3)
   /H /?  Help screen

--

- The /D Command line option is useful to disable a PnP sound card.
  This option will free all card's resources (I/Os, IRQs, DMAs) and will
  disable all logical devices. The card will return to uninitialized state.

If you have more than one PnP card installed in your machine, before the 
first try, it is recommended to start with UNISOUND /CL to list them 
(Note that altough it is not recommended to have several cards of the same 
type installed at the same time to avoid conflicts, it is possible to have
them working if you configure them well. GUS + SB are a very good combo!).
If you only have 1 PnP card (sound card or not), use UNISOUND as is.

If you run UNISOUND and your cards is listed as "Unknown", please check
if there are other PnP cards or onboard chips in your system that could
be PnP (Like network cards or gameport cards), to see the list, please
use UNISOUND /CL and then check the position of your sound card. Continue
reading below to check the /CL examples.

Help note: It is possible to free some resources on some cards (not all)
setting a value to zero 0 (except DMA. To disable a DMA, set it to 4).
Example: I have a separate MPU card and I want to free the MPU IRQ of
my ADI PnP card. Solution: Set U0 in the BLASTER variable before running
UNISOUND and that IRQ will not be used by the card. Use with caution! Do not
set essential ports to zero, because the card could behave erraticaly.

With /CL a numbered list of the cards is presented like this:

------------------------------------------
Card #1 [GRV0001] Ultrasound Plug & Play
Card #2 [ESS1868] ESS ES1868 Plug and Play Audiodrive

If you have more than one card, like in this example, you can use the /Cn 
option to select which card you want to initialize (let's do with ES1868, 
assuming that you have set a BLASTER env var before):

UNISOUND /C2 

Then you'll see something like this:

------------------------------------------
Card #1 [GRV0001] Skipped.
PnP card found: [ESS1868] ESS ES1868 Plug and Play Audiodrive
BLASTER environment var found! Loading settings...
ADD:220 OPL:388 MPU:330 IRQ:5 DMA1/1 JOY:200
Initialization done.
ESS Mixer [VOL:85 WAV:80 FM:80 LIN:50 CD:0 MIC:0]

Ok! if the values you provided are good, the card sould work. Now if the
master volume is too high you can use: UNISOUND /C2 /V50 for example (that
will set the master volume to 50%), or if you don't use line-in and want 
to avoid input noise, use /VL00.

If you only want to check the current settings of a PnP card, use:

UNISOUND /R (or UNISOUND /R /C2 in the ESS example we saw before).

It will work (if the card support resource reading), even if the card has
been not initialized (will show zero or weird values), or if it has been
initialized by other PnP tool (like ICU or CTCM) or even if it has been
configured by a PnP BIOS.

Configuration with the BLASTER environment variable:
-----------------------------------------------------------------------------

In addition to the regular BLASTER parameters, this tool also accepts new
custom ones (optional). All of them are explained here (example values):

A220 I5 D1 H1 P330 E620 W530 J200 C168 Y10 Rxxx M310 F388 U9 Q0 K0

  A: SB compatible base address (220 by default)
  I: SB compatible IRQ number (5 by default)
  D: 1st DMA (1 by default)
  H: High DMA or 2nd DMA (depends on the card. Default value too).
  P: MPU (MIDI) port address (330 by default). P0 to disable (not all 
     cards might allow to disable this port!)
  E: SB AWE base address (620 by default). Only for cards with EMU8000 chip.
  W: WSS address for cards that require it (530 if not specified). It is
     better not to use this if you don't know what you are doing.
  J: Joystick game port address (if you put J0 the port is disabled)
  C: IDE port address (disabled by default). If you put a value, it will
     activate the IDE port (if address is valid). Valid values: 
     170 (secondary), 1E8 (tertiary), 168 (quaternary, recommended). Please
     take into account that some cards have only 1 possible value 
     (usually 170), so you can try and test. C0 will force disable it.
     IRQs for this port are calculated automatically (10, 11, 15) based
     on the address, so it is not needed to specify them, but if you want
     to set a custom IDE IRQ value, please use "Y" value (see below).
     Anyway as this tool is launched after config.sys, if you want CD-ROM 
     support you'll have to load CD driver (like vide-cdd.sys) with device 
     driver loaders like DEVLOAD after Unisound IDE port activation.
  Y: IDE IRQ (Only if "C" value is set too). Optional.
  R: Address for cards that require a CONTROL register to configure internal
     stuff of the card. You should not use this parameter, every card has 
     its own value as default internally in the tool. Caution! Use this ONLY
     if you know what you are doing!
  M: Special option for Maxi Sound 64 series cards with DREAM SAM chips, it
     is the primary MPU port (P is the internal port, needed to upload 
     firmware, but you can swap them playing with P and M values).
  F: FM/OPL Base address. Default is 388. F0 to disable (not all cards allow
     to disable or change this port!). Accepted values: 300 to 3FF, and 0.
     This option is useful, for example, to disable or remap CQM synth in
     SB cards if you use other card with a genuine OPL chip tied to 388,
     or useful for the future "AWE64 Legacy" project, with a genuine OPL.
     Note that a few games (like Dynblaster) will try to use FM synth on
     SB ports 2x0, and it will FM output sound (in SB with CQM for example)
     anyway. Set FM volume to 0 to avoid it. Example values: F398, F3A8...
  U: MPU IRQ (for cards that require it. For cards that don't use a MPU IRQ,
     this parameter will be ignored). It is optional. If not set, best known
     value for each card will be used.
  Q: (only for some cards) WSS IRQ or 2nd IRQ
  K: (only for some cards) WSS DMA or 3rd DMA

As every card has its own oddities and quirks, some values are fixed and not
user-configurable for now (some special control ports...). 

Look at the section 4 "Special notes about some cards", to check special
situations using some cards and systems.

For non-PNP SB16/AWE cards (those who need DIAGNOSE.EXE and/or AWEUTIL/S),
use UNISOUND /CS, UNISOUND /NOPNP or simply UNISOUND (slower, asi it will
look for PnP cards first, and if no PnP cards found, the tool will try to
find and configure a SB16/AWE non-PNP card). You can use /Vxxx options to
adjust volumes too.

For other non-PnP cards (only a few selected models), use UNISOUND /NOPNP
(Check details at the end of section 3).



3- Supported cards in the current version (v0.82a):
=============================================================================

Supported PnP Cards
*****************************************************************************

Creative:
-----------------------------------------------------------------------------
- All Sound Blaster 16 cards, including all ViBRA16/S/C/XV/CL, Phone Blaster
- SB AWE32, AWE64, SB32PnP. EMU8K initialization included 
  (to enable FM and built-in wavetable sound, so no AWEUTIL /S needed. No 
  soundfonts loading though).
- Creative AWE Upgrade card (CT1920) init.

On all Creative cards, DSP version is displayed at init time.
On AWE cards, total memory detected is displayed at init time.
Check section 6.1 for a complete list of successfully tested Creative models

Control of FM Reverb (/VRnn) and Chorus (/VUnn) effects amount is supported,
only for SB AWE32/64 cards (Values 00 to 99). Note: This works on AWE cards
with integrated CQM and with discrete Yamaha OPL/CQM chips, if they're routed
through the EMU8K chip. Only a few exceptions are not routed, like CT3930.


ESS AudioDrive:
-----------------------------------------------------------------------------
- ES1868F single chip cards
- ES1869F single chip cards
- ES968 + ES688 dual chip cards in PnP mode
- ES968 + ES1688 dual chip cards in PnP mode
- Guillemot Maxi Sound 64 (ES1868 + SAM9407 versions only) SAM9407 firmware
  uploading and initialization included (to unmute output sound). Firmware
  itself not included


Yamaha:
-----------------------------------------------------------------------------
- YMF715, YMF718, YMF719 cards. Models OPL-SAX, OPL-SA3, AudioTrix XG-3D...
  Only ISA PnP models. Usually laptop integrated Yamaha chips are BIOS-PnP
  based, and those are not supported for now.


Avance Logic:
-----------------------------------------------------------------------------
- ALS007 chip
- ALS1xx chips (ALS100, ALS100+, ALS120)
- ALS200

Diamond Technologies:
-----------------------------------------------------------------------------
- DT-0197H / DT-0196H chip cards (clone or re-branded ALS chips).


Aztech:
-----------------------------------------------------------------------------
- AZT2320 chip based cards.


Rockwell:
-----------------------------------------------------------------------------
- RWA01x (WaveArtist) chip cards, including special Zoltrix cards with RWA011


OPTi:
-----------------------------------------------------------------------------
- OPTi 82C924 in PnP mode
- OPTi 82C925 in PnP mode
- OPTi 82C931 and 82C933 chip based cards.


Crystal (Cirrus Logic)
-----------------------------------------------------------------------------
- CS4232 / CS4235 / CS4236/B / CS4237/B chip based cards 
- CX4236/B / CX4237/B chip based cards 
- Special support for Orpheus 1 and Turtle Beach Malibu cards (CS4237B)


C-Media / AD-CHIPS:
-----------------------------------------------------------------------------
- CMI8330 chip based cards. (like Audio Excel branded cards)
- CMI8329A based cards (like Zoltrix branded cards )


AD SoundPort (Analog Devices):
-----------------------------------------------------------------------------
- AD1816/A, AD1815, AD18max10 (like Terratec and Aztech branded cards)
- AD1812 

*Note1: Some Terratec cards (Like Base-1) based on AD1816 with ATMEL EEPROMS
        with some chipset combos, in very rare cases will need to use /FS
        option to be detected correcly.
        
*Note2: AD ISA cards' WSS mode is NOT compatible with DOS software. It's
        a design issue on the chips, not an initialization issue. 


Advanced Gravis / AMD Interwave / Compaq/STB Ultrasound :
-----------------------------------------------------------------------------
- Gravis Ultrasound PnP (AMD Interwave chip). Centered in Classic GUS 
  compatibility only (No SB emu, no MPU, optional IDE and Joy port). 
  The amount of RAM installed is displayed at init time.
  ROM name and size is displayed at init time (Informative only)
- Compaq Interwave / STB Ultrasound pro 32. With support for TEA6330T chip.


Roland:
-----------------------------------------------------------------------------
- Roland Super MPU II MIDI PnP card. Not strictly a sound card, it's
  a MPU card only, but it's supported for initialization.


Ensoniq:
-----------------------------------------------------------------------------
- Limited support for Ensoniq Soundscape VIVO card. Only WSS digital 
  sound, line-in control, CD-in control and joyport are working. Any other
  function will require the original TSR and drivers.


Turtle Beach:
-----------------------------------------------------------------------------
- Limited support for Turtle Beach Multisound Pinnacle card (PnP mode) 
  Only joyport and MPU (onboard Kurzweil wavetable) are available. There are
  several board revisions of this card, with slightly different behaviours. 
  If your card is not recognized, please add the option /FS and try again. 
  Also note that it's possible that your card revision doesn't work at all.


Supported non-PnP Cards (EXPERIMENTAL! Use at your own risk) /NOPNP option
*****************************************************************************
- All SB16 and AWE32 non-PnP (software-configurable) cards
  (No need for DIAGNOSE.EXE /S to init!). In AWE32 EMU8K initialization is 
  included to enable FM and built-in wavetable sound, so no AWEUTIL /S needed.
  No soundfonts loading though.

- ESS ES1688. Configurable resources: IRQ, DMA, MPU addr, MPU IRQ, joyport.

- ESS ES688. Configurable resources: IRQ, DMA.

- OAK OTI601 "Mozart" chip based cards. All revisions. (based on OPTi 82C928)
  Configurable: SB/WSS address, IRQ, DMA, joyport, SB/WSS mode.
  NOTE: Very bad compatibility with games and programs. Must re-initialize 
  the card after running some games/programs. SB mode digital audio is mono
  only. FM/OPL3 and WSS mode can be used in stereo.

- OPTi 82C928 / MAD16 (non pro) cards. The same as the "Mozart" cards. 
  Almost the same chip.

- OPTi 82C924/925 in non-PnP mode. Initialization options are the same as
  the PnP versions.

- OPTi 92C930 chip based cards. 
  Configurable resources: Base Address, IRQ, DMA, MPU port, MPU IRQ, Joyport.
  No support for CD interface. SB and WSS can be used by default without 
  having to change mode.

Resource assignments are read from BLASTER env var if present, as usual.

Mixer volume settings compatible with each card are supported as usual with
/Vxxx options. Check Usage in section 2.

Example: To configure an OPTi 82C930 with IRQ 7, DMA 1, no joyport, and
         line volume 60%, and FM volume 50%:

        SET BLASTER=A220 I7 D1 J0
        UNISOUND /NOPNP /VL60 /VF50

NOTE: This feature is *EXPERIMENTAL*. Please, plug only ONE card in the
system to avoid problems. Support for more Non-PnP cards or more Non-PnP
features is not planned in any way in the near future.

Option for non-PnP card detection: /NOPNP 



4- Special notes about some cards and systems 
=============================================================================

*Notes about Gravis Ultrasound PnP and compatible cards:
-----------------------------------------------------------------------------

This card has been added to this tool mainly to be used as a stand alone
card configured with Classic GUS support or used paired with a Sound Blaster
or compatible (with different resource settings, of course).
Only the Base address (2x0), codec address (3xx), main IRQ and 2 DMAs
(play-rec) will be configured, the remaining resources will be disabled 
(Game port, SB emu resources, MPU address. IDE and Joy are optional). 
EXtended option to enable GUS PnP IDE port: /XGCn where 'n' is the IDE
port: 2 = secondary, 3 = tertiary, 4 = quaternary (recommended). and joyport
can be enabled using /XGJ (See section 5.5)

This tool will look for the ULTRASND environment variable, if found, 
the card will be configured using its values, and then will initialize the 
Interwave as classic GUS compatible, and with default mixer settings 
(you can adjust volumes with /Vxxx options). It is mandatory to have the
card populated with some RAM modules!. If no ULTRASND variable is found,
it will be configured as: 240,3,3,11. *check if you have free resources*

No IWINIT needed. Only ULTRASND env variable and this tool. 

If you want Classic GUS Wavetable support (optional), you only have to 
add the ULTRADIR env variable pointing to a directory with 2 items: 
the ULTRASND.INI file  and the MIDI directory with the instrument 
patches inside. (you would need to find original instrument patches on
the net or on the original installation disks).

Note that this is a limited use of the GUS, and if you want the MPU emu, 
SB emu... you will need the official drivers. But I added this card to 
Unisound because with the basic classic GUS support it provides, it works
very well for old GUS uses like a lot of demoscene demos/intros, games 
like Epic pinball/Silverball... and with the patches folder, with Dark
forces, Descent... or simply to be paired with a SB and have the full
experience without crappy emulation.

You can use /XGL EXtended option to limit the RAM to 512K for compatibility 
with some demos/games, like Absolute Pinball. 

- Since v0.80a, full suport for the GUSPnP compatible Compaq Interwave / STB
  Ultrasound 32 Pro card, including the TEA6330T chip providing TREBLE/BASS
  control.

*Notes about cards with WSS (Windows Sound System) support:
-----------------------------------------------------------------------------

Some cards have WSS support, but every model has its quirks. For example,
Yamaha cards, CMI cards and OPTi 931/33 cards, are capable of playing
digital audio via SB and WSS at the same time (well, with the same config),
while some others, like OPTi 924/25, Aztech 2320 or some others are not.
By default, SB compatibility is selected by the tool. For cards with SB/WSS
mode switch compatibility, you can select WSS or SBPro mode with an 
eXtended option (/XWSS). See section 5 for more info.

A few cards with WSS ports at config/init time, like AD181x chips, are not
compatible with standard WSS port/register mapping in DOS, so those will
only work in WSS mode in Windows.


*Notes about using some of these cards on 8 bit ISA slots (or XT machines):
-----------------------------------------------------------------------------

Some cards work without issues on 8 bit slots / XT machines, but others
doesn't. It usually has something to do with the use of the 16 bit address
lines that some cards need to use. For instance, the AWE32/64 EMU8K can not
be initialized, because high bits are ignored when inserted on 8 bit slot 
and you try the initialization (It will say "done", but it will not work).
So for the cards that need EMU8K init to unmute the FM/Wavetable sound, only
the digital sound will work. 
The same happens with the GUS PnP, the initialization fails (Will show 0K
RAM detected and internal registers will not be set).
The Maxi sound 64 has the same problem trying to upload the SAM firmware.

Remeber to use only IRQ and DMA settings present in 8 bit slot, to get them
working: IRQs 3/4/5/6/7/9 and DMAs 1/3.

Try your cards with UNISOUND, they may work well on XT / 8 bit slots!!


*Notes about Guillemot Maxi Sound 64 series (ES1868 + SAM9407 only!):
-----------------------------------------------------------------------------

This card has an special (bad design in my opinion) oddity; the card after
standard PnP initialization and Mixer settings configured, does not output
sound by default (FM/Digital), because the ESS chip sound output channels
are routed through the SAM chip. The SAM chip need a firmware to be uploaded
in order to configure itself and enable sound output. With the original 
drivers you had to use a tool and some INIs to upload the firmware and 
enable sound. Since version 0.52b of Unisound, the firmware uploading
is implemented. In order to get it to work, you have to get the firmware
binary (you can find it in original driver package), rename it to SAM9407.BIN
and put it in the current directory (the one from where you are calling 
UNISOUND). It will upload it automatically on every initialization. 
This card is supported as an SBpro compatible card. This tool does not have
the ability to upload soundfonts, so if you neeed them, you'll have to use
official tools.


*Notes about ESS ES1869 cards in very slow systems (XT/8088/8086/286)
-----------------------------------------------------------------------------

In very slow systems (about 286/12 or less), The initialization works,
but value readings (UNISOUND /R) does not. If you run UNISOUND /R after
previous card initialization, the values returned will be zero and the
card will stop working. In that case you'll have to run UNISOUND again
to re-initialize it. Note that using UNISOUND /CL after previous card
initialization will make the card to not work too.
So, only for the these cards + only these slow systems, init the card
only, and it will work well.


*Notes about Crystal CS4232 based cards
-----------------------------------------------------------------------------

Since v0.71c these cards are supported, the card works perfectly, but 
initialization process can leave card in a status that is incompatible with
furter PnP interactions in some machines (this is a known behaviour and 
happens also with original drivers and other PnP tools), so if you try to
run UNISOUND again after 1st initialization, it will probably hang. This
includes any interaction (/R , etc..), so run UNISOUND only one time with
these cards, just in case.


*Notes about MK1869 / ES186x cards and AuxB (Wavetable header volume)
-----------------------------------------------------------------------------

Since v0.82a, AuxB is supported as a separated option. Will work with /VBxx 
option, like this: If /VBxx is not specified, behaviour is as usual: AuxB is 
controlled with /VFxx value together with FM and onboard WT. If /VBxx is 
specified, /VFxx will control FM volume and onboard Wavetable and /VBxx will 
control AuxB separately. Example uses with MK1869: /VF00 /VB90 will mute 
onboard WT and will put external WT board to 90% volume. And /VF80 /VB00 will
mute external WT and will put onboard WT to 80% volume.


5- EXtended settings. General or per-card
=============================================================================

5.1- General eXtended settings
-----------------------------------------------------------------------------

/XXF  Force detection of PnP cards with a partially corrupted EEPROM data
      (bad header checksum). Note that at least the critical parts of the
      card's eeprom should be correct for the card to be properly detected
      and initialized. Try this option if your card is not detected.

/XNET  It's a workaround for Realtek (and compatible) ISA PnP network cards
       when paired with other ISA sound card(s). Those net cards  have a bad
       hardware PnP implementation that deactivates LDs (logical devices) just
       when scanning for PnP cards without configuring them. Use this switch
       when initializing your sound card to try to reactivate network. It's
       recommended to use UNISOUND before loading net packet driver.



5.1.1- General eXtended setting for 3D sound for compatible cards 
-----------------------------------------------------------------------------

/X3Dn  Where the possible values of 'n' depends on the supported card:

  * CMI8330A: Sensaura HRTF 3D Positional audio ON (n = 1) or OFF (n = 0)
  * ALS100+/ALS120: 3D Sound Effect Proccessor ON (n = 1) or OFF (n = 0)
  * ES1869: (n = 0 to 9) 0 = disabled, 1-9 Spatializer 3D VBX effect amount.
  * YMF71x: (n = 0 to 7) 0 = disabled, 1-7 3D Enhanced (Wide) effect amount.
  * AD18xx: (n = 0 to 9) 0 = disabled, 1-9 Phat 3D effect amount.
  * CS4237: (n = 0 to 9) 0 = disabled, 1-9 SRS 3D effect amount. 
    (9 combinations of Center / Space available)
  * Creative: 3D ON (n = 1) or OFF (n = 0). Only for Creative cards with 3D
    capabilities (like AWE64, some AWE32 like CT3980 or some SB16 like CT2950)
  * OPTi 82C933: 3D ON (n = 1) or OFF (n = 0).

(Default value is always 0 or OFF if this command line option is not set)


5.1.2- General eXtended setting to control Output Gain / Loudness
-----------------------------------------------------------------------------

/XXGn  Where the possible values of 'n' depends on the supported card:

  * CMI8330: Loudness ON (n = 1) or OFF (n = 0) (default)
  * Creative: n = 1,2,4 (Gain x1, x2, x4 respectively). Some models don't have
    gain control, on those, the setting won't have effect.e.g.: Vibra16C/S/XV 
    or some AWE64s like CT4520. Others like CT4500 do have it). Default: x2


5.1.3- General eXtended setting to change SB / WSS mode on compatible cards
-----------------------------------------------------------------------------

/XWSS  To switch to WSS mode.
       Default if option not used: SB mode.

Supported cards:
  * Aztech 2320
  * OPTi 82C924
  * OPTi 82C925
  * OPTi 82C928 / OAK OTI601 "Mozart" (non-PnP)


5.2- EXtended settings for Orpheus card
-----------------------------------------------------------------------------

Command line options are available for the C4237B based "Orpheus" card 
from keropi / Marmes (VOGONS forums). 

The available switches are:

/XOFx (for FM control), /XOSx (for S/PDIF control) and /XOMx for internal
      Crystal MPU control (NOT the PCMIDI).

Options:

/XOFi (Switch to internal CrystalFM)
/XOFe (Switch to external Yamaha OPL3) (Default)

/XOS1 (Enable S/PDIF output)
/XOS0 (Disable S/PDIF output) (Default)

/XOM1 (Force-enable internal Crystal MPU). If MPU is disabled in your card's
       EEPROM, you can force-enable it with this option. Remember to configure
       different MPU I/O ports and IRQs for both MPUs (internal can be 
       configured with 'P' and 'U' options in BLASTER var, as usual).

/XOM0 (Force-disable internal Crystal MPU). If MPU is enabled in your card's
      EEPROM, you can force-disable it with this option.

If these switches are missing, defaults are: 
External Yamaha OPL3, Disabled S/PDIF and about MPU, it depends on the EEPROM
values of your card. If MPU is enabled in EEPROM, it will be enabled by 
default when initialized by UNISOUND. If it's disabled in EEPROM, it will
be disabled by default when initialized by UNISOUND.


5.3- EXtended settings for Turtle Beach Malibu
-----------------------------------------------------------------------------

- S/PDIF eXtended option for Orpheus (/XOSx) can also be used on Turtle
  Beach Malibu cards. (See 5.2)


5.5- EXtended settings for GUS PnP and AMD Interwave compatible cards
-----------------------------------------------------------------------------

/XGCn EXtended option to enable GUS PnP IDE port
      where 'n' isthe IDE port: 2 = secondary, 3 = tertiary, 
      4 = quaternary (recommended).

/XGL  EXtended option to limit the RAM to 512K for compatibility with some
      games, like Absolute Pinball. 

/XGJ  EXtended option to enable Joystick port.


5.6- EXtended settings for ES1868/ES1869 PnP cards
-----------------------------------------------------------------------------

/XEA  EXtended option to try an alternate init method if the normal init
      is not working.


5.7- EXtended settings for generic/custom Crystal CS4237 cards with Ext OPL
-----------------------------------------------------------------------------

Like Orpheus option for switching FM/OPL between internal and external:

/XOFi  Switch to internal CrystalFM (default)
/XOFe  Switch to external Yamaha OPL3 (If external chip is available)


5.8- EXtended settings for Rockwell RWA010/RWA011 cards
-----------------------------------------------------------------------------

/XRU   Try to unmute special cards with external 3D like Zoltrix Radio



6- Tested systems
=============================================================================

This tool has been tested successfully on several different systems:

1- 486 DX-50, Octek Motherboard with crappy OPTi chipset, 8Mb RAM 
   (30 pin SIMMS), ISA slots only, no VLB or PCI, 256K cache. OAK VGA 1Mb

2- Pentium 100Mhz, Soyo SY-5VA motherboard, Intel VX chipset, 16Mb EDO RAM,
   256K cache, PnP BIOS.

3- Generic DTK turbo XT motherboard with 640K RAM, 6 8-bit ISA slots. CPU
   Siemens 8088-10. Paradise VGA 8-bit. (only some cards work in 8bit slots,
   read about it in section 4)

4- 386 DX-33 from AMD, PCChips unknown model board, crappy OPTi chipset,
   2Mb RAM, 128K cache. Trident 9000 1Mb VGA.

5- K6-2 500, DFI K6XV3+ motherboard, VIA chipset, 128Mb RAM PC-100, 
   3 ISA slots, SiS AGP VGA 8Mb

6- A lot more, like P233 with Intel TX chipset, P2 with intel LX chipset,
   Cyryx 486 DX-40, DX2-80, Intel and AMD 386 SX, TI and CX 586SXLC2,..,...
   
Notes: The 2 boards with OPTi chipset (386 & 486): high DMAs are not working
(like with the original drivers of the cards). Cards that allow low DMA
assignation for the HDMA, work well (Example: SB16 with same DMA and 
HDMA = 1, are OK). In fact, default Unisound values for DMA,HDMA are = 1 for
better general compatibility.

6.1- Successfully tested cards models:
--------------------------------------

Creative:
- SB16 / ViBRA PnP: CT2950, CT2960, CT2980, CT2940, CT4180, CT4170, CT2890
- SB16 non-PnP: CT2290, CT2770, CT3120, CT2260, Acer Magic S30, Media
  Forte SF16 series
- AWE32 PnP: CT3600, CT3620, CT3670, CT3980, CT3990.
- AWE32 non-PnP: CT2760 v1 and CT2760 v3, CT3900, CT3930
- AWE64 PnP: CT4380, CT4500, CT4520, CT4390 (Gold)

For now, all the other cards from other brands/chipsets, are covered in
the section 3 itself. If the list grows, it will be put here. 


7- Version history:
=============================================================================

v0.10b
-----------------------------------------------------------------------------
- Initial version. 
- Usable in really old CPUs (8088/8086/NEC V20/V30, 286...) and higher.
- Support for cards that don't require extra propietary init seqs only.
- Focused only in SB compatibility modes of the cards.
- No mixer defaults init yet.(Some cards will have very quiet/silent output)
- Fixed non-configurable resources (will change this soon) A220, I5, D1 (H1)
- Cards supported in this first version:
  ** ESS ES1868 (single chip based cards only)
  ** Creative SB16 PnP versions (And ViBRA/S/C/XV/CL)
  ** Creative PnP AWE/32/64 in SB16 mode only (no wavetable/FM init)
  ** Rockwell RWA01x chip based cards.
- Extra resources (like game port, MPU, IDE...) are disabled automatically.
- After a timeout, if no PnP cards are found, the program will end.

v0.21b
-----------------------------------------------------------------------------
- Added support for new cards:
  ** Avance Logic ALS1xx chipsets (tested ALS120 and ALS100Plus) 
  ** ESS ES968+ES688 dual-chip based cards (type 1)
- User configurable resources for Base address port, IRQ and single DMA, 
  based on the BLASTER environment variable, for all cards (including 
  non-creative). If not provided, the default values are: A220, I5, D1.
- Fixed ES1868 detection bug that recognized bad PnP resources.

v0.24b
-----------------------------------------------------------------------------
- Added basic mixer default settings for some cards ALS1xx/SB16/Rockwell 
 (fixed for simplicity, to ~80% vol levels, not user configurable).
- Added High DMA, MPU and Game port addresses as user configurable.
- Added SB16 mode as default for ALS1xx cards. (HDMA default to 1)

v0.32b
-----------------------------------------------------------------------------
- Added support for new cards:
  ** Yamaha YMF71x based cards (tested on OPL-3SAx, YFM719) SBPro 
     compatibility only. Not 100% stable though. 
  ** Guillemot Maxi Sound 64 pro (ESS ES1868 based) PnP init only, no sound.
     Warning! This card Will *remain silent* if user do not upload the 
     SAM9407 firmware with the original maxiset tool (that does not work on 
     808x machines). I have plans for the future, to integrate a function 
     that could upload the firmware and finish the initialization to unmute 
     the card. No ETA.

v0.40b
-----------------------------------------------------------------------------
- Big step with AWE PnP cards. Now 100% complete EMU8000 chip initialization
  with fixed settings. FM and Wavetable are working now. No AWEUTIL /S 
  needed! (No MPU emulation for the built-in wavetable nor SoundFont banks 
  uploading, though, sorry).
- Fixed YMF71x stability issues, now using proper Yamaha propietary init
  sequence after the PnP config. Mixer default settings added too.
- Added more init data (not user configurable) to display at run time: AWE 
  address, WSS base address (for cards that require WSS port only, fixed to
  530h), IDE base address/IRQ, and secondary IRQ if availabe (for YMF now).

v0.44b
-----------------------------------------------------------------------------
- Added support for non-PnP SB16 cards (Software configurable). Those who 
  needed DIAGNOSE.EXE to initialize, now are supported (like CT2290, CT2770,
  etc). There are 2 ways to do it: 1) Launch the program normally, and it
  will try to find and configure a PnP card first if present. If no PnP card
  is found, it will look for a non-PnP SB16 card, and will initialize it if
  found. 2) Using the new command line parameter /CS (faster): If used, the
  program will skip the PnP detection process and will try to initialize a 
  non-PnP SB if found. Remember that the Base address port (2x0h) of those 
  cards is hardware fixed and has to be configured by jumpers in the board 
  itself (the tool will detect it when it runs). The same happens with MPU 
  base address.
- Also added AWE32 non-PnP EMU8000 initialization, so no more DIAGNOSE nor 
  AWEUTIL /S needed for the loved CT2760. 

v0.46b
-----------------------------------------------------------------------------
- Fixed a bug (this was tricky) where in AWE64 and some late AWE32 boards,
  FM music sound garbled or with some glitches after EMU8000 initialization
  due to the existence of different revisions of the EMU8K chip that do not
  behave exactly the same. (and now the revision info is displayed as well
  at run time).
- Added by default the mixer output gain setting to x2 in Creative cards.

v0.47b
-----------------------------------------------------------------------------
- Fixed a bug that affected systems with 2 or more PnP cards plugged at the
  same time that prevented the correct initialization of the first card.
- Fixed ESS cards wavetable DB header muted. Now unmuted by default.

v0.48b
-----------------------------------------------------------------------------
- Added new command line options for selecting the desired card you want to
  initialize, if more than 1 PnP card is present in the system: 
  /Cn (n = 2 to 5), where 'n' is the card number you want to initialize. 
  To check the order of the cards, first use /CL to list and see the IDs of
  all detected cards. USE WITH CAUTION! This tool does *not* check for 
  resource conflicts between cards. Double check the free resources of your
  system before using it. Bad usage may cause damage. *Use at your own risk*
- Fixed wrong DMA assignations for some cards that (as per documentation) 
  do not allow the same DMA channel in different resources.

v0.50b
-----------------------------------------------------------------------------
- Added support for new cards:
  ** CMI8330 chip based cards (Audio Excel...)
  ** OPTi 82C925 chip + AD1845 chip codec combo only (Unstable because this
     is an horrible card, and the documentation for the chip and the codec 
     are wrong, incomplete, inaccurate. Bad support in games, bad sound...)

v0.52b
-----------------------------------------------------------------------------
- Added support for new cards:
  ** ALS007 (has single DMA)
  ** Aztech AZT2320 chip based card (tested only in a MM Pro 16 IIIS+ PNP)
  ** Support for Maxi Sound 64 Series (ESS + SAM9407 only for now) firmware
     uploading (Yay! Sound output enabled!). Program will look for 
     SAM9407.BIN file in the current directory and upload to the card if 
     found. You must find the file yourself in the official driver pack and
     rename/copy it.

v0.56b
-----------------------------------------------------------------------------
- Added support for new cards:
  ** Diamond Technologies DT-0197H chip (seems to be an ALS007 clone)
  ** AD181x chips based cards (like Terratec T1816, or some aztech)
- Added new command line option '/Vnn' to set the cards' mixer master volume
  (in %), where 'nn' is the % volume from 00 to 99.

v0.58b
-----------------------------------------------------------------------------
- Added support for new cards:
  ** Crystal CS423x / CX423x chip cards (tested with a CS4236 and a CX4236B)
  ** OPTi 82C931 chip based cards
  ** OPTi 82C933 chip based cards
- Fixed PnP detection timing issues with some cards in Pentium machines.

v0.61b
-----------------------------------------------------------------------------
- Added new command line option: '/R' : Read current configuration from PnP
  card and show it (if it is not initialized, values returned could be zero,
  except DMAs, that return 4 when not assigned -cascade-, or propietary 
  control registers like some OPTi's.). It works even if the card has been 
  initialized with a different PnP tool. Optionally it can be used together 
  with /Cn , to select the card to read if more than one is present.
- Now the IDE port is user-configurable via new BLASTER env variable custom
  parameter 'Cxxx', where xxx is the hex port. E.g.: C168 , that is a 
  quaternary IDE channel. Make sure that your card support the address. 
  The IRQ is not needed, as the tool uses the default IRQ value for each 
  channel (15 for secondary, 11 for tertiary and 10 for quaternary). 
  Primary channel is not allowed. If the parameter is not specified, or is
  specified as C0 , IDE will be disabled. Anyway as this tool is launched 
  after config.sys, if you want CD-ROM support you'll have to load CD driver
  (like vide-cdd.sys) with device driver loaders like DEVLOAD after Unisound
  IDE port activation.
- Now the Joystick (game) port is user-configurable, via BLASTER var, too,
  with the parameter Jxxx (xxx is the hex port). J0 to disable the port.
- Now for Creative PnP cards, DSP version is displayed at init time.

v0.65b
-----------------------------------------------------------------------------
- Added support for new card:
  ** Gravis Ultrasound PnP: This is a special case. This card has been added
     to this tool mainly to be used paired with a sound blaster (with 
     different resource settings, of course) or as a stand alone card 
     configured with Classic GUS support. Only the Base address (2x0), codec
     address (3xx), main IRQ and 2 DMAs (play-rec) will be configured, the 
     remaining resources will be disabled (Game port, SB emu resources,
     MPU address and IDE resources).
  ** This tool will look for the ULTRASND environment variable, if found, 
     the card will be configured using its values, and then initialize the 
     Interwave as GUS compatible, and with default mixer settings 
    (85% master vol or personalized with /Vnn). It is mandatory to have the
    card populated with some RAM modules!. If no ULTRASND variable is found,
    it will be configured as: 240,3,3,11. *check if you have free resources*
  ** No IWINIT needed. Only ULTRASND env variable and this tool. 
  ** If you want Classic GUS Wavetable support (optional), you only have to 
     add the ULTRADIR env variable pointing to a directory with 2 items: 
     the ULTRASND.INI file  and the MIDI directory with the instrument 
     patches inside.

v0.65c
-----------------------------------------------------------------------------
- Added support for new Vendor IDs for Aztech 2320 based cards.

v0.67b
-----------------------------------------------------------------------------
- Added SB AWE Memory detection. RAM amount is displayed at init time.
- Bug fix: ALS1xx wrong detection in some models corrected.
- Bug fix: ALS100 Inverted DMA & HDMA assignation corrected.
- Bug fix: Missing master volume setting for some ES968+ES1688 cards added.

v0.68d
-----------------------------------------------------------------------------
- Added support for more Crystal CS423x card variants.
- Bug fix: Listing cards on very slow systems not working as expected.
- Bug fix: Resource assignment for some ES1869 submodels
- Bug fix: Added missing Control address assignment for some ES186x chips.
- Bug fix: ES1869 cards did not work in slow machines (XT/8088/8086/286),
  now an alternative method is used. Note: After card initialization in
  very slow systems, do not run Unisound again with /R or /CL switches or
  the card will stop working and should be initialized again, and in those
  systems, /R will output zero value for all resources.

v0.70b
-----------------------------------------------------------------------------
- Added FM/OPL Base address as user-configurable. Default value = 388. 
  F0 to disable (not all cards allow to disable or change this port!). 
  Accepted values: 388, 398, 3A8, 0. This option is useful, for example,
  to disable or remap CQM synth in SB cards if you use together with other
  card with a genuine OPL chip tied to 388, or useful for the future 
  "AWE64 Legacy" project, wich will mount a genuine OPL chip.
- Added new user-configurable mixer volume values: Wave/DAC, FM/Synth,
  Line-in. The new values are set with new command-line arguments:
  /VW /VF /VL . Defaults: Master:85% , Wave/DAC: 80% , FM/Synth: 80%, 
  Line-in: 50%

v0.70c/d
-----------------------------------------------------------------------------
- Added support for a lot of Aztech 2320 card variants.

v0.71c
-----------------------------------------------------------------------------
- Enable on-board WaveTable sound on ES186x cards with ES689/ES69x WT ICs
- Enable on-board WaveTable sound on AD181x cards with YMF704/QS1000 WT ICs
- Now /VF switch also set WaveTable header & on-board WT volume (same as FM)
- Now /VL switch also set CD volume on Creative cards only for now.
- Fixed some typos and confusing terms in help screen.
- Added GUS PnP ROM info. ROM name and size is displayed at init time.
  This is informative only. Unisound init GUS PnP as GUS classic compatible.
- Added proper support for Crystal CS4232 based cards. In previous versions, 
  these cards were detected but the init process lacked firmware uploading.
  *WARNING!*: Don't run UNISOUND again after CS4232 initialization, because
  it system could hang. This is a known issue with CS4232 cards after 
  initialization in some systems. Run Unisound one time only.

v0.72b
-----------------------------------------------------------------------------
- Added MPU IRQ value as user-cofigurable (for cards that require it. For
  cards that don't use a MPU IRQ, this parameter will be ignored), via
  BLASTER env variable. Parameter: Ux (where x is the IRQ for MPU interface)
  It is optional. If not set, best known value for each card will be used, 
  like in previous versions. Example: BLASTER=A220 I5 D1 H5 P330 U9
- Added support for more YMF71x card variants (Neomagic / Gateway branded)
- Added new command line option /D useful to disable a PnP sound card.
  This option will free all card's resources (I/Os, IRQs, DMAs) and
  disable all logical devices. The card will return to uninitialized state.
- Added AZT3005 (sound/modem card) support. Modem logical device is disabled
- Bugfix: CMI8330 init lacked correct SB16 IRQ/DMA/HDMA assignation and
  some games/programs couldn't detect it properly.
- Bugfix: AWE init could cause unexpected noise if EMU8K port > 620h.
- Bugfix: ESS186x FM volume did not change correctly when using /VF
- Bugfix: Gus PnP: wrong text formatting when ROM was not detected.
- Other minor bug fixes and code optimizations

v0.75b
-----------------------------------------------------------------------------
- Added new eXtended command line options for special features or cards.
  The format will be /Xxxx , xxx depends on the card and/or special setting.
- Added new eXtended option (/XXF) to force detection of PnP cards with 
  partially corrupted EEPROM data (bad header checksum). Note that at least
  the critical parts of the card's eeprom should be correct for the card
  to be properly initialized / detected.
- Added full Orpheus card support (A great card by keropi/Marmes on VOGONS)
  Configurable special settings: FM switching, S/PDIF activation and 
  internal MPU activation.
  New eXtended options for this card: /XOFi to switch to internal CrystalFM
  synthesis, /XOFe to switch to external Yamaha OPL3 (default: Yamaha OPL3).
  /XOS1 to enable S/PDIF output, /XOS0 to disable (Default: disabled). 
  And /XOM1 to enable internal Crystal MPU if your card has it disabled by
  default because it has PCMIDI intelligent-MPU already mounted. So you can
  use both MPUs (at different I/O ports and IRQs, of course!).
- Added support for Turtle Beach Malibu S/PDIF out (enable with /XOS1).
- Added support for new AD1816 card variants: Highscreen Soundboostar 16 
  and Gallant SC70P.
- Proper support for CMI8329A chip based cards (was broken).
- Added support for new YMF71x variants (ATC cards and AudioTrix 3D-XG).
- Added more mixer settings for compatible cards: CD volume (/VCnn) and 
  Mic volume (/VMnn). Default value for both: 00.
- Added PC Speaker volume setting (/VPnn) for Creative cards (Default: 00)
- Added Treble and bass controls (/VTnn and /VBnn) for compatible Creative
  cards (Most non-ViBRA chips support them). Default value for both: 50%
- Changed default value for the Line-in output volume to 00 to reduce
  noise by default if /VL option is missing
- Added activation/deactivation of the mixer's output control register
  settings for SB16 compatible cards when Line, CD or Mic vols are set.
- Fixed mixer settings for CMI cards, now using SB16 compatible mixer ones.
- Fixed mixer settings for Yamaha cards when using WSS as they were
  totally wrong.. Note that every mode has its own mixer (SB or WSS), and
  because YMF71x chips are bugged(?), WAVE volume can't be changed in SB mode
  it's fixed to maximum (this happens on every SB mixer software tested, 
  including original SETUPSA and other 3rd party mixers). Tested in 4 cards.
- Fixed bad mixer value assignations for GUS PnP DAC level and Line-in level
- Fixed Wavetable header volume did not change with /VF on OPTi 93x cards.
- Reworked all mixer code for OPTi 925 cards. Now it's working properly.
- Added optional IDE activation for OPTi 925 cards (secondary ch 0x170 only)
- Added new eXtended option to change between SBpro and WSS modes on OPTi
  925 cards: /XPWn (n = 1: WSS mode, n = 0: SBPro mode) Default: SBPro.
- Added new eXtended option to enable GUS PnP IDE port: /XGCn where 'n' is
  the IDE port: 2 = secondary, 3 = tertiary, 4 = quaternary (recommended).
- Removed /F from help screen. It will continue working, though.
- Changed tool title from "Enabler" to "Driver" as the tool has evolved.

v0.75e
-----------------------------------------------------------------------------
- Bugfix: AWE upgrade card CT1920 was misidentified as a regular AWE32.
- Added support for Roland Super MPU II PnP MIDI card initialization.
- Changed PnP detection process slightly. Now it is faster and more 
  compatible with existing PnP management (like PnP BIOSes). PnP RD port is
  not overwritten if it was already set before running UNISOUND.
- Fixed bug that listed all cards detected as "Bad checksum" when /XXF was 
  used under certain circumstances.
- Other minor cosmetic changes.

v0.76b
-----------------------------------------------------------------------------
- Added option to disable onboard GM chip sound on AD1816 cards (use /VF00)
- Fixed MPU base address assignation when non-PnP ViBRA16S (CT2504 chip) is
  detected. Now it is set properly. (accepted P values: 0, 300, 330).
- Added new user-configurable options via BLASTER var for CMI cards:
  Qx (WSS IRQ) and Kx (WSS DMA). Examples: Q11 K0 (set WSS IRQ to 11 and
  WSS DMA to 0).
- Fixed wrong IDE logical device detection on ES1868 cards with IDE port.
- Fixed MIDI port detection bug on some ES186x cards after initialization,
  now MPU will work on games like Descent.
- Fixed some typos and missing info (tool and docs)
- About Terratec EWS64 L/XL/XXL cards: now the tool assigns PnP resources
  correctly, but output will be silent, because firmware support is being
  investigated yet. So for now, these cards are not supported. WIP, no ETA.
- Added new eXtended option (/XEA) for ES1868 cards, to try an alternate init 
  method if normal init does not work.
- AWE64 Legacy: Only for this card, when its unique PnP ID is detected,
  Creative FM is now shown as "CQM". Also if CQM is remapped to a port 
  different than 388, and an OPL chip is detected at 388h it will be shown.
- Added new eXtended option for GUS PnP (/XGL) to limit RAM to 512K for 
  compatibility with some games.

v0.76f
-----------------------------------------------------------------------------
- Fixed detection of AD181x cards on some systems (regression bug).
- Fixed Card listing /CL stopped running when conflictive cards were present.
- Fixed CMI incorrect master volume was present in some apps
- Added support for some fake Yamaha cards (crystal chip based)
- Now up to 9 PnP cards can be initialized per system
- Other minor optimizations and cosmetic changes

v0.77a
-----------------------------------------------------------------------------
- Improved card detection, now it's more reliable, especially on slow cards.
- New eXtended option /XNET : It's a workaround for Realtek (and compatible) 
  ISA PnP network cards when paired with other ISA sound card(s). Those net 
  cards  have a bad hardware PnP implementation that deactivates LDs (logical 
  devices) just when scanning for PnP cards without configuring them. 
- Fixed joystick port default values for some cards, like ES1868.
- Orpheus: New option /XOM0 to force-disable MPU if it's enabled in EEPROM.
- Orpheus fix: Now Line-in audio is not muted on SPDIF in games/progs.
- GUS PnP: New option /XGJ : Activate Joystick port 
- GUS PnP: Now all IRQs from 0 to 15 are selectable. Previously, only 
  5, 7, 11, 12 15 were available (as listed by original GUS setup and EEPROM)
  Use with caution.
- Changed Opti 931 init method a bit to try to prevent issues with other 
  cards (experimental).
- Fixed very old bug that caused some cards to disable MPU if same IRQ was set
  for SB and MPU manually.
- Fixed wrong calculation for Mic-in level on several SBPro compatible cards.

v0.78b
-----------------------------------------------------------------------------
- Fixed ALS007 mixer, as it's only SBPro compatible, unlike other ALS cards.
- Fixed CMI card mixer to disable 3D spatial effect by default. (see below).
- Added support for Rockwell RWA Wavetable header. Now volume is working.
- Added STB Ultrasound card support as GUS PnP compatible (untested).
- Added (limited) support for Ensoniq Soundscape VIVO card. Only WSS digital 
  sound, line-in control, CD-in control and joyport are working. Any other
  function will require the original TSR and drivers.
- Added (limited) support for Turtle Beach Multisound Pinnacle card (PnP mode) 
  Only joyport and MPU (onboard Kurzweil wavetable) are available. There are
  several board revisions of this card, with slightly different behaviours. 
  If your card is not recognized, please add the option /FS and try again. 
  Also note that it's possible that your card revision doesn't work at all.
- Added feature to switch between internal and external FM/OPL on generic 
  Crystal CS4237 cards. Option are the same used for Orpheus: /XOFi and /XOFe
  (untested). If no command line option is set, default is Internal FM.
- Added support for 3D sound on some cards that support it. Option: /X3Dn
  Usage depends on the supported card (value of 'n'):
  * CMI8330A: Sensaura HRTF 3D Positional audio ON (n = 1) or OFF (n = 0)
  * ALS100+/ALS120: 3D Sound Effect Proccessor ON (n = 1) or OFF (n = 0)
  * ES1869: (n = 0 to 9) 0 = disabled, 1-9 Spatializer 3D VBX effect amount.
  * YMF71x: (n = 0 to 7) 0 = disabled, 1-7 3D Enhanced (Wide) effect amount.
  * AD18xx: (n = 0 to 9) 0 = disabled, 1-9 Phat 3D effect amount.
  * CS4237: (n = 0 to 9) 0 = disabled, 1-9 SRS 3D effect amount (center+space)
  * Creative: 3D ON (n = 1) or OFF (n = 0). Only for Creative cards with 3D
    capabilities (like AWE64, some AWE32 like CT3980 or some SB16 like CT2950)
- Added bass and treble control for Yamaha cards.
- Added eXtended option to control Output Gain / Loudness on some compatible
  cards. Option is /XXGn ('n' value depends on the supported card):
  * CMI8330: Loudness ON (n = 1) or OFF (n = 0)
  * Creative: n = 1,2,4 (Gain x1, x2, x4 respectively). Some models don't have
    gain control, on those, the setting won't have effect.e.g.: Vibra16C/S/XV 
    or some AWE64s like CT4520. Others like CT4500 do have it). Default: x2

v0.80a
-----------------------------------------------------------------------------
- Fixed support for Compaq Interwave / SB Ultrasound 32 Pro (GUS PnP
  compatible card): Added proper initialization of TEA6330T sound control
  chip. Now sound output is working properly and control for treble and bass
  is added (/VTxx /VBxx) if your card has this chip. Default value: 50%
- Fixed GUS PnP input levels not muting completely when using /Vx00
- Fixed ALS100 mixer init bug introduced v0.78b. All levels are working now.
- Added support for OPTi 82C924 PnP chip based cards.
- Added support for Analog Devices AD1812 PnP chip based cards.
- Added 3D control support for OPTi 82c933 cards. 3D ON = /X3D1
- Fixed Wavetable volume not changing with /VF when SPDIF mode was enabled on
  Orpheus / TB Malibu cards. (Note: some games/apps messing with SB mixer 
  registers 00h, 06h, 26h, might reset levels again)
- Fixed an old bug that assigned a 2nd DMA on cards that don't support it.
- Minor changes to char printing in detection phase to fix issues with 4DOS
  and other minor code and text optimizations.
- Fixed /D used together with other options caused unexpected results.
- Added WSS mode support for Aztech 2320 cards. Use /XWSS to change to WSS 
  mode. Default is SB mode. Note: WSS and SB modes are mutually exclusive.
- Change: Unified command line option for cards with capability to switch 
  between WSS and SB modes: /XWSS (Previously was /XPW1 for OPTi cards) to 
  swith to WSS mode. Default is SB mode if /XWSS switch is not used. Check
  supported cards in TXT section 5.1.3
- New: *EXPERIMENTAL* Non-PnP card detection mode for very very few cards: 
  * OAK OTI-601 "Mozart" / OPTi 82c928/A chips (almost the same chip)
  * OPTi 82C924 and 82C925 in "no PnP" mode
  * ESS ES1688. Configurable: IRQ, DMA, MPU port, MPU IRQ, joyport.
  * ESS ES688. Configurable: IRQ, DMA.
  * Creative Sound Blaster 16 / AWE32 Non-PnP jumperless cards (already 
    supported but listed here for completeness). /CS will continue working
    as usual for backward compatibility for these cards.
  Option to try this new non-PnP card initialization: /NOPNP 
  NOTE: As it's experimental, please plug only one Non-PnP sound card in the
  system to avoid problems and false positives. Support for more Non-PnP 
  cards is not planned in any way in the near future

v0.81b
-----------------------------------------------------------------------------

- Fixed wavetable sound not working on Opti 931 cards with onboard wavetable.
- Fixed detection of Terratec Base-1 and other AD1816 based cards with ATMEL
  EEPROM chips. Now these cards will be detected correctly. Anyway there are
  about 1% of these cards in combination with some mobo chipsets that would 
  need to add the option /FS to be detected properly.
- Improved AWE RAM detection for late EMU8K chips, like AWE64 cards. Now the
  correct amount should be shown.
- Added option to use a custom IRQ for the IDE port, with new BLASTER optional
  parameter "Y". Use of "C" is still required. If "Y" is not used, default
  stadard IRQ will be used, like in previous versions. Example: C168 Y11
- Changed behaviour of /NOPNP detection for ESS and Mozart chips, should
  improve compatibility with some systems with Non-PnP ESS onboard sound.
- Added Control of FM Reverb (/VRnn) and Chorus (/VUnn) effects amount, only
  for SB AWE32/64 cards (Values 00 to 99). Note: This works on AWE cards with
  integrated CQM and with discrete Yamaha OPL / CQM chips, if they're routed
  through the EMU8K chip. Only a few exceptions are not routed, like CT3930.

v0.82a
-----------------------------------------------------------------------------

- Added support for AuxB volume control on ESS 186x cards using /VBxx (00-99) 
  Useful for cards like MK1869 which have onboard Wavetable and also a 
  Wavetable header. If /VBxx is not specified, behaviour is like in previous
  versions. If /VBxx is specified, /VFxx will control FM volume and onboard
  Wavetable and /VBxx will control AuxB separately. Example uses with MK1869:
  /VF00 /VB90 will mute onboard WT and will put external WT board to 90% vol.
  And /VF80 /VB00 will mute external WT and will put onboard WT to 80% vol.
- Added support for Rockwell RWA011 cards that remained muted in previous
  versions (like Zoltrix Radio Max). If detected, they will get unmuted
  correctly. If your RWA card remains muted, please try with option /XRU
- Added support for new card variants: ESS Samsung Audio Magic X SAB-3000A,
  Crystal CS4235 based ID CSC8025 and generic CMI 83xx variants (not tested).
- Let user change Adlib/OPL/FM port to any port in range 0x300-0x3FF. This
  will allow, for example, to assign value F380 in BLASTER var to fix the
  problem with OPTi 931/933 chips not playing adlib sounds when running
  Win9x after Unisound.
- Fixed reading OPTi DMA2 different to disabled/4.
- Fixed CS4232 MIC input control.
- Added *EXPERIMENTAL* support for Non-PnP OPTi 82C930 based sound cards, 
  configurable resources: Base Address, IRQ, DMA, MPU port, MPU IRQ, Joyport.
  Use at your own risk.
- Implemented ERRORLEVEL on exit. 1 = Card not found/Unknown. 0 = OK/Other.
