|
Top Document: comp.os.msdos.programmer FAQ part 3/5 Previous Document: Next Document: See reader questions & answers on this topic! - Help others by sharing your knowledge
Look in the four words beginning at 0040:0000 for COM1 through COM4.
(The DEBUG command "D 40:0 L8" will do this. Remember that words are
stored and displayed low byte first, so a word value of 03F8 will be
displayed as F8 03.) If the value is zero, that COM port is not
installed (or you've got an old BIOS; see <Q:06.01> [How do I set my
machine up to use COM3 and COM4?]). If the value is nonzero, it is the
I/O address of the transmit/receive register for the COM port.
Each COM port occupies eight consecutive I/O addresses (though many
chips use only the first seven).
Here's some C code to find the I/O address:
unsigned ptSel(unsigned comport)
{
unsigned io_addr;
if (comport >= 1 && comport <= 4)
{
unsigned far *com_addr = (unsigned far *)0x00400000UL;
io_addr = com_addr[comport-1];
}
else
io_addr = 0;
return io_addr;
}
You might also want to explore Port Finder, downloadable as:
<http://www.simtel.net/pub/pd/47138.html>
I haven't tried it myself, but a posted article reviewed it very
favorably and said it also lets you swap ports around.
User Contributions:Top Document: comp.os.msdos.programmer FAQ part 3/5 Previous Document: Next Document: Part1 - Part2 - Part3 - Part4 - Part5 - Single Page [ Usenet FAQs | Web FAQs | Documents | RFC Index ] Send corrections/additions to the FAQ Maintainer: jeffrey@carlyle.org (Jeffrey Carlyle)
Last Update March 27 2014 @ 02:11 PM
|

Comment about this article, ask questions, or add new information about this topic: