VOGONS


First post, by Gabriel-LG

User metadata
Rank Newbie
Rank
Newbie

Hello,
Recently I fixed up a Philips P2230 with a 12.5MHz 286.
I would love to add a sound card to this system, but I do not have the budget to purchase anything period correct.
Electromyne has some ISA cards for under 30 euros, but I find it hard to pick a reasonable card.
I am aiming for the following:

  • Good Soundblaster compatibility
  • Reasonable FM (does not have to Yamaha, but should come close)
  • Gameport for adding a joystick
  • Should be 286 compatible (if the driver contains 386 instructions, it simply won't run)
  • 286 is slow, so no software synthesis or whatever...
  • Wavetable header would be a nice to have

So far I have found the following:

  • ALS007/ALS100 cards should be good, as they have good SB compatibility and external FM
  • Avoid Avance Logic ALS100+ and ALS120 (FM synthesis is horrible)
  • Avoid Analog Devices AD1816/AD1815 (FM synthesis is horrible)
  • ESS audiodrive 1868F and 1688F should be OK
  • Crystal CX4235 has horrible FM
  • Crystal CX4236B and CX4237 have OK FM, good SB compatibility.
  • Opti 82C931 and 82c933 have poor FM
  • Opti 82c929(A) is combined with OPL3 (clone) should work fine (something appears to be off with my machine though)
  • Aztek AZT2320 great FM but poor soundblaster compatibility/quality
  • Vibra16 cards have poor FM (CQM is also software based, right? is a different modulation technique)
  • CMI8330(C)/SoundPro 1896V+ good compatibility, good FM.

Did I miss anything, or make any mistakes in the list above?

All of these cards/chips are from the late '90s, are there any chances some of these won't run due to i386 instructions in drivers?
What about plug and play. Obviously my 286 does not support that.

I found one card based from Diamond Technologies with a DT-0196H + LS-262 (rebranded ALS007 + OPL3 clone). Could that be any good ?
I have heard horror stories about Diamond Technologies with regards to hardware/design quality (not to be confused with Diamond Mutimedia btw!).

Last edited by Gabriel-LG on 2022-11-19, 17:24. Edited 2 times in total.

Reply 1 of 20, by Jo22

User metadata
Rank l33t++
Rank
l33t++
Gabriel-LG wrote on 2022-11-12, 15:51:

All of these cards/chips are from the late '90s, are there any chances some of these won't run due to i386 instructions in drivers?
What about plug and play. Obviously my 286 does not support that.

Hi there! That's not necessarily a problem. 👋🙂

Sound card "drivers" for DOS don't use 32-Bit Protected-Mode, merely newer 32-Bit Real-Mode instructions.
And fot this, you can use EMU386. It intercepts 386 instructions and emulates them. It really works.

Plug&Pray support isn't a problem, either. There's an Intel PnP Manager for DOS, which can configure all kinds of ISA cards.

And then there's CTCM/CTCU for the Sound Bladders.
It's a set of utilities by Creative Labs. EMU386 can get them running, it's mentioned in its readme.

Last, but not least, you can use that UniSound utility for configuration.
It's a homebrew program by Vogons user.

As far as Windows 3.1 in Standard-Mode goes (Win /2)..
The PAS16 has 286 compatible Windows drivers. Used them myself in the past.

Early SB16 drivers work in Standard-Mode, too. Cloudschatze mentioned them to me once, I vaguely remember?

Anyway, the Windows 3.0 MME version (Tandy OEM) has SB16 drivers included.
Those work on a 286 in Standard-Mode, at least.

Though I don't know how ancient Windows 3 MME's MCI is.
Maybe not all Windows programs will work with it.

Edit: Windows 3.1 ships with an Sound Blaster 1.5 driver.
It works with nearly all Sound Blaster compatible cards.
It's just 22 KHz, 8-Bit Mono but is very reliable.

Edit: EMU386 -> Re: Timeline of MS-DOS for NEC PC98 and more

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 2 of 20, by Shponglefan

User metadata
Rank l33t
Rank
l33t
Gabriel-LG wrote on 2022-11-12, 15:51:

ESS audiodrive 1868F should be OK

I'd add ESS 1688 based cards to this list as well.

Pentium 4 Multi-OS Build
486 DX4-100 with 6 sound cards
486 DX-33 with 5 sound cards

Reply 3 of 20, by dionb

User metadata
Rank l33t++
Rank
l33t++

How's your soldering?

A Snark Barker (SB 1.0 replica) or Blasterboard (SB 2.0 replica) would fit your requirements nicely - apart from wavetable (MPU-401 UART would be a challenge in any case)

Reply 4 of 20, by MarkP

User metadata
Rank Member
Rank
Member
Shponglefan wrote on 2022-11-12, 17:05:
Gabriel-LG wrote on 2022-11-12, 15:51:

ESS audiodrive 1868F should be OK

I'd add ESS 1688 based cards to this list as well.

^^ cheap and cheerful and better than any 286 real Sound Blaster cards.

Reply 5 of 20, by Gabriel-LG

User metadata
Rank Newbie
Rank
Newbie
Shponglefan wrote on 2022-11-12, 17:05:

I'd add ESS 1688 based cards to this list as well.

Thanks for the suggestion, I added it to the list.

Jo22 wrote on 2022-11-12, 16:39:

Sound card "drivers" for DOS don't use 32-Bit Protected-Mode, merely newer 32-Bit Real-Mode instructions.
And for this, you can use EMU386. It intercepts 386 instructions and emulates them. It really works.

That is great, I did not know about EMU386, definitively going to check it out. I already noticed that many newer/updated versions of games throw an opcode exception due to missing i386 instructions.

In the meanwhile, I found a nice Opti 82C929A based card locally. It has an OPL3 clone AND an internal wavetable 😁 (no idea on the quality of the wavetable, as it is a generic made in China card). I will post a picture when it comes in.
It comes bundled with a Vibra16 soundblaster (so I can even do some comparison 😉)

Reply 6 of 20, by mkarcher

User metadata
Rank l33t
Rank
l33t
Gabriel-LG wrote on 2022-11-12, 15:51:

Vibra16 cards have poor FM (CQM is also software based, right?)

CQM is as hardware-based as OPL3: CQM is designed to sound similar enough to OPL3 without using any proprietary or patented technology by Yamaha. Software that is written for the OPL3 will work with CQM as well without any drivers "emulating" anything. As CQM is not identical to OPL3, it will sound different to OPL3. Most games chose parameters that make the OPL3 sound good. Sometimes "sounding good" and "sounding horrible" is just a little tweak on parameters, and as CQM sounds different, in same cases parameters that sound good on OPL3 sound bad on CQM. That's why, especially for games optimized for OPL3 or even OPL2 sound, CQM is usually frowned upon. There are rumors that some late FM game music tracks were actually composed targeted to CQM, but none of these games will work on a 286 processor.

Reply 7 of 20, by Gabriel-LG

User metadata
Rank Newbie
Rank
Newbie
mkarcher wrote on 2022-11-13, 17:48:

CQM is as hardware-based as OPL3: CQM is designed to sound similar enough to OPL3 without using any proprietary or patented technology by Yamaha. Software that is written for the OPL3 will work with CQM as well without any drivers "emulating" anything. As CQM is not identical to OPL3, it will sound different to OPL3. Most games chose parameters that make the OPL3 sound good. Sometimes "sounding good" and "sounding horrible" is just a little tweak on parameters, and as CQM sounds different, in same cases parameters that sound good on OPL3 sound bad on CQM. That's why, especially for games optimized for OPL3 or even OPL2 sound, CQM is usually frowned upon. There are rumors that some late FM game music tracks were actually composed targeted to CQM, but none of these games will work on a 286 processor.

I should really dive into DOS sound internals (someday).
I always assumed SoundBlasters and FM required the CPU to perform controller specific tasks upon interrupts and DMA events. I assumed that the drivers were supplying this controller specific code. Like said, I never took a look under the hood 😉

Reply 8 of 20, by mkarcher

User metadata
Rank l33t
Rank
l33t
Gabriel-LG wrote on 2022-11-13, 22:11:

I should really dive into DOS sound internals (someday).
I always assumed SoundBlasters and FM required the CPU to perform controller specific tasks upon interrupts and DMA events. I assumed that the drivers were supplying this controller specific code. Like said, I never took a look under the hood 😉

In a nutshell: The SoundBlaster has two completely separate kinds of sound generation:

  1. Digitized sound playback: The SoundBlaster uses DMA (usually) to fetch sound that has been digitized at a fixed rate from memory. When it is finished, it generates an IRQ (interrupt request). A lesser known fact: The sound blaster is able to queue the next playback instruction that is started as soon as the first playback instruction is complete, so gapless playback is possible. You can use this kind of sound playback to play back precomputed samples (like .WAV files) one at a time. Those samples are typically loaded once into RAM and can be played back without significant CPU overhead. You can also use the CPU to mix different samples at different volumes (in case of stereo: at different panning positions), possibly sped up or slowed down in real time, and have the card play back this real-time generated sound. This is necessary if multiple sound effects are to be played at once.
  2. Music playback: This part of the Sound Blaster is a 100% clone of the AdLib music card, and it is basically just a Yamaha OPL2 synthesizer chip glued to the ISA bus. Later versions of the Sound Blaster (starting at the Soundblaster Pro 2.0) use the improved OPL3 chip that can generate Stereo sound and is able to synthesize more complex sounds. The synthesis method performed inside the OPL2/OPL3 chip is called "FM" for "frequency modulation", although strictly speaking the OPL2 uses "phase modulation". Frequency and Phase modulation are very similar mathematical methods to distort a sine wave to make it more "interesting" and "pleasing to the ear". You can initialize 9 "music channels" individually to play back sounds with a specific tone, and then you can just start and stop notes on those 9 channels. Every channel can only play one note at a time. The CPU just needs to send the "start note" and "stop note" commands at the required points in time.

Reply 9 of 20, by Gabriel-LG

User metadata
Rank Newbie
Rank
Newbie
mkarcher wrote on 2022-11-14, 17:09:
In a nutshell: The SoundBlaster has two completely separate kinds of sound generation: […]
Show full quote

In a nutshell: The SoundBlaster has two completely separate kinds of sound generation:

  1. Digitized sound playback: The SoundBlaster uses DMA (usually) to fetch sound that has been digitized at a fixed rate from memory. When it is finished, it generates an IRQ (interrupt request). A lesser known fact: The sound blaster is able to queue the next playback instruction that is started as soon as the first playback instruction is complete, so gapless playback is possible. You can use this kind of sound playback to play back precomputed samples (like .WAV files) one at a time. Those samples are typically loaded once into RAM and can be played back without significant CPU overhead. You can also use the CPU to mix different samples at different volumes (in case of stereo: at different panning positions), possibly sped up or slowed down in real time, and have the card play back this real-time generated sound. This is necessary if multiple sound effects are to be played at once.
  2. Music playback: This part of the Sound Blaster is a 100% clone of the AdLib music card, and it is basically just a Yamaha OPL2 synthesizer chip glued to the ISA bus. Later versions of the Sound Blaster (starting at the Soundblaster Pro 2.0) use the improved OPL3 chip that can generate Stereo sound and is able to synthesize more complex sounds. The synthesis method performed inside the OPL2/OPL3 chip is called "FM" for "frequency modulation", although strictly speaking the OPL2 uses "phase modulation". Frequency and Phase modulation are very similar mathematical methods to distort a sine wave to make it more "interesting" and "pleasing to the ear". You can initialize 9 "music channels" individually to play back sounds with a specific tone, and then you can just start and stop notes on those 9 channels. Every channel can only play one note at a time. The CPU just needs to send the "start note" and "stop note" commands at the required points in time.

Thanks for the explanation 😀 and then all soundblaster compatible cards implement the same interface(s) as the soundblaster. So I guess the "drivers" for these boards only initialize/setup the card.

Reply 10 of 20, by mkarcher

User metadata
Rank l33t
Rank
l33t
Gabriel-LG wrote on 2022-11-19, 16:23:

Thanks for the explanation 😀 and then all soundblaster compatible cards implement the same interface(s) as the soundblaster. So I guess the "drivers" for these boards only initialize/setup the card.

Yeah, that's it. Those drivers don't load as resident programs (we are not talking about software-level SB emulation, like on the GUS or with some PCI cards), they are used to set IRQs, DMA channel(s), possibly the base address and whether the CD interface is enabled. On some cards, these tools also can switch between a Soundblaster emulation mode and a more native "Windows Sound System" mode. Also, a lot of original Creative Labs cards need initialization like that: Starting with the second generation of the Sound Blaster 16, only the port address of the Sound Blaster is jumpered, and IRQ and DMA channels are set by software. For original Creative SB16 cards, that's what you call "DIAGNOSE /S" for from autoexec.bat.

Reply 11 of 20, by zyga64

User metadata
Rank Oldbie
Rank
Oldbie

CMI8330 cards also works well with 286 (in my PC for example 😉
ALS100+ actually also uses external FM chip All the truth about FM in ALS100 Plus+ cards (includes facts, tech info and tests)
In the past I had problems with ALS100 card (not +) on 286, because its driver denied to work but now you can use Unisound.

1) VLSI SCAMP /286@20 /4M /CL-GD5422 /CMI8330
2) i420EX /486DX33 /16M /TGUI9440 /GUS+ALS100+MT32PI
3) i430FX /K6-2@400 /64M /Rage Pro PCI /ES1370+YMF718
4) i440BX /P!!!750 /256M /MX440 /SBLive!
5) iB75 /3470s /4G /HD7750 /HDA

Reply 12 of 20, by Gabriel-LG

User metadata
Rank Newbie
Rank
Newbie

So here is the card OPTi 82C929A card I received:

IMG_20221118_210204232.jpg
Filename
IMG_20221118_210204232.jpg
File size
1.64 MiB
Views
1028 views
File license
Fair use/fair dealing exception
IMG_20221118_210216188.jpg
Filename
IMG_20221118_210216188.jpg
File size
1.15 MiB
Views
1028 views
File license
Fair use/fair dealing exception

I cannot find any brand/type the writing on the silkscreen yields no google results. It looks to me to be a generic whitebox design. It does sound quite decent though.
It has a Yamaho OPL3 clone (LS-212) and an OPTi 82c941 (AdMOS QDSP QS700) synthesizer with an AdMOS 1Mbyte + 128kbyte ROM.
It has one jumper, I suspect it is for disabling the wavetable.

The only problem is that it does not work in my 286 machine 🙁 The driver installer does run, but when it attempts to playback a sample, the soundcard produces distorted wite-noise and the installer reports a hardware error. I have tried all possible DMA/IO/IRQ settings, no luck 🙁

I started to suspect the card was broken, but then it worked fine when I installed it in a Pentium II machine.

When I tried the SB Vibra 16XV (CT4170) in my 286, it did work, but there also the sound was distorted; the sounds where recognisable, but mixed with white noise and rythmic clicks.
Any idea what could be wrong with my 286? (It is a Philips P2230 with a G2 chipset and quite a limited BIOS rom). I installed a Trident TVGA9000 and that is working fine btw.

