VOGONS


UNISOUND - Universal ISA PnP Sound Card Driver for DOS v0.82a

Topic actions

Reply 860 of 861, by analog_programmer

User metadata
Rank Oldbie
Rank
Oldbie

Hi, vintagefugg,
I think, I tried everything you requested and here are the results:

vintagefugg wrote on Yesterday, 19:08:
Could you tell me: - what UNISOUND v0.82a printed (does it say "No card detected", or does it find the ES1688 and print settings […]
Show full quote

Could you tell me:
- what UNISOUND v0.82a printed (does it say "No card detected", or does it find the ES1688 and print settings?),
- your BLASTER line,
- what exactly doesn't work afterwards (no sound at all, only music, game setup can't find the card...)?

With "UNISOUND /NOPNP" in AUTOEXEC.BAT or from command prompt:
- "No PnP card detected." message:

Universal ISA PnP Sound Card Driver for DOS v0.82a. (c) JazeFox 2019-2025
─────────────────────────────────────────────────────────────────────────
No PnP card detected.

- I don't use a BLASTER variable set, since UNISOUND sets its own default values when manage to initialize any SB-compatible soundcard.
- no sound FX, no FM music, no MIDI, etc., the soundcard is undetected and uninitialized.

vintagefugg wrote on Yesterday, 19:08:
If you have a moment, this test would show which one it is. From a cold boot *without* ESSCFG in AUTOEXEC.BAT: 1. Run ESSCFG and […]
Show full quote

If you have a moment, this test would show which one it is. From a cold boot *without* ESSCFG in AUTOEXEC.BAT:
1. Run ESSCFG and look at the current settings (option 7). If it can't find the card or says no IRQ/DMA is selected, note that.
2. Run UNISOUND /NOPNP and note what it prints.
3. Run ESSCFG again and look at the settings. If the IRQ is 9 or the DMA didn't change, it's problem 2.
ESSCFG rewrites BLASTER from the card, so SET it again before running games afterwards.

ESSCFG for ES1688, that I use, is an alder version 2.1, so it is option 6. No BLASTER variable is set. These are the results after "cold" reboot with Reset button:
1. First I run "ESSCFG" from command prompt only and option 6 (for report):

ESSCFG ( Version 2.1 ) found ES1688_PnP at address 220.

Current IRQ channel setting is 5.

Current DMA channel setting is 1.

MPU401 is enabled with no IRQ.

Current MPU401 base address setting is 300.

Joystick is disabled.

2. Next - "UNISOUND /NOPNP" from command prompt:

Universal ISA PnP Sound Card Driver for DOS v0.82a. (c) JazeFox 2019-2025
─────────────────────────────────────────────────────────────────────────
No PnP card detected.

3. Finaly - "ESSCFG" from command prompt and option 6 (for report):

ESSCFG ( Version 2.1 ) found ES1688_PnP at address 220.

Current IRQ channel setting is 5.

Current DMA channel setting is 1.

MPU401 is enabled with no IRQ.

Current MPU401 base address setting is 300.

Joystick is disabled.

The assigned IRQ is not 9, but 5, and as you can see, no initialization was done from UNISOUND and no Port, IRQ and DMA values were changed after.

vintagefugg wrote on Yesterday, 19:08:

I don't really have a great way to share files but I built a little test program ESSINIT that extracts out the bits of ESSCFG that I think are relevant. It's here https://limewire.com/d/g4XTB#7PTdbrSd5K (expires in 3 days). It sets up an ES688/ES1688 the way ESSCFG does: it wakes the chip if needed, writes the IRQ and DMA from BLASTER through 2xCh, reads them back and tests that the IRQ actually fires, printing each step. Run it instead of ESSCFG after a cold boot (ESSINIT > ESSINIT.TXT) and post the output; ESSINIT /OLD writes the values the 0.82a way, for comparison. If ESSINIT works where UNISOUND doesn't then that gives JazeFox something to work with.

As expected your ESSINIT.EXE works just fine with ES1688 card even with no BLASTER variable set after "cold" reboot:
1. When I run "ESSCFG" without any command line switches from command prompt only:

