[comp.windows.ms.programmer] HIMEM.SYS: Can't disable A20

rich@coyote.trw.com (Rich Messenger) (04/27/91)

I recently bought a generic clone 386SX with 4MB RAM.  When I tried to
install HIMEM.SYS, I get the diagostic WARNING: Can't disable A20, but
then HIMEM goes ahead and says the High Memory Area is available.  My
(sketchy) understanding of A20 is that this addressing line must be
enabled to access extended memory or the HMA.  However, you are
supposed to *disable* A20 when you are not accessing extended memory
or the HMA because some program rely on the behavior when A20 is
disabled, which causes memory accesses above 1MB to wrap to zero.  The
upshot, then, of being unable to disable A20 is that any program which
relies on this wrapping behavior will trash memory in the HMA.

I thought I would submit several questions to the wisdom of the net:

1) What evil brain-damaged part of my clone is likely responsible for
the inability to disable A20?  I ran a clean boot with nothing but
HIMEM, so I'm sure it isn't software.  My best guess is that it is the
BIOS or some chip on the mother board.  Or could it be some plug in
board of mine?

2) If the answer to (1) is the BIOS, is there anyone else out there
who has my problem, or even better a solution to my problem?  On boot,
I get the message:
    386SX-BIOS (C) American Megatrends Inc
    NEATSX V1.1 05-31-90
Does anyone know a technical support address or number for AMI?

3) Is my analysis of the pitfalls of the non-disabling A20 correct?
If not, what's a good pointer to a book which discusses these issues.
I browsed through a computer book store today for an hour without any
success in finding a reference to A20.

4) It seems to me that HIMEM should disable the HMA if the A20 line
cannot be disabled, so that if there is a program which relies on
memory access wrapping, it will at least not trash another program's
data in the HMA.  Is disabling the HMA the safe thing to do?  How can
I do that?
-- 
     _ __
    ' )  )      /                      ... Rich Messenger
     /--' o _. /_                          rich@wilbur.coyote.trw.com
    /  \_(_(__/ /_                         {uunet,cit-vax,trwrb}!wiley!rich