Reply 13 of 20, by Gabriel-LG

User metadata
Rank Newbie
Rank
Newbie
zyga64 wrote on 2022-11-19, 16:38:

CMI8330 cards also works well with 286 (in my PC for example 😉
ALS100+ actually also uses external FM chip All the truth about FM in ALS100 Plus+ cards (includes facts, tech info and tests)
In the past I had problems with ALS100 card (not +) on 286, because its driver denied to work but now you can use Unisound.

I have not found any CMI8330 cards here yet, but I will add it to the list.
With regards to the ALS100+, I read the thread, very interesting 😀 I have also read reports of its poor FM quality though. Is this then purely psychological (the expensive wine effect)?

Reply 14 of 20, by zyga64

User metadata
Rank Oldbie
Rank
Oldbie
Gabriel-LG wrote on 2022-11-19, 17:05:

Any idea what could be wrong with my 286? (It is a Philips P2230 with a G2 chipset and quite a limited BIOS rom). I installed a Trident TVGA9000 and that is working fine btw.

I have no idea, it may be something with ISA bus termination ? https://www.smbaker.com/diagnosing-xi-8088-stability-issues

My 286 for example has problems with Hercules, CGA and EGA cards, despite mono/color jumper on board and bios settings (CGA80/CGA40/Mono/Color).
It beeps and displays nothing. In contrast those cards works fine in my 430HX Pentium board.
But, all ISA VGA I've tested just works with this 286 board (Trident 9000c, WD90C30 and CL-GD5422), even if I set jumper incorrectly - but of course displays message about incorrect settings.
Second thing - I found one sound card: 1st generation Aztech sound card (which supports SB Pro and COVOX - which I found very fitting for this PC) which works ..well up to some point. It boots normally, I can start some program, plays music and then suddenly freezes whole machine, keyboard stops responding etc. This happens at various times after turning on the PC. Other sound cards works just fine 😀 And guess what ? This card works without problems in other computers (486, Pentium).
Figuring out the behavior was beyond my skills, so I've just sold this interesting Aztech sound card and now I'm happy with CMI8330.

1) VLSI SCAMP /286@20 /4M /CL-GD5422 /CMI8330
2) i420EX /486DX33 /16M /TGUI9440 /GUS+ALS100+MT32PI
3) i430FX /K6-2@400 /64M /Rage Pro PCI /ES1370+YMF718
4) i440BX /P!!!750 /256M /MX440 /SBLive!
5) iB75 /3470s /4G /HD7750 /HDA