BLASTER not set
Base 220h, IRQ 5, DMA 1
Before: 2xEh = 18, 2xAh = AA
Reset: 2xAh = AA after 1 ms, 0 more byte(s) flushed
E7h: 68 8B
Chip: ES1688 or later
Mixer 40h = 03
Before: B1h = 15, B2h = 1A
Write B1h = 55: both bytes to 22Ch, busy wait 0 and 0 ms
Write B2h = 5A: both bytes to 22Ch, busy wait 0 and 0 ms
After: B1h = 55, B2h = 5A
F2h try 1: IRQ3=0 IRQ5=1 IRQ7=0 IRQ9=0 IRQ10=0
Interrupt on IRQ 5: OK
RESULT: OK

2. When I run "ESSCFG /OLD" from command prompt only:

BLASTER not set
Base 220h, IRQ 5, DMA 1, old write
Before: 2xEh = 18, 2xAh = AA
Reset: 2xAh = AA after 1 ms, 0 more byte(s) flushed
E7h: 68 8B
Chip: ES1688 or later
Mixer 40h = 03
Before: B1h = 15, B2h = 1A
Write B1h = 16: B1 to 22Ch, 16 to 22Dh (old way)
Write B2h = 1A: B2 to 22Ch, 1A to 22Dh (old way)
After: B1h = 15, B2h = 1A
F2h try 1: IRQ3=0 IRQ5=1 IRQ7=0 IRQ9=0 IRQ10=0
Interrupt on IRQ 5: OK
RESULT: OK

In both cases ES1688 card is initialized and works perfectly fine.

Please tell me, if I didn't manage to do something the way you wanted.

vintagefugg wrote on Yesterday, 19:08:

On fixing unisound: I still can't use PMs on vogons (too new?) and I don't have another way to contact JazeFox but I think we could patch this into unisound without too much drama if they're willing to accept binary diffs or patches.

If I'm not mistaken, you'll get the permission for sending PMs, when you hit 20 posts. But even now you can attach executable (and other type) files in your posts if they are in some archive format like zip, 7z, rar... or if you change their .exe/.com extensions to any acceptable .jpeg, .gif, .txt, .doc, .pdf... extensions, but the latter method is not recommended. There is a limit of five attachments per post.

I also think, that your ESSINIT (for ES1688) program should be permanently attached here or in some other dedicated thread for download, since it works perfectly fine just like ESSCFG does.

I have no idea what happened with JazeFox. It seems like he/she just "disappeared without a trace". I don't have any hope for now UNISOUND version, since it is closed source freeware.

I'm looking forward for your conclusions after the quick tests I made. Thank you very much for your support!

The word Idiot refers to a person with many ideas, especially stupid and harmful ideas.
This world goes south since everything's run by financiers and economists.
This isn't voice chat, yet some people overusing online communications talk and hear voices.

Reply 861 of 861, by vintagefugg

User metadata
Rank Newbie
Rank
Newbie

Ok, I am *super* wary of stepping on JazeFox's toes here but as they haven't been active here for about a year I figured I might step in and keep things moving until they return. I have a build with a few fixes that I've been running on some real hardware and on 86box. I will happily delete this file, my comments, my account, or whatever it takes to keep JazeFox happy when they return. All credit for this fantastic tool goes to them. I'll pass all the fixes to JazeFox when they return.

I've linked UNISOUND v0.82a-unofficial-fix-3.zip below. It is not attached to this comment because (a) none of the licenses I can select on vogons apply here and (b) I need to be able to delete this file if JazeFox asks me to and I'm not sure I can delete whole comments / attachments here. It's named fix-3 because I've been through a few rounds of real hardware testing. I'm concerned that the binary is reaching a size where the COM 64Kb segment limit but I've run 86box-mcp regression testing on a pile of simulated hardware + a few physical systems and it's been fine so far. This is an unofficial build. Don't yell at JazeFox if this burns down your house. Check CHANGES.TXT inside the zip for the full list of modifications.

https://mega.nz/file/fCZiHQwI#fAMNKQkWwIUa262 … 3t-GjeQ5O49kQQA

