First post, by Yart
Note that this information isn't exactly new, but I can't find it compiled for anyone looking for a quick answer anywhere. I am writing this in hopes that it would help someone else configure their ESS Solo-1 card in pure DOS.
So a lot of people, including myself, has seen Phil's Computer Lab video about the PCI ESS Solo-1 card and bought one because it's quite cheap and has great compatibility with DOS games. (Personally I absolutely love the card and had great experiences with it so far) Supposedly you need to load some driver in CONFIG.SYS and then run a Windows applet to enable the card (which presumably writes ESSOLO.INI to C:\), but if you're running a pure DOS system you can create the ESSOLO.INI file yourself without the need of Windows or some ESSOLO.SYS driver. The big advantage of this is that you don't have to pray to the PNP gods and can set all the resources yourself. It is possible to enable/disable MPU401 and the Gameport, as well as even assign a new Sound Blaster address without Windows.
Running ESSOLO.COM without ESSOLO.INI will make the initializer complain and say:
"Please use Windows Software Applet to enable Sound Blaster, MPU401 and Game port for Real/Windows DOS"
However, if we create a file called ESSOLO.INI at C:\, we can use a hex editor such as Hexit to configure our card.
You can acquire Hexit here: http://mklasson.com/hexit.php
Our ESSOLO.INI file will contain 16 bytes. If you already have an ESSOLO.INI file it might look something like this.
40 02 01 00 88 03 05 00 01 02 30 03 02 00 00 00
In this example, Sound Blaster Address is set to 240h, DMA is 1, FM is 388h, IRQ set to 5, Gameport enabled (at 201h), MPU401 is enabled (at 330h), and we're using SB-Link.
Keep in mind that these bytes are read in Little Endian. Littlest side first. Here is a list of what each byte is responsible for and the possible values:
00: Sound Blaster IO (20 = 220, 40 = 240)
01: Sound Blaster IO (02 = 2xx (Cannot be changed))
02: DMA (00, 01, 03)
03: DMA (Not used and don't change, default 00)
04: FM Address (Default is 88 for 388h (Cannot be changed))
05: FM Address (Default is 03 for 388h (Cannot be changed))
06: IRQ (05, 07, 09, 10 (0A), 11-14 (0B-0E, serialized IRQ only))
07: IRQ (Not used and do not change, default 00)
08: Gameport Address (Default 01 for 201h (Cannot be changed)))
09: Gameport Address (Default 02 for 2xxh, change this to anything else to disable the Gameport)
0A: MPU401 Address (Default 30 for 330h, can be 00, 20, 30, 40)
0B: MPU401 Address (Default 03 for 3xxh, change this to anything else to disable MPU401)
0C: DDMA/TDMA/SB-Link (00 (DDMA), 01 (TDMA), 02 (SB-Link aka PC/PCI, set to this if using SB-Link connector on board))
0D: DDMA/TDMA/SB-Link (Not used and don't change, default 00)
0E: Not Used
0F: Not Used
It seems kind of wasteful to use two bytes for each parameter but hey, I'm not the one who designed this.
ALSO: If using SB-Link, make sure your BIOS has 'PNP OS Installed' set to Yes in your 'PNP/PCI Configuration' or else ESSOLO.COM will leave a TSR in memory when you run it.
So at the end of the day, place your SET BLASTER in AUTOEXEC.BAT, ignore ESSOLO.SYS. Leave ESSOLO.INI in C:\, and just run ESSOLO.COM in AUTOEXEC.BAT. You can of course still use ESSVOL.EXE if you want to set volumes too.
I hope you enjoy! And if anyone has anything to add (maybe there is a use for the final two bytes) or would like to make a correction please let me know! Thanks!