Reply 15 of 20, by Jo22

User metadata
Rank l33t++
Rank
l33t++
zyga64 wrote on 2022-11-19, 18:32:

My 286 for example has problems with Hercules, CGA and EGA cards, despite mono/color jumper on board and bios settings (CGA80/CGA40/Mono/Color).
It beeps and displays nothing. In contrast those cards works fine in my 430HX Pentium board.

This issue could be caused by a bad signal on the OSC pin.
VGA cards tend to use their own signal instead.

http://www.os2museum.com/wp/the-isa-osc-mystery/

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 16 of 20, by zyga64

User metadata
Rank Oldbie
Rank
Oldbie
Jo22 wrote on 2022-11-20, 08:24:
This issue could be caused by a bad signal on the OSC pin. VGA cards tend to use their own signal instead. […]
Show full quote
zyga64 wrote on 2022-11-19, 18:32:

My 286 for example has problems with Hercules, CGA and EGA cards, despite mono/color jumper on board and bios settings (CGA80/CGA40/Mono/Color).
It beeps and displays nothing. In contrast those cards works fine in my 430HX Pentium board.

This issue could be caused by a bad signal on the OSC pin.
VGA cards tend to use their own signal instead.

http://www.os2museum.com/wp/the-isa-osc-mystery/

Thank you. I'll check it !

