Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
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?
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).
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.
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).
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.)