VOGONS


First post, by digger

User metadata
Rank Oldbie
Rank
Oldbie

With all the wonderful new parallel audio devices that @dreamblaster has been conjuring up and cranking out lately, to what extent would it be possible to share a single parallel port among some of them?

The reason I'm asking this is because many computer models that these devices would be perfect for, such as Microchannel-based PS/2 machines and older laptops lacking sound cards, have only one parallel port and it is not easy to add an additional parallel port to those machines. Microchannel LPT cards are probably just as rare and expensive as Microchannel sound cards. As for older laptops, perhaps there are PCMCIA cards out there that would add an additional parallel port to such machines, but even if that would work, that might be too big of a hassle.

So assuming a non-ISA system with only one parallel port, that gives us the problem of having to choose between music and digital effects, when ideally, we'd like to have both in our DOS games, just like a fully-fledged sound card would provide.

Now combining a Covox Speech Thing with an OPL2LPT on a single parallel port would probably be tricky methinks, since a Covox requires high precision timing when sending samples to it and sending OPL2 control signals to it in between would probably disrupt that. But I was thinking, since the Disney Sound Source has a FIFO buffer, perhaps that would allow OPL2 signals to be mixed with DSS output data more easily, since a hypothetical combined device could simply tell the computer that the FIFO buffer is currently full whenever it's in the middle of processing OPL2 data. Would that work? And could it be done in a combined device, even while preserving native DSS compatibility?

Additionally, perhaps a "DSS Plus" or "DSS 2.0" standard could be developed for such a combined device, which would allow the output bitrate to be adjusted from 7 kHz to 11 kHz (and perhaps also 22 kHz), which would perhaps make Sound Blaster emulation in software easier for games that do not support DSS out of the box. The adlipt TSR could then perhaps be extended to provide such Sound Blaster emulation in addition to rerouting OPL2 signals, all on a single parallel port device. And perhaps the FIFO buffer could be made a bit larger to allow for better interleaving of OPL2LPT signals with DSS output streams and possibly less strain on slower CPUs?

Alternatively, perhaps an "OPL2COM" device that would plug into a serial port could provide a solution here, since pretty much any older machine that has a parallel port usually also has at least one and often two serial ports. Such a device could then be used together with a CVX4 or some kind of DSS-clone in the parallel port.

Of course, I'm just thinking out loud here. Perhaps none of this makes much sense. 🤣 What do you all think?

Reply 1 of 9, by matze79

User metadata
Rank l33t
Rank
l33t

There are ESS based Soundcards out there that Plug into LPT Port.
Providing Adlib and SB Emulation at once, but have also a lot of compatiblity issues.

i don't think a old 386/486 is fast enough to Emulate SB and reroute Adlib to LPT 😀

Some other Sound Devices are also only PCI connected DAC with DMA using a TSR for SB emulation.

Maybe its possible to use ECP (DMA Access) to speed things up.

https://www.retrokits.de - blog, retro projects, hdd clicker, diy soundcards etc
https://www.retroianer.de - german retro computer board

Reply 2 of 9, by digger

User metadata
Rank Oldbie
Rank
Oldbie

@matze79 You might be right about an older 386/486 machine being too slow to both emulate a Sound Blaster and reroute Adlib signals to the LPT port through emulation at the same time. But what I had in mind was providing native DSS compatibility for games that support them, while at the same time allowing the processing of OPL2 commands sent by patched games. That way, no emulation would have to take place.

But let's take a step back from the specific hardware combinations and simplify the discussion here:

Is there any feasible way at all to create an open hardware product in the same vein as the OPL2LPT and add some kind of simultaneous support for digital audio output to it, all on a single parallel port? And could it be made to work with a reasonable number of MS-DOS games even on older systems, either through emulation or through patching?

The external sound cards that you mentioned, such as this one reviewed on YouTube by VWestlife, indeed provide proof that all this can indeed be done on a single parallel port. Perhaps it would be possible to simply recreate these cards? Maybe those ESS chips can still be sourced somewhere? According to this post by @Paralel, the chipset in question is an ESS ES688P. I guess the 'P' suffix at the end denotes a parallel port variant. However, I couldn't find any info about that specific chip on-line. Whenever I Googled it, only results relating to regular ES688 based cards would show up.