1) VLSI SCAMP /286@20 /4M /CL-GD5422 /CMI8330
2) i420EX /486DX33 /16M /TGUI9440 /GUS+ALS100+MT32PI
3) i430FX /K6-2@400 /64M /Rage Pro PCI /ES1370+YMF718
4) i440BX /P!!!750 /256M /MX440 /SBLive!
5) iB75 /3470s /4G /HD7750 /HDA

Reply 17 of 20, by mkarcher

User metadata
Rank l33t
Rank
l33t
Jo22 wrote on 2022-11-20, 08:24:
This issue could be caused by a bad signal on the OSC pin. VGA cards tend to use their own signal instead. […]
Show full quote
zyga64 wrote on 2022-11-19, 18:32:

My 286 for example has problems with Hercules, CGA and EGA cards, despite mono/color jumper on board and bios settings (CGA80/CGA40/Mono/Color).
It beeps and displays nothing. In contrast those cards works fine in my 430HX Pentium board.

This issue could be caused by a bad signal on the OSC pin.
VGA cards tend to use their own signal instead.

http://www.os2museum.com/wp/the-isa-osc-mystery/

Good idea thinking about OSC in case of CGA and EGA cards! But that theory doesn't apply to MDA/Hercules. The monochrome cards are clocked at 16.257MHZ (IBM original) or 16.000MHz (most clones) and do not rely on OSC on ISA. Another reason the 286 fails with Hercules, CGA and EGA card might be to aggressive ISA bus timing (clock at 12MHz or little to no wait states). These cards were designed to work at 4.77MHz bus clock with an ISA cycle taking 4 clocks, i.e. around 1.2 megabuscycles per second. A 286 processor at 10MHz is able to generate 5 megabuscycles a second, unless the mainboard limits the speed (it's the job of a PC-compatible mainboard to do so!). A CGA or MDA card is likely to not work when accessed that fast. So another idea than checking the OSC pin is to check whether there are I/O speed configuration options on that board.

