Writing DOS Soundcard Drivers in C

I am interested in writing DOS Soundcard Drivers in C or whatever language works for modern P4 and above computers.

As you know the sound cards are there and work in Windows XP but not DOS.

It is my understanding that any soundcard can work in DOS, it's just that the software developers aren't writing the DOS drivers for them.

Can this be done? Is anybody out there writing device driver software for modern equipment to work in DOS? Please let me know if you are! Thanks.


  • I feel this could be done by one person for XP to run many DOS programs in a DOS box that interface directly to the sound hardware by attempting to translate sequences of hardware I/O operations into API calls.

    But for down-to-the-ground DOS there are limited options. Some (most?) software and hardware companies maintain that their ideas are intellectual property (THE worst idea EVER, knowledge simply cannot be commoditized as it can't be returned) and should remain trade secrets. You could try requesting the information anyway but you may have no choice but to sign a non-disclosure agreement, assuming they don't ignore you because you're only an individual. Plenty of information on common soundcards is available online though, some of it probably reverse-engineered by people in your situation, which by the way is yet another option. Perhaps you should aim for a very common onboard audio solution called the AC97, some code was uploaded by jeffleyda a while back.

    But in DOS you still need a way to translate what the program wishes to do with the sound card's hardware to what actually gets done. A few DOS programs I've seen use calls to an actual resident driver, most likely listed in CONFIG.SYS or AUTOEXEC.BAT, to perform the required services (search RBIL) but most I've come across directly interface with the SB16 via port I/O. In order to translate the attempted port I/O instructions from one target card to another in DOS you would be forced to write an entire VM86 monitor just to be able to trap the I/O ops to see what the host program is trying to do in the first place. To be able to emulate any card that has a Windows driver you would additionally need to write a driver wrapper (http://en.wikipedia.org/wiki/Ndiswrapper), as well as emulating parts of Windows to suit the driver. For the overwhelming majority of individual hobbyist programmers, including me, this is pretty much out of the question but it is not an impossibility. I mention it for completeness.
  • Did anyone get anywhere with this project? Or does anyone know any more information?

    Yes it would be good if there was a guide/tutorial on how-to program/write own DOS sound drivers... especially not we have netbooks, etc.
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!