[net.micro.pc] IBM PC/AT Memory Map

curl@wjvax.UUCP (05/04/86)

     I'm currently working on a custom board that uses 8 KBytes of the
IBM PC/AT's memory space.  We're running under DOS 3.1 and so are constricted
to the 1 MByte limit of the 80286 in Real mode.  Our original intention was
to map the 8K block into the E000 segment since that's where the unused
ROM sockets on the AT motherboard are mapped.  We tried this and found that
there was some kind of bus contention which prevented the custom board from
working correctly.  We could write to it, but when we tried to read, the data
bus (on a logic analyzer) had the appearance of undergoing a tug of war between
states.  The board, when mapped to the 8000 segment (with our extra memory card
removed) worked fine.

     The other cards in the system include two parallel/serial cards, an
IBM EGA card, an Intel Above board memory card, and the disk controller card.
We suspected that the memory card may have been causing the problem, but this
was ruled out when we tried mapping to the E000 segment with the Intel card
removed.  The only thing left that we suspect is the EGA card.  Without our
custom card in the unit, the E000 segment appears to be floating; i.e., the
data read is usually all 1's, although there are occassional 0's (not always
consistant).  With our card mapped to E000, our card, when trying to place
0's on the bus, fights with whatever is putting out those 1's.

     Does anybody have an answer for this one?  I don't have the EGA technical
documentation immediately available, but I'm not convinced that that's what it
is anyways.  Any suggestions would be appreciated.

                                    Jim Curl
                                    Watkins-Johnson, San Jose

bill@hp-pcd.UUCP (bill) (05/08/86)

The 64K at segment E000 is reserved for motherboard BIOS extension ROMs.
Even though the ROM sockets on your board are empty, I'd expect that any
attempt to read from them would still enable the 74ALS245 buffers that
isolate the ROM sockets from the system bus; these buffers will hard drive
the bus to some "unknown" state during a read (because of their floating
inputs).

You might try moving your card to somewhere in the C800-E000 range.
This is the address range reserved for plug-in adapter BIOS extension ROMs.
(Your EGA card lives at the 16K starting at segment C000).
Just make sure the block you pick doesn't conflict with any of your other
plug-in cards.  Also, it may be necessary to add a wait state.

You might also get hold of an AT Technical Reference Manual, if you don't
already have one.

Bill Frolik
hp-pcd!bill

@hpislx.UUCP (05/08/86)

This message is empty.