Bug fixes — General

  • Options must be spelled in full; unknown ones print "Unknown option" and exit with ERRORLEVEL 2 (/DUMMY used to disable the card). /XOS0 now works. (yeokm1, AndalusianRG, Cryptus, analog_programmer)
  • Volumes take one digit as well as two (/VL0 used to be ignored); a bad value prints "Invalid value". It turns out my own autoexec.bat I was using on many real systems was failing to set line in volume because I was passing /VL0 instead of /VL00!
  • Unknown PnP cards (NICs, modems, game ports) are skipped instead of stopping with "Aborting"; /Cn with no card n exits with ERRORLEVEL 1. (ajacocks, Retromachines, NightSprinter, AncapDude)
  • ULTRASND and BLASTER with fewer fields are read correctly.
  • Long card names no longer hang /CL.

ESS

  • /NOPNP finds an ES688/ES1688 after other UNISOUND commands. (GigAHerZ, analog_programmer)
  • /NOPNP finds chips that start disabled; ES1788 and ES1887/ES1888 are recognised. (analog_programmer, 0xDEADBEEF)
  • /NOPNP writes the ES688/ES1688 IRQ and DMA the way ESSCFG does; a real ES1688 ignored v0.82a's writes. (vico, analog_programmer)
  • /NOPNP no longer takes another card for an OPTi 82C924/925 and skips the ESS check ("No PnP card detected."). (analog_programmer)
  • ES1868/ES1869: H4 and D = H mean no second DMA. (Kahenraz)
  • ES1868/ES1869: U sets the MPU-401 IRQ. (crvs)
  • ES688 and OPTi 82C930 names corrected. (Pr1ha)

Creative

  • Non-PnP SB16/AWE32: /R only reads and /D leaves the card alone.
  • An F not a multiple of 4 is rounded down (F389 becomes 388). (Mr.Hunt)
  • AWE /VR50 to /VR99 no longer corrupt FM passthrough.
  • 28 MB of AWE RAM is shown correctly.

Crystal

  • CS4237B, Orpheus, Turtle Beach: codec left in standard WSS mode, so Tyrian accepts it. (vanfanel)

Yamaha OPL3-SAx

  • K sets the WSS DMA, and it is shown. (TgamesFR)
  • SB Pro master set like aitotat's FIXYMF: SB Pro stereo panning (Wolf3D) works and /VW lowers the effects volume. (badmojo, --Freeman--)
  • D = H keeps D and moves only the second DMA.

Others

  • OAK OTI601 / OPTi 82C928 with a CS4231/CS4248: codec bits set.
  • AZT2320: D = H keeps D, an invalid H is corrected; Aztech and Rockwell leave the SB Pro mixer in mono.
  • InterWave ROM names, Ensoniq VIVO and Maxi Sound /R, SAM9407 firmware upload: small fixes.

Known issue, not changed: on the OPTi 82C931 the FM address is written to a register that expects a multiple of 16; real cards seem to answer at 388 anyway.

New features

  • BLASTER check: if BLASTER is missing or doesn't match the card UNISOUND just set up, it prints a SET BLASTER line for AUTOEXEC.BAT. Other fields are kept, and a BLASTER that points to another card is left alone. (analog_programmer)
  • /LOG prints diagnostic lines for problem reports.
  • /XSLAM sets up Crystal CS423x chips that the BIOS has hidden from PnP; a Crystal chip with no resource data (Gateway E-1000) gets the standard layout. (Pickle, MartinausWien, AliceImagina)
  • /XESSB finds on-board ES1868/ES1869 chips that the PnP scan misses, through the ESS bypass key. (vsharun, Oetker)
  • When no card is found, UNISOUND points to /XSLAM, /XESSB and /LOG.
  • The banner shows this version.

Everything was tested in 86Box except the Ensoniq, Maxi Sound, SAM9407 and 82C928 changes. /XSLAM, /XESSB, the OPTi checks and the Yamaha changes haven't been tried on real hardware yet, so reports are welcome. Thanks to everyone in this thread who reported these problems. If something breaks, first check whether the official v0.82a does the same, then post the output of this (with the options you normally use, such as /NOPNP):

UNISOUND /LOG > LOG.TXT