Hi
My thoughts are that with DTA, there is already sound on DOS, you can play wav files in DOS VDM sessions with the .exe it provides. I'm guessing that DTA connects the DOS VDM session to OS/2 Uniaud to do that. The issue would be that VSB will need to be modified to translate the sound blaster to the DTA.
Here I found a git with VSB and TEMU (Tandy 1000 computer sound synthesizer emulator ) and Assembly is required to understand it.
Sadly I'm only guessing since I'm not a developer. More opinions are welcome, maybe VSB is not the way to go.
Regards
While I am not a developer I used to work on John Gow on the DTA. I ran the website and tested the DTA.
In the DDK from IBM is something that LOOKS like the DDK. Do not use it it has horrible perfomance with playing audio in WIN/OS2 duo to the many ring switching it does (sending audio from ring3 to ring 0 and visa versa.
The WIN/OS2 audio support is pretty simple. Oke well its not. What makes it more simple is that you the Windows 3.1 MCI audio interface.
An application can tell Windows/WIN/OS2 "Play this audio sample". The audio driver then deels with this.
The whole interface is not hardware depended. The WIN/OS2 audio driver is effectively an undressed Windows 3.1 audio driver.
All data it receives is send the DTA.SYS. Now here is where it gets interesting.
The DTA.SYS driver is effectively an R0STUB.SYS driver. This MMOS2 driver R0STUB.SYS sends audio buffers to the audio card driver that is active. In most cases
UNIAUD16.SYS.
DTA.SYS does the same it sends its audio data directly to the audio driver. Now to prevent MMOS/2 from using the audio card while the DTA is playing audio from WIN/OS2 an OS/2 deamon runs in the background that blocks the audio driver from WIN/OS2.
Now to the juicy part or more complex of portion. DOS support in a VDM is going to be slightly more complicated if you want to have GOOD SB emualtion.
I used to play a lot with Gravis Ultrasound cards and they provide soundblaster emulation with a DOS TSR.
In OS/2 we would have two issue's. The first is that DMA timing in the VDM needs to be very good. See this VDMA.SYS note from Martin Kiewitz:
https://svn.code.sf.net/p/air-boot/code/special/VDDs/vDMA/"The original VDMA driver done by I.B.M. was fixed, patched and extended
for about 10 years. Still the DMA port emulation is not quite complete
or accurate and some things weren't done in a really efficient manner.
DMA in VDMs is mostly used for sound output of games and due to limits
of the original driver, games like Prince of Persia 2, Goblins 3 and
Sam'n Max didn't work at all or not right.
Additionally my VSOUND driver that emulates a Soundblaster card in 100%
software needed a better API for virtualizing DMA transfers."
But then we have another small issue. The DTA supports MIDI playback so how do we deal with OPL 3 support ?
Effective the only way I could think of is if the wave audio AND the OPL3 music (which would be emulated) is mixed into the wave audio data send to the DTA.
You see all audio drivers only support only audio channel currently. I think UNIAUD can do more but we are stuck with some more items to get DOS games with audio support to work.
From what I can tell this is not just a matter compiling a TSR and hooking it on the DTA.
Roderick