ISA
ISA
I was wondering about programming ISA bus. I've never programmed it before and i cannot find information about it. I've some sound, video, network cards for ISA, and i want to code them, but there's question, how to detect if there is a device somewhere like old network card
Re: ISA
Hi,
Cheers,
Brendan
There is not way to auto-detect most ISA cards (although a few of them support the "ISA Plug & Play" standard, but not many). Mostly you either use a config script (like "config.sys" in DOS) or you do manual probing (or both).xsix wrote:I was wondering about programming ISA bus. I've never programmed it before and i cannot find information about it. I've some sound, video, network cards for ISA, and i want to code them, but there's question, how to detect if there is a device somewhere like old network card
Cheers,
Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
Re: ISA
How does one manually probe? Wouldn't sending data to any port have completely diferent results on all ports?Brendan wrote:Hi,
There is not way to auto-detect most ISA cards (although a few of them support the "ISA Plug & Play" standard, but not many). Mostly you either use a config script (like "config.sys" in DOS) or you do manual probing (or both).xsix wrote:I was wondering about programming ISA bus. I've never programmed it before and i cannot find information about it. I've some sound, video, network cards for ISA, and i want to code them, but there's question, how to detect if there is a device somewhere like old network card
Cheers,
Brendan
- spix
- Member
- Posts: 128
- Joined: Mon Jun 26, 2006 8:41 am
- Location: Millicent, South Australia
- Contact:
You can probe for specific ISA cards if you know what you are looking for. For example, if you are looking for an NE2000 ISA card, you know what ports it is likely using.. 0x300, 0x280, 0x320, 0x340, 0x360, 0x380. You send a command to each of those ports, and if a card responds in a way that it should, you know that there is an NE2000 card there.
For the IRQ, linux uses a trick, where it enables all IRQs and then makes the card fire an IRQ, if the IRQ is not assigned to a card already, and it's not a spurious irq, then it belongs to the card.
Hope that helps
Andrew
For the IRQ, linux uses a trick, where it enables all IRQs and then makes the card fire an IRQ, if the IRQ is not assigned to a card already, and it's not a spurious irq, then it belongs to the card.
Hope that helps
Andrew
Hi,
It's also a good idea to do things in a certain order. For example, disable all PCI cards and Plug & Play ISA cards, then manually probe for "plain" ISA cards, then re-enable Plug & Play ISA cards and set their resources, then re-enable PCI cards and set their resources. That way you minimise the chance of poking something that doesn't like to be poked, and there's less chance of resource conflicts...
Cheers,
Brendan
Yes..spix wrote:You can probe for specific ISA cards if you know what you are looking for. For example, if you are looking for an NE2000 ISA card, you know what ports it is likely using.. 0x300, 0x280, 0x320, 0x340, 0x360, 0x380. You send a command to each of those ports, and if a card responds in a way that it should, you know that there is an NE2000 card there.
For the IRQ, linux uses a trick, where it enables all IRQs and then makes the card fire an IRQ, if the IRQ is not assigned to a card already, and it's not a spurious irq, then it belongs to the card.
It's also a good idea to do things in a certain order. For example, disable all PCI cards and Plug & Play ISA cards, then manually probe for "plain" ISA cards, then re-enable Plug & Play ISA cards and set their resources, then re-enable PCI cards and set their resources. That way you minimise the chance of poking something that doesn't like to be poked, and there's less chance of resource conflicts...
Cheers,
Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
PCI has the detection way of getting vendor and device ID of every BUS.DEVICE.FUNCTION, so if ID is 0xFFFF or zero(0) then there isn't device. If there is device then by it's ID i can load drivers, but if there isn't any detection routine on ISA, except checking for specific device by it's IO ports, it's quite not cool =\ .