VOGONS


Reply 21 of 569, by Duffman

User metadata
Rank Oldbie
Rank
Oldbie

@rasteri

Where can I find schematics for AMD motherboards?

MB: ASRock B550 Steel Legend
CPU: Ryzen 9 5950X
RAM: Corsair 64GB Kit (4x16GB) DDR4 Veng LPX C18 4000MHz
SSDs: 2x Crucial MX500 1TB SATA + 1x Samsung 980 (non-pro) 1TB NVMe SSD
OSs: Win 11 Pro (NVMe) + WinXP Pro SP3 (SATA)
GPU: RTX2070 (11) GT730 (XP)

Reply 22 of 569, by DracoNihil

User metadata
Rank Oldbie
Rank
Oldbie

I'm pretty sure if you got this thing working on MS-DOS, on protected mode games, then any ISA soundcard should work under Linux you just have to manually modprobe them. As far as I know none of the legacy soundcard modules were gotten rid of in ALSA. I had a CMI8738 sitting behind a PCI to PCIe bridge chip and even the OPL3 on it worked. ALSA used it for MIDI playback and everything.

“I am the dragon without a name…”
― Κυνικός Δράκων

Reply 23 of 569, by LSS10999

User metadata
Rank Oldbie
Rank
Oldbie
DracoNihil wrote on 2023-03-23, 15:19:

I'm pretty sure if you got this thing working on MS-DOS, on protected mode games, then any ISA soundcard should work under Linux you just have to manually modprobe them. As far as I know none of the legacy soundcard modules were gotten rid of in ALSA. I had a CMI8738 sitting behind a PCI to PCIe bridge chip and even the OPL3 on it worked. ALSA used it for MIDI playback and everything.

But you still need to initialize the LPC controller and the bridge first, be it from a quick DOS (followed by GRUB4DOS), or at bootloader level before booting the system of your choice.

Still, I wonder if it's possible to probe the LPC controller from Linux (though the controller itself is visible in /sys/devices). I've been looking for tools that could hopefully help me look into the controller but they've so far yielded no usable results... guess I still have to access it from DOS.

Reply 24 of 569, by DracoNihil

User metadata
Rank Oldbie
Rank
Oldbie
LSS10999 wrote on 2023-03-24, 01:36:

Still, I wonder if it's possible to probe the LPC controller from Linux (though the controller itself is visible in /sys/devices). I've been looking for tools that could hopefully help me look into the controller but they've so far yielded no usable results... guess I still have to access it from DOS.

Somebody would have to write the tool then. I've never messed around much with /sys/ in Linux but some things can be messed with just by echo'ing certain values to things.

“I am the dragon without a name…”
― Κυνικός Δράκων

Reply 25 of 569, by digger

User metadata
Rank Oldbie
Rank
Oldbie

Perhaps a "partial emulation" solution could work here? Maybe crazii's SBEMU project could be extended to support Sound Blaster cards in "direct mode" (non-DMA mode, plugged into a dISAppointment adapter) as a physical target device, while emulating a Sound Blaster with DMA in software. So instead of emulating an FM synth, a joystick port and an MPU-401 MIDI interface, it would allow those non-DMA parts to pass through to a physical card, while handling the missing DMA stuff in newer LPC implementations in software.

Reply 26 of 569, by rasteri

User metadata
Rank Oldbie
Rank
Oldbie
digger wrote on 2023-03-24, 10:50:

Perhaps a "partial emulation" solution could work here? Maybe crazii's SBEMU project could be extended to support Sound Blaster cards in "direct mode" (non-DMA mode, plugged into a dISAppointment adapter) as a physical target device, while emulating a Sound Blaster with DMA in software. So instead of emulating an FM synth, a joystick port and an MPU-401 MIDI interface, it would allow those non-DMA parts to pass through to a physical card, while handling the missing DMA stuff in newer LPC implementations in software.

Yeah I was thinking something similar. SBEMU could just generally be repurposed to provide any missing features of any soundcard - like MIDI without a waveblaster, or ultrasound on soundblasters, etc

Although at what point do you just say "to hell with it" and just emulate everything? 😀

Reply 27 of 569, by digger

User metadata
Rank Oldbie
Rank
Oldbie
rasteri wrote on 2023-03-24, 14:13:
digger wrote on 2023-03-24, 10:50:

