First post, by LSS10999
I was thinking about a way to get things work again in DOS as I used to, but I can't now.
At first I believed in the TDMA support of ESS sound cards, but after I recently upgraded my computer with a GA-M720-US3 (nForce 720D, Socket AM2+) motherboard I found a big problem... Even though FM music can still be produced flawlessly, I can no longer hear any digitized sounds. (When a game tries to play digitized sound, it can not be heard and the game may crash).
At least I know that some onboard devices occupied both IRQ 5 (onboard RTL8168 network card) and IRQ 7(SMBus controller, onboard 1394 controller and PCI-E display controller). It seems to because of that, but I have no way to actually move these devices away from these vital IRQs (there are no IRQ assignment settings for onboard devices in BIOS, and changing IRQ for individual PCI slots won't work)... Besides, I found that my onboard 1394 controller is on address 8032h (which is close to 8000h which was required as DMA base for YMF7x4)
I tried several cards that can hopefully support DOS, but none of them really worked.
ESS ES1938: Music fine, no sound.
Aureal AU8820: Bad music quality, can play sound but it just loops.
CMI8738: Doesn't work at all. (DOS Driver cannot find the card)
YMF7x4: Still work (However, the Sound Blaster 8-bit audio option in Test was grayed out while the other two tests are fine). Music fine, no sound, and I have to set STACKS=12,256 to solve a stack overflow problem.
Actually these SBPro-compatible soundcards have no support for 64-bit Windows I'm currently using, so I keep the onboard HD audio for Windows.
Maybe the problem lies deeper than just IRQ... AFAIK, DMA is always supported by several ways, to make it work on any chipset including the newest ones. I just don't have any workaround about how to get the required IRQ and I/O addresses totally free... Also, I don't know if it's possible to direct the IRQ and I/O signals to software if the hardware IRQ and I/O is occupied by something else, in real-mode DOS... But whatever it is, I was just wondering if it's possible to emulate an environment that's capable of letting a SBPro-compatible PCI card (There have been a lot of cards that are SBPro-compatible at that time, notable Aureal, VIA, ESS, Creative and YAMAHA) produce sound properly in real-mode DOS...
BTW, actually, I wasn't talking about DOSBox here, but actually I think that program is just for DOS games of 80s (since DOSBox emulates a 386 CPU, and these very early games can be running too fast on modern computers). Most 90s DOS games are always compatible with modern systems and suffer no graphics/speed penalties. (some games may perform better if the game supports modern instructions, or VBE2/3.) What made these games lose fun on modern systems, I think, is just the sound support.
And I'm not certain whether it's possible to let DOSBox try to use as many real and compatible hardware as possible... (For example, to let DOSBox produce FM/Adlib audio directly from an FM chip on a compatible PCI sound card like YMF7x4 and ESS audio cards like ES1938, if such devices were detected in the system, and also route the audio signal into the default device, the device that's actually plugged onto the speaker). Also, I'm not sure if it's possible to let DOSBox directly use the real system CPU and the real graphics card, since as I said, most 90s DOS games will work just fine on modern CPU and graphics card and they should only be used if you want to run a DOS game of 80s. Maybe 90s games can run smoother with real, capable hardware (AFAIK some 90s games relying on at least Pentium processor can be very slow with a lot of skip frames, and some games may have delays when producing sound, for example, the firing sound is played a bit later after fired, when played in DOSBox).
Hope someone can give me answers for all these things... And after all, real-mode DOS ain't dead. It can still function as it used to be...