Grzyb wrote on 2024-06-21, 10:40:
Note that there are programs that can use a WSS codec located at non-standard addresses (other than 530h, 604h, E80h, F40h), but there are also other problems related to PCI...
The big elephant in the room is third-party DMA. ISA sound cards get their sound data deliviered by the DMA controller. The sound card does not know what address the data is from. The sound application is not going to tell the sound card any address. It just tells the sound card: Play the data you receive from the DMA controller, and generate an interrupt after you received n samples. All sound cards from the 90s (or newer) have some means to provide gapless playback, so there is some way to have the interrupt generated without also stopping playback at the same time. The ISA DMA controller has no way to send data to a PCI sound card.
Getting digital sound on PCI sound cards to work with software written for ISA sound cards entails one of
- Virtualizing the DMA controller in software, and translating the DMA controller programming into equivalent instructions to the PCI busmaster controller on the PCI sound card
- Having a way to interface to ISA DMA from a PCI card. IIRC this is what PC/PCI aka SBLink is doing
- Having a protocol in which the mainboard and the PCI sound card cooperate to "hand over" some DMA channels to a hardware DMA controller emulation on the PCI sound card. This is what DDMA is doing.
Unless there is the required software (for the first method) or hardware (for the other methods) support, you can't get ISA compatible WSS (or SB) playback on a PCI card. Hardware support for the later two method is required on both the mainboard and the sound card.