Perhaps a "partial emulation" solution could work here? Maybe crazii's SBEMU project could be extended to support Sound Blaster cards in "direct mode" (non-DMA mode, plugged into a dISAppointment adapter) as a physical target device, while emulating a Sound Blaster with DMA in software. So instead of emulating an FM synth, a joystick port and an MPU-401 MIDI interface, it would allow those non-DMA parts to pass through to a physical card, while handling the missing DMA stuff in newer LPC implementations in software.

Yeah I was thinking something similar. SBEMU could just generally be repurposed to provide any missing features of any soundcard - like MIDI without a waveblaster, or ultrasound on soundblasters, etc

Although at what point do you just say "to hell with it" and just emulate everything? 😀

I get what you're saying. I guess a bigger sense of nostalgia is retained by using such an emulator just to ultimately route the audio to actual legacy sound cards like that. To be fair, many old sound cards from back in the day tend to have a unique sound to them, due to the use of certain low-pass filters and such. Not objectively better sound, but sound that is like how people remember it. Maybe it's the same reason as why many audiophiles continue to swear by tube-based amplifiers.

Personally, I just happen to have an obsession with integrating hold hardware with new hardware. Something about getting things to work together in ways they were never meant to. Some examples: A DOS PC with a super-fast SSD instead of old spinning metal. Or a Hercules monochrome graphics card in a Pentium 3 machine. Or a modern-day system running a protected mode DOS game at 640x480 resolution with software rendering, including full sound support. For some weird reason, such abominations tend to amplify my sense of nostalgic fun. 😄 I can't quite explain why. Maybe the underlying reason is because I often wonder how well certain devices or components could perform in their most optimal conditions, if we took away all the bottlenecks that held them back in their original era.

So an ISA adapter that would allow ISA sound cards to work in modern PCs, that's exactly the kind of stuff that fascinates me.

And if we need a little bit of minimum software emulation just to bridge over certain hardware limitations, such as a lack of ISA DMA support at the hardware-level, no big deal if we can still ultimately make such cards work in such newer systems, running the DOS games we know and love otherwise natively.

Reply 28 of 569, by digger

User metadata
Rank Oldbie
Rank
Oldbie

I mean, isn't it comparable to using the ADLIPT TSR to get Adlib and OPL3 music in DOS games to play on an OPL3LPT device? Many people prefer the nostalgia of using an actual OPL3 chip, even though that chip can be "perfectly" emulated entirely in software these days, thanks to Nuked-OPL3.

Well, that, and the fact that the OPL3LPT can be used in older computers that aren't fast enough to emulate it entirely in software.

I guess in the case of the dISAppointment, that point would be moot, since any system new enough to have an LPC interface probably easily has plenty of CPU cycles to spare to perform such full software emulation.

Last edited by digger on 2023-03-24, 20:34. Edited 3 times in total.

Reply 29 of 569, by Happyarch

User metadata
Rank Newbie
Rank
Newbie
rasteri wrote on 2023-03-21, 11:08:
Yeah if the TPM header has NC pins there's a good chance one of them is LDRQ. Often you have to add a solder bridge over a nearb […]
Show full quote
LSS10999 wrote on 2023-03-21, 09:07:

EDIT: This is only about the chipset. Compatibility needs to be assessed at a per-board basis, as not all boards have a 20-pin TPM header and not all boards actually wire the LDRQ signals to the header. On some boards' manuals, the pins in question are marked as NC, though it could be a lie.

Yeah if the TPM header has NC pins there's a good chance one of them is LDRQ. Often you have to add a solder bridge over a nearby resistor pad to enable it. Alternatively LDRQ can be hijacked from the Super I/O chip.

Another thing that often needs to be done is lifting the LDRQ pin of the Super I/O chip, as although Super I/Os don't really use DMA they like to hold the pin high.

I've checked some schematics for AMD motherboards and at least the X370 still has LDRQ...

I've found some schematics that also suggest LDRQ is on B550 boards as well, but I'm yet to find one that exposes it at the LPC header, so you would likely have to scrape away the silk screen and solder it right on the board.
If I can later I'll try assembling one of the boards and try to get it working with B550.

Reply 30 of 569, by Ozzuneoj

User metadata
Rank l33t
Rank
l33t
Happyarch wrote on 2023-03-24, 20:32:
rasteri wrote on 2023-03-21, 11:08:
Yeah if the TPM header has NC pins there's a good chance one of them is LDRQ. Often you have to add a solder bridge over a nearb […]
Show full quote
LSS10999 wrote on 2023-03-21, 09:07:

