While digging into the implementation of Sound Blaster compatibility on PCI cards, I found an unexpected gem. Ensoniq’s U.S. Patent 5,790,837 includes partial source code for the Sound Blaster emulation driver used with the Ensoniq Soundscape VIVO boards, SSINIT.COM.
The VIVO boards were Ensoniq’s last ISA-based product (introduced in 1995) and shared a common trait with the PCI-based ES1370 and later devices: There was no hardware Sound Blaster compatibility. Instead, Sound Blaster digital audio as well as AdLib FM synthesis were emulated.
Now the VIVO was a bit of a mixed bag. While the Sound Blaster compatibility wasn’t bad, it required EMM386 and a TSR and was therefore fundamentally incompatible with certain games. The AdLib emulation was not so much emulation as approximation, as it tried to replace a FM synth with wavetable synthesis, with mixed results. On the upside, the wavetable synth (1MB ROM) was not at all bad, and the cards were cheap (and therefore used in many OEM systems).
The card used Sound Blaster emulation not unlike that of old Gravis UltraSound cards. The VIVO chip decoded the Sound Blaster address ranges but only triggered an NMI. The software driver did the actual work.
Ensoniq used clever (or possibly insane) techniques to ensure that the emulation worked even in protected mode, which was rather important at the time (think DOOM II). The driver hooked into EMM386’s VCPI implementation in order to keep control when a DOS extender switched to 32-bit protected mode.
So this would all be quite interesting, right? Unfortunately, the patent text does not contain the code. It’s only in the PDF version of the patent, it’s not OCRed, and the scan quality isn’t great.
It’s around 50 pages of assembler printouts, with a few pages of C thrown in. It’s unclear how complete the source code is. It includes code to do the hooking and at least some Sound Blaster, AdLib, and MPU-401 emulation, as well as the loader (actual SSINIT.COM), and SCOPE.EXE (written in C). It does not appear to include code related to the wavetable synth on the VIVO.
It is apparent that Ensoniq put the bulk of the code into extended memory in order to minimize conventional memory usage, which is itself at least somewhat interesting, if not unique or novel.
The SSINIT.COM source code indicates version 3.22, which matches the released VIVO drivers. All in all, the patent and the source code are interesting reading.
Note: Several versions of the patent exist, with as yet unknown differences.