0:00 hi so this is a project I'm working on
0:02 it's uh well you can see uh LPC to ISA
0:05 adapter basically it allows you to
0:07 connect old Isa cards like this sound
0:09 blaster 16 here up to Modern
0:11 motherboards this is a socket 1155
0:13 motherboard with a Intel 6 series
0:15 chipset and the ISA adapter is connected
0:18 up to it through its TPM Port which is
0:20 normally used for an encryption key it's
0:23 got a Sandy Bridge Core i5 in it so you
0:25 know it's still a little bit older but
0:27 it's certainly got no business having an
0:28 Isa slot connected to it but yeah if I
0:31 just uh do the old standard Doom test
0:35 we have audio
0:37 as you can hear that's full audio music
0:40 and sound effect so uh yeah seems to be
0:42 working I'm going to be open sourcing
0:44 this board as well as making a longer
0:45 video explaining how it all works so get
0:47 subscribed to my channel if you don't
0:48 want to miss that
I prefer text to video or audio. Text is a more 2-dimensional format – my eyes scan up and down the page looking for keywords. I read it non-linearly, reading the more interesting-looking sentences first (even multiple times), leaving the less interesting ones until the end. Text lets me follow my own attention, audio/video force me into a linear straight-jacket – I know I can rewind/fast-forward/etc, but that's still a lot more slow and painful than just darting my eyes around a page. A picture can say a lot that words can't, but that's why (hyper)text can have pictures, figures, diagrams, photos, tables, etc, embedded in it. Even embedded video clips and audio files, for those times when an audiovisual component is really adding something.
I've largely hated the slow transition of information from barebones html scrawlings to the modern video presentation format. One thing I've discovered is installing an HTML5 video speed controller extension that lets me run most videos at 2.5-3.0x speed. It really seems to help. I think part of the problem is that most videos are tuned well below the rate I like to scan in information.
I agree and also watch most videos much faster than 1x; it seems lowest-common-denominator-oriented "educational" videos require the most speedup, while with denser stuff, and some entertainment, I can only get up to 1.5-1.8x. An (un?)fortunate side-effect is that talking to most people in realtime becomes annoyingly slow; and likewise, others tell me that I'm talking too fast.
Oh man, thank you. The few that I click seem to be on an interesting topic. Yet they're always frenetically edited together and either don't explain anything (cooking shorts, for instance. Much worse than old school GifRecipes) or are just a teaser to get you to subscribe for the full video a couple weeks/months later.
I wish I could just wholesale disable the feature in my app, as it wastes scrolling space.
I agree and while you probably know this, it's actually only URL formatting, you can take the short URL and make it a long format youtube URL with the video ID and regain pausing etc
Unfortunately that's not a truly "modern" motherboard as it's from around 2011, and newer ones no longer support LPC DMA. If my research is correct, the last Intel chipset to support LPC DMA should be the X99 from 2014, but even before that, e.g. Atom x2000 series (2012), LPC DMA was already missing.
I've not had the time to prove this out, but I believe it should still be possible to have full ISA support, including DMA, via a PCI/PCIe bridge that also needs to contain a pair of 8237-compatible DMA controllers and act as a bus master to buffer and translate ISA DMA requests to PCI/PCIe requests. It'll probably need an option ROM to configure the interrupt controllers and related signal paths in an ISA-compatible fashion. It might make a good exercise to implement one using an FPGA.
The X299 (2017) PCH certainly still has the proper DMAC for LPC[1]. The first series you see lacking a DMAC core (or, at least one compatible with LPC/ISA DMA) is the consumer 200 series of PCHs[2]. And it was fully gone by the 300 series[3]. It would seem that something in the switchover to the new streamed Intel HDA DMA architecture or going from DMI2.0->DMI3.0 left the functionality to the wayside.
I wouldn't be surprised if you could bit bang ISA these days. ISA ran at 8MB/s, and (e.g.) a Raspberry Pi runs at 1.5GHz. That's nearly 200 cycles per ISA clock. All you need is a couple of i/o pins.
An RPi is not so much different from a PC in that the CPU core clock is going to be the fastest and everything else will be slower. You're not going to get 1.5GHz out of a GPIO.
I've seen some astounding projects using the Raspberry Pi Pico "PIO" to create n64 Flash carts and now HDMI adapters. I don't have the slightest knowledge of how this stuff works but I imagine it is some sort of bit banging like process. Do you think it would be possible to simulate something like a soundcard using Raspberry Pi Pico? These devices seem like a great and really cost effective way to design around expensive FPGA based designs.
I'm the creator of PicoGUS... PIO is kind of like hardware assisted bit banging. You program a very simple, extremely fast computer (aka the PIO peripheral on the RP2040) to do the bit banging for you. :)
Bit-banging one I'd be surprised about mostly for signal integrity at that line-speed reasons.
However even a home silk-screened PCB could probably handle that and a USB control connection. Without deep knowledge hard part's likely the software, getting the connected item to work; probably as a virtual hardware device in a KVM or other emulated guest OS with the illusion it's on old hardware.
ISA is very forgiving timing wise. As long as you have the data on the pins when IOR or do your read by the time IOW is deasserted by the chipset you’re fine. And you can always deassert IOCHRDY and get all the time in the world to respond (within reason).
I had some very successful experiments with bit banging ISA on a Raspberry Pi 3 and 4 a while ago: https://github.com/polpo/pigus I quickly moved over to a Raspberry Pi Pico because it's much better suited to such things. You need more than a couple I/O pins, though... to do real ISA (i.e., not LPC) right, you need more GPIOs than what the Pi gives you. But muxing the data/address lines is enough to give you back what you need.
I had terrible luck getting 48k audio out of a bit-banged I2C ADC over Raspberry Pi. Being in userland was the most noticeable problem; once I switched to a kernel driver I was barely able to get the right sample rate.
TL;DR: LPC to ISA adapter basically allows you to
connect old ISA cards like a Sound
Blaster 16 here up to modern
motherboards. Doing the old standard Doom test
we have audio
as you can hear that's full audio music
and sound effect so seems to be
working. I'm going to be open sourcing
this board
transcript:
hi so this is a project I'm working on
it's uh well you can see uh LPC to ISA
adapter basically it allows you to
connect old Isa cards like this sound
blaster 16 here up to Modern
motherboards this is a socket 1155
motherboard with a Intel 6 series
chipset and the ISA adapter is connected
up to it through its TPM Port which is
normally used for an encryption key it's
got a Sandy Bridge Core i5 in it so you
know it's still a little bit older but
it's certainly got no business having an
Isa slot connected to it but yeah if I
just uh do the old standard Doom test
we have audio
as you can hear that's full audio music
and sound effect so uh yeah seems to be
working I'm going to be open sourcing
this board as well as making a longer
video explaining how it all works so get
subscribed to my channel if you don't
want to miss that
Rather sooner or later, someone is bound to implement that with an FPGA. Many already come with native PCIe blocks and a more-or-less powerful microprocessor to deal with DMA and whatever.
I never understood how these motherboards work given that they look more like expansion cards. Now I know the intended way is to plug that into a backplane and wire the bus interfaces out.
Ah picmg, we meet again. I have a Pentium chassis like this for retro stuff... I would like the full gamut of processor cards (8088, 286, 386, 486) for this.
This open source design makes good use of TPM ports present in most modern motherboards, including current generation, thus it should bring ISA access for everyone, on the cheap.
The LPC bus was introduced by Intel in 1998 as a software-compatible substitute for the Industry Standard Architecture (ISA) bus. It resembles ISA to software... [0]
From what I understand, there is no standard, it is motherboard-vendor-specific (and can even differ from model to model within the same vendor).
Some motherboards support having the TPM on a daughterboard which plugs into the motherboard. This lets them make it an optional extra, which you have to pay extra for. Nowadays more and more stuff is making a TPM mandatory (e.g. Windows 11), but when they first came out (almost 15 years ago) little used them and why pay for one if you didn't need it? The people who really needed them were most likely enterprise customers, so making them pay extra for a daughterboard is a useful form of market segmentation.
Far less common on newer motherboards, but newer motherboards wouldn't have an LPC bus either – it has been replaced by eSPI. So this hack is really only if you have a moderately old machine – new enough to not have ISA, old enough to have LPC wired through a TPM daughterboard slot.
I suppose, for newer motherboards, you could build an eSPI-to-ISA adapter – heck, you could even build a PCIe-to-ISA adapter, maybe someone has. But I think part of the hack is exploiting the fact that LPC is based on ISA, which makes the circuitry needed to interface the two simpler. Mapping ISA to a more modern bus would be a lot more complicated, since the technological gap you need to bridge is a lot bigger.
TPM uses the LPC (low pin count) bus controller, which provides a 4 bit @ 33 mhz interface... which isn't a coincidence that it is 1/4 the bits at 4x the clock rate as ISA, because that it what it was designed for. So demultiplex the bus back to 16 bit ISA and pull some driver magic and voila.
I didn't watch the video. I guess they are using the LPC header available on some mobos and a microcontroller or FPGA to change it to a full-blown ISA bus.
LPC (Low Pin Count) is the last remains of the ISA bus in the PC.
Supposedly there is no way to properly implement 100% ISA compatibility on modern PC's after the Pentium 3. The reason being some less used bus mastering or DMA signals are unable to be properly implemented due to removal of those mechanisms by Intel. But most cards that are simple like audio, serial, ethernet cards that just do basic irq and dma should work fine.
> Supposedly there is no way to properly implement 100% ISA compatibility on modern PC's after the Pentium 3.
FWIW, I think that's probably referring to the fact that about then, x86 redefined dove of the semantics of the lock prefix. Before about then it'd be propagated out to the FSB as whole system visible transaction, but after about then atomic operations only went out to L2 to increase core count without the cores stepping on eachothers' toes.
That being said, very few drivers/cards actually depend on that behavior. Bridging the card to LPC (or worst case PCIe) should be fine for the vast majority of cases.
you misspelled "less". This works only with their SDK (and non public build of dosbox), latency is bad due to USB so things that read a lot over ISA are out of the question (think playing doom on ISA vga)
Latency is 3 orders of magnitude worse. USB 125µs while ISA ~500ns. No problem when writing if you do write coalesce/combining, big problem when reading from ISA devices.