EDIT: This is only about the chipset. Compatibility needs to be assessed at a per-board basis, as not all boards have a 20-pin TPM header and not all boards actually wire the LDRQ signals to the header. On some boards' manuals, the pins in question are marked as NC, though it could be a lie.

Yeah if the TPM header has NC pins there's a good chance one of them is LDRQ. Often you have to add a solder bridge over a nearby resistor pad to enable it. Alternatively LDRQ can be hijacked from the Super I/O chip.

Another thing that often needs to be done is lifting the LDRQ pin of the Super I/O chip, as although Super I/Os don't really use DMA they like to hold the pin high.

I've checked some schematics for AMD motherboards and at least the X370 still has LDRQ...

I've found some schematics that also suggest LDRQ is on B550 boards as well, but I'm yet to find one that exposes it at the LPC header, so you would likely have to scrape away the silk screen and solder it right on the board.
If I can later I'll try assembling one of the boards and try to get it working with B550.

🤯

You mean, there's some remote chance I could install an ISA sound card in my X570 system, boot to DOS via a flash drive and play DOS games that aren't speed sensitive on a 5800X3D + 3600 Ti, with native digital sound and midi\FM? I'm sure some important video modes would be missing on this card... but that seems like a much smaller issue than native DOS sound support.

I don't even know what to say about this. Kinda makes my head spin knowing that my ever growing sound card collection may suddenly be usable in my primary PC. Makes me really really wish that modern cases were made in retro-biege color schemes.

Now for some blitting from the back buffer.

Reply 31 of 569, by Paul_V

User metadata
Rank Member
Rank
Member

I take my hat off to you, sir! Nice work!

rasteri wrote on 2023-03-19, 14:49:

I've designed an adapter that uses the Fintek F85226 LPC-to-ISA bridge to allow you to connect ISA cards to (theoretically) pretty much any motherboard, as long as it exposes the LPC bus somewhere and has a legacy BIOS or CSM.

Both Fintek F85226 and Winbond W83626F seem to be available only at utsource, did you order them there?
I could not find any info whether it is still produced or just an old stock part. Seems to be the latter.

rasteri wrote on 2023-03-19, 17:03:

Basically any chipset with a southbridge that has an LDRQ signal should work. Intel chipsets with an ICH or PCH (up to series 9) still have this signal. So that's anything up to potentially socket 2011 motherboards with 6th gen core CPUs.

I'm well familiar with supermicro brand server motherboards X9\X10\X11 series (2011 and 1151 socket) - most of them have a full-fledged TPM connector with LDRQ# and pinout is usually well documented.
The best part is that they also can have IPMI onboard (KVM over IP) with video based on ASPEED chips.
So there's possibility of remote power\recording\data transfer\OS install. But keyboard and mouse support might be an issue.
CPUs are dirt cheap, especially ones with low core count (and high base frequency e.g. E5-1620 v2)

Reply 34 of 569, by LSS10999

User metadata
Rank Oldbie
Rank
Oldbie
Ozzuneoj wrote on 2023-03-25, 03:59:

You mean, there's some remote chance I could install an ISA sound card in my X570 system, boot to DOS via a flash drive and play DOS games that aren't speed sensitive on a 5800X3D + 3600 Ti, with native digital sound and midi\FM? I'm sure some important video modes would be missing on this card... but that seems like a much smaller issue than native DOS sound support.

I don't even know what to say about this. Kinda makes my head spin knowing that my ever growing sound card collection may suddenly be usable in my primary PC. Makes me really really wish that modern cases were made in retro-biege color schemes.

It seems since Ryzen, the LPC controller (1022:790e) is now inside the CPU so the chipset doesn't really matter, and it still appears to reside in the same place as its predecessors [Bus 0, Device 20 (14H), Function 3].

However, you need to find a motherboard that exposes a full LPC-based TPM header and hopefully actually wire the LDRQ# signal to it. Unfortunately, motherboards at this point already started switching to eSPI for things like TPM, so it is very unlikely to get it working on just any board without modification... Some X370 boards do appear to expose such a header, though.

