Hi Eric,

Although the VBE/AI standard was initially envisioned to be provided in the
BIOS of sound cards in the same way as how the VBE standard was integrated
in the BIOS of graphics cards, it could also be implemented in the form of
a loadable DOS driver.

There are two kinds of VBE/AI drivers: WAVE drivers (for digital audio) and
MIDI drivers (for music). The drivers would expose a high level audio API
through int 10h, as an extension to the VBE graphics API.

This is not unlike the DIGPAK and MIDPAK drivers from John Ratcliff of The
Audio Solution, which would expose a high level audio API that could be
accessed through int 66h. As a matter of fact, John Ratcliff was listed as
a committee member on the VBE/AI specification PDF document, as was John
Miles of the Miles Design AIL drivers. These driver models probably formed
the basis for developing this attempt at an industry standard DOS audio API.

As far as I know, no games supported VBE/AI directly (anyone please correct
me if I'm wrong!), but some games that were built on either
MIDPAK/DIGPAK or Miles/AIL drivers shipped with "wrapper" drivers that
allowed such games to work with sound devices that had VBE/AI drivers. You
can recognize those drivers by the file names VESADIG.ADV and
VESAMID.ADV (in the case of Miles/AIL) and DIGVESA.COM in the case of
DIGPAK.

Now you might be wondering: what sound devices actually had VBE/AI drivers?
Well, the VBE/AI SDK came with wave drivers for the following
soiund devices:

WAVE drivers: Sound Blaster (and compatibles), Pro Audio Spectrum, Disney
Sound Source
MIDI drivers: OPL2 (Adlib and compatibles), MPU-401

The SDK that included these drivers (TSRs in the form of loadable COM
files) can be downloaded here:

   - http://cd.textfiles.com/freedom/CODE/SOUND/VAISDK.TXT
   - http://cd.textfiles.com/freedom/CODE/SOUND/VAISDK.ZIP

The aforementioned VBE/AI wrapper drivers for Miles/AIL and DIGPAK can be
found through a bit of Googling on-line. They shipped with some games. John
Miles released his AIL2 drivers as open source some years ago, but he
didn't write the VBE/AI wrapper drivers and he doesn't know who did,
unfortunately. 😞 (If anybody reading this does know, please reply! Thanks.)

The official VBE/AI specification can be found as a PDF document on-line.
Although this is likely considered a defunct standard these days, I'm not
sure whether it's legal to freely distribute that document. Perhaps we'll
have to contact VESA for a clarification on the redistribution of
unsuccessful legacy standards such as this one.

Now the interesting part is that if you combine that VBE/AI WAVE driver for
the Disney Sound Source with the VESADIG.ADV Miles/AIL wrapper driver, you
can add Disney Sound Source support to any game that uses Miles Design AIL2
drivers. I successfully tested this with Dune 2, a game that does not
support the Disney Sound Source out of the box. There is quite an extensive
list of games that use AIL2 drivers and could thus be patched to support
any audio device that has VBE/AI drivers.

Now VBE/AI has been proposed before as an audio API standard for FreeDOS to
standardize on:
http://wiki.freedos.org/wiki/index.php/(Free)DOS_development_wishlist

Of course, this would become a more interesting option as open source
VBE/AI drivers are developed for some modern audio devices, such as PCI
sound cards, AC'97, Intel HD Audio and perhaps even USB audio. FreeDOS
could then start shipping with those drivers.

And by patching many DOS games that rely on AIL2 drivers to use VESADIG.ADV
and possibly also VESAMID.ADV, such games could be made to work with such
open source drivers as well. It would be especially nice if we could find
out who currently owns the right to the source code of those wrapper
drivers and if that person could be persuaded to release them as open
source, so such a patching utility could also be distributed with FreeDOS.

All in all, an ambitious project perhaps, but a nostalgic geek like me can
dream, right? 😉

Anyway, my first attempt at something like this would be to combine the
ich2player code and vsb code to develop an open source VBE/AI driver for
AC'97 audio devices that can be found integrated in many motherboards in
the early to mid 2000s. That doesn't cover everything out there, but it
would be a start.

Again, help is welcome! If there is enough interest to persue this further,
I'll ask in the freedos-developers mailing list whether there are any
experienced assembly coders there who would be willing to help me with this.

As for why I asked for QPI support in Jemm, that's the API that was used in
the vsb source code. But reading further into the JLM/jload documentation,
apparently the JLM API is basically a subset of the Windows 3x/9x VMM API,
so it might be worth porting it to a JLM after all. I have zero experience
with that, though, so again, help would be welcome.

On Wed, Aug 19, 2020 at 8:45 AM Eric Auer <e.a...@jpberlin.de> wrote:

>
> Hoi Volkert,
>
> cool that you are working on an AC97 VBE/AI sound
> system! The question is: Do you know any DOS games
> which support VBE/AI for sound? I think only very
> few "sound and graphics" cards had that in their
> BIOS and therefore very few games supported it?
>
> Regards, Eric
>
> > * https://github.com/volkertb/temu-vsb
> > * https://github.com/volkertb/ich2player
> > * https://github.com/volkertb/JUDAS
>
> > I opened a feature request on GitHub for QPI support in Jemm:
> > https://github.com/Baron-von-Riedesel/Jemm/issues/6
>
> PS: Why QEMM QPI? I think there was an
> easier MS EMM386 API for I/O hooking.
>
>
>
> _______________________________________________
> Freedos-user mailing list
> Freedos-user@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/freedos-user
>
_______________________________________________
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user

Reply via email to