Reply 18 of 20, by Gabriel-LG

User metadata
Rank Newbie
Rank
Newbie
zyga64 wrote on 2022-11-19, 18:32:

I have no idea, it may be something with ISA bus termination ? https://www.smbaker.com/diagnosing-xi-8088-stability-issues

Jo22 wrote on 2022-11-20, 08:24:

This issue could be caused by a bad signal on the OSC pin.
VGA cards tend to use their own signal instead.

http://www.os2museum.com/wp/the-isa-osc-mystery/

mkarcher wrote on 2022-11-20, 08:59:

Good idea thinking about OSC in case of CGA and EGA cards! But that theory doesn't apply to MDA/Hercules. The monochrome cards are clocked at 16.257MHZ (IBM original) or 16.000MHz (most clones) and do not rely on OSC on ISA. Another reason the 286 fails with Hercules, CGA and EGA card might be to aggressive ISA bus timing (clock at 12MHz or little to no wait states). These cards were designed to work at 4.77MHz bus clock with an ISA cycle taking 4 clocks, i.e. around 1.2 megabuscycles per second. A 286 processor at 10MHz is able to generate 5 megabuscycles a second, unless the mainboard limits the speed (it's the job of a PC-compatible mainboard to do so!). A CGA or MDA card is likely to not work when accessed that fast. So another idea than checking the OSC pin is to check whether there are I/O speed configuration options on that board.

Thanks, these are some good points to check. I will see if I can take the PC to my work's electrical lab and measure the ISA supply voltages and clocks.
I am not so sure on how to measure the wait states though. But the BIOS has a setting for clock speeds I will try to set it to 8MHz with 1 wait state (slowest option) and see how this effects the sound. (The other options are "8MHz - 0 wait" or "12.5MHz - 1 wait")

Could this also be a problem in the digital domain, like BIOS/chipset/setting issue that is interfering with DMA?

Reply 19 of 20, by Jo22

User metadata
Rank l33t++
Rank
l33t++

Not sure if it's helpful, but my 286 PC in which I had my PAS16 installed in was
a 12MHz model from ~1988/89, with on-board VGA..
From what I remember, it ran ISA at CPU speed - 12 MHz.

I mean: The AT-Bus (later known as ISA) was essentially identical with the 286 front side bus (FSB).

So it's possible that my PC ran ISA directly, synchronous with the CPU.
Sure, there's also the possibility that the chipset had decoupled it.

But 10 or 12 MHz systems already existed before the Gang of Nine defined ISA's clock speed of 8.33 MHz.
So 12 MHz marks the very limit for systems running their buses at CPU speed, I guess.

Last but not least, I'm not sure if my old motherboard used waitstates at the time.
It was a second-hand PC without any documentation. 🤷‍♂️

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//