By the way, it seems the executable I built with DJGPP (actually cross-compiled from Linux) doesn't run when JEMM386 is active. It outright pagefaults. Running in real mode (without JEMM386), however, works as intended and I'm able to actually take a look at the LPC controller registers, and make changes to them. I don't know if there are any compiler argument that could address this issue, or if it's possible to create an executable that could be loaded via DEVICE statement so I could run it before loading JEMM386. (INSTALL won't do, as it only runs when all DEVICE statements are done)

Reply 36 of 569, by rasteri

User metadata
Rank Oldbie
Rank
Oldbie
LSS10999 wrote on 2023-03-26, 12:43:

By the way, it seems the executable I built with DJGPP (actually cross-compiled from Linux) doesn't run when JEMM386 is active. It outright pagefaults. Running in real mode (without JEMM386), however, works as intended and I'm able to actually take a look at the LPC controller registers, and make changes to them. I don't know if there are any compiler argument that could address this issue, or if it's possible to create an executable that could be loaded via DEVICE statement so I could run it before loading JEMM386. (INSTALL won't do, as it only runs when all DEVICE statements are done)

Yeah I mostly used DJGPP because it has 32-bit port access. But running in protected mode causes problems as you see.

I'll port it to turboC at some point, running in real mode should improve compatibility with memory managers

Reply 37 of 569, by Kreshna Aryaguna Nurzaman

User metadata
Rank l33t
Rank
l33t
rasteri wrote on 2023-03-19, 14:49:
Disappointed that your modern PC doesn't have ISA? […]
Show full quote

Disappointed that your modern PC doesn't have ISA?

Well - you've been lied to. Your motherboard does have an ISA bus, but it's locked away inside the chipset. And we can help it escape through the TPM connector.

I've designed an adapter that uses the Fintek F85226 LPC-to-ISA bridge to allow you to connect ISA cards to (theoretically) pretty much any motherboard, as long as it exposes the LPC bus somewhere and has a legacy BIOS or CSM.

And yes, DMA is fully functional!

Currently only works on baremetal DOS (probably linux too) but I'd love to see if a soundblaster driver could be written for Windows 11 😀

So far I've tried a Socket 755 motherboard with a Quad-core Xeon X5470, and a Socket 1155 motherboard with a 2nd gen Core i5, both work. The software should work on later Intel chipsets too, and may be portable to AMD. I wonder what the fastest possible DOS gaming PC is...

Video of it in action : https://www.youtube.com/watch/IXr-VEpQ1lg

Source code and hardware design files will be open sourced ASAP. Hopefully together with SBEMU this will make baremetal DOS gaming cool again 😀

I read about it from my Android phone's Google news feed instead of here in Vogons. Great job nonetheless. I wonder, is it possible to have more than one ISA slots with this solution? Perhaps using split connector or such? For example, using a Sound Blaster AWE 64 Gold and a Yamaha SW60XG MIDI card --each requires its own ISA slot-- on modern PC.

Never thought this thread would be that long, but now, for something different.....
Kreshna Aryaguna Nurzaman.

Reply 38 of 569, by robertmo

User metadata
Rank l33t++
Rank
l33t++

i also found it through junk news
the thing is nobody reads after lpc to isa adapter, i don't have lpc, i don't even know what is it, i don't care, moving on...
while the topic should be:
ISA sound in new PCs

Reply 39 of 569, by LSS10999

User metadata
Rank Oldbie
Rank
Oldbie
Kreshna Aryaguna Nurzaman wrote on 2023-03-27, 14:20:

I read about it from my Android phone's Google news feed instead of here in Vogons. Great job nonetheless. I wonder, is it possible to have more than one ISA slots with this solution? Perhaps using split connector or such? For example, using a Sound Blaster AWE 64 Gold and a Yamaha SW60XG MIDI card --each requires its own ISA slot-- on modern PC.

For Intel chipset, its LPC controller only allows up to four I/O ranges to be forwarded to the LPC-ISA bridge so you can't really use every feature on an AWE64 Gold. I've tried that before on my RUBY-9719VG2AR.

An AWE32/64 requires four I/O ranges: 220, 620, A20, E20 (EMU8000 requires the latter three). As a result, to get it properly configured I need to configure the LPC controller and the bridge this way, giving up MIDI (330) and FM (388) in the process. Should note that FM does work in DIAGNOSE, which I suspect it might be accessing it from port 220. I haven't tested AWEUTIL, but if MIDI (330) provided by it is driven via EMU ports (620/A20/E20) rather than real port 330 then it could probably work.

If using the default forwarding option, the AWE64 Gold would be detected as a Sound Blaster 16, with no usable FM, as without accesses to all the required ports, EMU8000 (which contains the FM core) cannot be initialized, so only the DSP on the card is functional.