First post, by Action Replay
Please bear with me, this is part brain-dump and part questions!
The original ISA Adlib cards did not use an IRQ, they only used CPU bus addresses 388h and 389h. Ref:
http://www.oplx.com/opl2/docs/adlib_sb.txt
388h is read/write and the CPU can read the Adlib card's status.
I am assuming the bus data lines went to all ISA slots? And this varies from PCI because from what I can tell (and please correct me if I'm wrong) to read from and write to the PCI bus is dependent on the card identifying itself to the BIOS during boot up, giving a vendor id, device id, card type, negotiating for resources and these being allocated by the BIOS. So this stops cards just invisibly snooping on bus lines and also writing to the bus too.
So what are the hurdles to get over for designing a PCI Adlib card? I am so impressed by all the ISA sound card recreations in development/production on here. A PCI Adlib is something with maybe less impressive features compared to the enhanced SB clones (no digital audio) but could bring the classic OPL FM sound to PC's without ISA slots (or LPT ports! Much respect to serdashop for their creations too.)
The OPL chip would need some sort of interface to the PCI bus. Or would it? There are off-the-shelf PCI interface chips such as the PLX PCI range suitable for interfacing ISA designs to the PCI bus. But at around 40 €/$ each this would increase the cost of a card significantly:
https://eu.mouser.com/ProductDetail/Broadcom- … p1UyIOdCg%3D%3D
Surely modern multi-purpose microcontrollers from Atmel/ST would be up to the job of doing this interfacing? Perhaps when you're only dealing with I/O addresses and not IRQs you don't need much sophistication. Check out these PCI BIOS post-code cards for example. These cost a few dollars and use programmable logic chips:
For a few dollars you get a card that reads from (IIRC) address 80h on the PCI bus during boot time. And maybe beyond boot time?
Would it be possble to do similar for 338h and 389h? Perhaps only 80h is forwarded to all PCI slots and only during boot.
Perhaps writing to addresses on the PCI bus might require full enumeration of the card at boot time however.
Ideas and suggestions are welcome! And thank you all for creating such a great community here.