Page 1 of 1

I/O ports' numbers list

Posted: Mon Jul 21, 2008 4:54 am
by sznurek
Hello,

I searched Intel manuals, web, wiki but I didn't found list of i/o ports' numbers (maybe it's called specification of i/o ports?).
Is there that list on the web? Maybe not all devices communicates by i/o ports?

Thanks in advance.
And sorry for my English :)

Re: I/O ports' numbers list

Posted: Mon Jul 21, 2008 5:27 am
by AJ
Hi,

I just found this list of IO ports on the Bochs site, but am sure there are more comprehensive ones around (I think there is something in Ralph Browns Interrupt List, too).

I believe the reason that you are not being very successful is because the common IO port assignments are specified by the PC standard, not the CPU manufacturer. Some IO ports are variable and have to be located in the PCI entry for a particular device (look at the BAR's).

As you guess, not all devices use IO ports, many use "Memory Mapped IO". For example, a graphics card using VESA may have a multi-megabyte "Linear Frame Buffer" at 0xE0000000 (this is an example and is not always the case).

HTH,
Adam

Re: I/O ports' numbers list

Posted: Mon Jul 21, 2008 5:50 am
by sznurek
Thanks for reply :)

But where, for example, look for keyboard port specification? Chipset manual? Motherboard documentation?
Now I only found it on hobbyists' websites.

Thanks in advance.

Re: I/O ports' numbers list

Posted: Mon Jul 21, 2008 5:56 am
by AJ
Hi,

You need to look separately at the datasheet for each separate part. For the keyboard, this means looking at the datasheet for the keyboard controller (I don't have this to hand, but I'm sure a quick google for "keyboard controller" or similar will yield a good result. There is information on the common functions on our own wiki.

Cheers,
Adam

Re: I/O ports' numbers list

Posted: Mon Jul 21, 2008 5:57 am
by lukem95
EDIT: AJ beat me to it.

Re: I/O ports' numbers list

Posted: Mon Jul 21, 2008 7:33 am
by codemastersnake
Refer to Ralf's Brown's List. It's very good. Almost every port's listed in there.

Re: I/O ports' numbers list

Posted: Mon Jul 21, 2008 7:51 am
by bewing
Or search our wiki. The keyboard IO Ports are 0x60 and 0x64 -- it's all described in the wiki article.

Re: I/O ports' numbers list

Posted: Mon Jul 21, 2008 8:13 am
by sznurek
bewing wrote:Or search our wiki. The keyboard IO Ports are 0x60 and 0x64 -- it's all described in the wiki article.
Keyboard controller was only an example ;) I have been on that page in the wiki.

OK, now I know that "Super I/O chip" or "AIP" maintains keyboard, and I downloaded specification (http://www.intel.com/design/archives/pe ... 048603.pdf) but it looks like document for electrician, not assembler programmers. Maybe I missed something in that document?

I just want manufacturer's documentation for on-board devices, but I cannot find that.

Thanks for all replies and sorry if that question was on forums (I didn't find that).

Re: I/O ports' numbers list

Posted: Mon Jul 21, 2008 8:27 am
by JamesM
Hi,

Are you certain about the SuperIO? I've implemented a SuperIO emulation and it's UART isn't the same as a PC's. Not only that, but I don't believe the SuperIO has a PS/2 module. I may be wrong however...

(Normally with datasheets you have to skip over the first few pages of electrical characteristics to get to the register descriptions. Don't expect example asm code though, because most devices are designed architecture independently.)

Re: I/O ports' numbers list

Posted: Mon Jul 21, 2008 9:59 am
by jnc100
JamesM wrote:I don't believe the SuperIO has a PS/2 module
Correct. According to the datasheet he provided it contains 2x serial ports, a parallel/game port and floppy/ide interfaces, i.e. no ps/2.

@sznurek: try section 3: "I/O Address Assignments"

Regards,
John.