Sometimes you really want to use your legacy SoundBlaster instead of emulating it for classic games. While modern PCs don’t have ISA slots, [TheRasteri] is fixing this shortcoming with his dISAppointment board. (via Adafruit)
ISA was the standard card bus for PCs during the golden age of DOS gaming, and many of these games will still run on modern x86 hardware. Unfortunately, they run into hiccups with regards to sound since they were designed to specifically support ISA-based sound cards. [TheRasteri] found he could access the ISA bus lurking in modern computers through the Low Pin Count (LPC) bus which is exposed on the TPM port in many modern motherboards.
Testing the card with DOOM, he gets music and sound effects with no emulation required. Open Source files and a more detailed video are on the way, so stay tuned if you’re hankering for more ISA goodness on your modern rigs.
We’re no strangers to ISA here. We’ve covered the basics of the ISA bus as well as plugging ISA cards into USB and how you can emulate vintage ISA cards with a Raspberry Pi and FPGA.
26 thoughts on “ISA Over TPM To Your PC”
So you can attach a 5½” floppy drive to your TPM socket?
But where are the dip switches to select CGA?
This was my first thought.
And I assume the screw holes are ATX compliant?
So when you have a micro ATX board in a normal case the ISA slots fits nicely in the free space?
I wonder what other ways exist to access the LPC bus on a modern PC.
I have so many questions about what could be done with these on a modern machine and OS. It would be awesome if I could use some of my vintage sound cards to get appropriate playback of some equally vintage midi tracks.
Don’t you just need proper vintage external MIDI equipment for that? Plus any kind of MIDI out from the PC (I assume USB-to-MIDI adapters/converters do exist).
Saw something that might fit on LGR: https://www.youtube.com/watch?v=bQn3SyDh2Xo
yes I wonder the same. Does Windows allow you to change address values in some register without shooing you away?
Would it work with visual basic or c#?
Ok, I read the wikipedia article on the LPC bus. A lot of the details were a bit over my head.
But I did pick up on this is a narrower bus for both addressing and data transfer, it runs at a lower clock rate and some other ISA-bus signals I don’t really know anything about are removed.
So… does that mean all the old ISA peripherals should just work only slower? Or does it mean that only hardware which specifically uses just the lower bits of the bus and none of the other signals will work?
In other words, is this the generic, plug whatever old hardware you want to try out into it ISA on a modern computer solution I have been hoping for? Or just a way to get some specific audio cards going for old DOS games?
Very cool, either way though!
It does seem like it should run anything. They just do transfers a nibble at a time, with the address preceding them. Kind of like a “packet”
LPC appears to do 8-bit ISA transfers at about 4.7MHz (7 cycles at 33MHz), which is equivalent to the original ISA spec. It’s significantly slower than the newer 16-bit 8MHz bus spec.
Not limited to 8 bits. Some LPC bridges support the full ISA 16 bits spec:
DMA could be a problem
Yeah, it is. A friend made a similar project many years ago and for what he wanted to do DMA was the one thing stopping it from being viable.
It should be noted that for random byte transfers the LPC bus tops out at around 4-5MB/s, but long reads/writes will go faster. One of the hurdles is configuring the chipset to map the address window you want. Most motherboard BIOSs are going to map what is needed for a Super I/O chip, TPM, and maybe a Firmware Hub.
Easier to buy a new sound card.
Not for an DOS environment.
DOS software expects a soundcard that conforms to Sound Blaster standard.
Other less popular soundcard types were the Gravis Ultrasound, Windows Sound Standard (WSS) and the Pro Audio Spectrum series. And that’s not the end of the list.
Besides, many later PCIe soundcards don’t have a classic gameport, an YMF262 FM synthesizer or an MPU-401 compatible MIDI interface.
Oh sweet summer child :)
Back in the day, you’d get totally different sets of sounds, audio and effects depending on which soundcard camp you were in. Even within the different types, the sound signatures / wave and midi tables would be completely different by model. It was a minefield. You’ve got to software emulate for modern soundcards, which is different.
Does a TPM socket have unfettered access to memory *ponder*
More like a TrustING Platform, am I right?
If I recall correctly the ISA bus can only do DMA with the lowest megabyte of address space where MSDOS lives, it has no access to ‘extended memory’ or anything like that, Disk controllers on the ISA bus had really awful performance due to this limitation
There were RAM cards for 8 and 16 bit ISA which could be XMS (on a 286 or later) or EMS. Some could be split between the two types. I had a 286 with 12 megabytes total RAM with 512K in DIP chips on the motherboard and the rest on three Micron 16 bit ISA cards.
One card backfilled the motherboard RAM to 640K plus more. I had it divided between XMS and EMS because I had some games and other software that needed EMS. I had the OEM only Windows 3.11 that still had Standard Mode on it. It had some fixes not in Windows 3.1, plus if used on a 386 or 486 it had 32bit disk or file access. One or the other, I don’t recall which. Enabling it was pretty much useless because for whichever one it didn’t have it still had to thunk to 16 bit even if everything else was 32bit compliant.
But if you had a 386 then there was no reason to run 3.11 on it when there was Windows For Workgroups 3.11 that had both 32bit disk and file access plus Win32s could be installed.
A 286 with 12 MB of memory?! What a beast. My first 486 (a DX2 66 IIRC) still had just 4 MB and I had to save up for another 4 MB for quite a while :)
ISA is an 16/24-Bit bus and quite okay at 12 MHz. ;)
In older 286 mainboard designs, ISA or AT-Bus (IBM’s original name of the bus) run at full CPU speed, sometimes with zero waistates, even.
If you’re curious, have a look at the IBM AT Model 5170.
It came in two versions, 6 and 8 MHz.
EISA/ISA specification by The Gang of Nine capped ISA bus at those ~8 MHz.
Originally, all peripherals sat on ISA or AT-Bus directly. Chip sets didn’t exist, it were all discreet ICs. The NEAT chip set was one of the earliest chip sets.
Memory boards (EMS, Extended Memory) were inserted in the ISA slots, too.
The main memory was wired to the ISA bus, too, no chip set in between.
Examples with pictures can be found on this site:
IBM used to publish great technical manuals for their PCs and peripheral hardware. I had a set for the PC/XT with full schematics and BIOS listing and the DACA board tech manual with full schematics. I also had the great tech manual for AT&T’s PC-6300 (same as Olivetti M24) with schematics. I also had a tech manual for the PS/2 model 80, but my recollection is IBM stopped providing the BIOS listing by then. They’ve gotten away as I’ve moved several times. Those were the days. As far as I know, nobody publishes detailed information like that now.
I assue that is part of why it appears that the first megabyte of memory space is off limits for userspace applications?
I believe it only has access to memory regions that the motherboard BIOS configures the LPC bridge for on boot.
I was just looking at my Soundblaster AWE 32 two days ago and wondering if there was a way to get its 16 bit ISA interface to work with a more modern PC and operating system. I’m more interested in the MIDI and the great sound fonts for this card. The newer sound card software emulations just don’t sound as fantastic and there are subtle timing differences which make complex MIDI tracks coded for the AWE 32 sound founts not quite right on modern hardware. The project described in the article looks like it might be the basis for making my legacy MIDI hardware and files useful again.
Please be kind and respectful to help make the comments section excellent. (Comment Policy)