Anyone here who could shed some more light or provide some insight on this?

Reply 3 of 9, by 640K!enough

User metadata
Rank Oldbie
Rank
Oldbie

This idea should be quite feasible. I have suggested a multiple-parallel-port device some time ago, and member Scali here had a few more concrete design suggestions. However, dreamblaster gave no indication that he has any interest in adding that to his product catalogue at the time.

Reply 4 of 9, by digger

User metadata
Rank Oldbie
Rank
Oldbie

Could you please post links to those suggestions of Scali's that you referred to, 640K!enough? I'm interested in reading them, but I couldn't easily find them with the forum search option. Thanks.

Reply 6 of 9, by digger

User metadata
Rank Oldbie
Rank
Oldbie

That seems practical. And given the fact that a Disney Sound Source works with a buffer, if there is a line on the parallel port that is not used by the DSS, that line could be used to select the address latch, use the address bus to switch to the data OPL2/OPL3 output, write whatever bytes you need to send to the music output, then quickly select the address latch again and switch back to the DSS. If that were to happen fast enough, the existing DSS functionality (in games that support it) would continue to work unhindered and the DSS would be none the wiser, being buffered anyway. That way, a redirected OPL2/OPL3 output (either patched in-game or through an emulator on 386+ systems) could be combined with digital out on games that support it.

Does all of this make any sense? I wish I was more of a hardware expert.

Reply 7 of 9, by matze79

User metadata
Rank l33t
Rank
l33t

yeah but cpu cycles will still be a problem.
its more intressenting for faster machines.

just use a few latches does not give you a true bus, you still can only communicate with one device at once.
maybe running into timing issues etc..

creating a device with multiple sound devices on one is no problem at all, but using them at same time...
you could switch with a software beetween each ic maybe.

https://www.retrokits.de - blog, retro projects, hdd clicker, diy soundcards etc
https://www.retroianer.de - german retro computer board

Reply 8 of 9, by 640K!enough

User metadata
Rank Oldbie
Rank
Oldbie
matze79 wrote:

yeah but cpu cycles will still be a problem.
its more intressenting for faster machines.

Actually, if you extend Scali's idea a little and include an MCU on the board, you can actually cut down on host CPU usage significantly. With the right design, you could probably bring the number of writes to the parallel port down to a total of four per device access, while still retaining the ability to address multiple devices. That could possibly be reduced even more if you compromise on flexibility a little.

matze79 wrote:

just use a few latches does not give you a true bus, you still can only communicate with one device at once.
maybe running into timing issues etc..

By definition, a bus only involves accessing a single device at the time. Even IRQs could be simulated via the parallel port, if that was desired. DMA access might be more tricky, and would likely end up emulated in software.

matze79 wrote:

creating a device with multiple sound devices on one is no problem at all, but using them at same time...
you could switch with a software beetween each ic maybe.

Devices that offered full Sound Blaster functionality via the parallel port were actually commercial products in the late 90s. Reportedly, they worked quite well. Remember that even 16-bit, 44.1 kHz stereo digital audio is only about 175 KiB per second; most parallel ports can manage that. Only thorough testing would establish the actual minimum requirements, but I suspect that even a modest 486 could manage a few games with a bit of 8-bit sound via the parallel port.

Reply 9 of 9, by digger

User metadata
Rank Oldbie
Rank
Oldbie

What I'd like to see is a design that would offer both music and digital audio on a single parallel port device, with emulation on faster machines and software patching for slower machines. Pretty much what is already being done to make the OPL2LPT work in existing games, but for both music and digital audio. A unified solution requiring only a single parallel port for everything would by far be the most flexible and hardware-compatible solution.

And like you said, such devices were already produced back in the day, so surely these days it should be possible for the community to develop one as a practical and affordable retro project. Especially if we were to build from the cool parallel port audio projects already going on. 😀