Subject: Re: more boot block questions
To: None <port-i386@NetBSD.ORG, perry@piermont.com>
From: Wolfgang Solfrank <ws@kurt.tools.de>
List: port-i386
Date: 03/22/1996 13:07:11
> Can someone explain to me what the mysterious gateA20() calls mean in
> the i386 boot routines?

When IBM introduced the AT, it was confronted with the fact that the new
processor (286 at that time) had more address bits than the old one (8086).

But there were obviously some programs that depended on a wraparound of the
address space at the end of the 1 MB space of the 8086. To get this software
working, they sort of wired the address bit 20 (A20) to zero, so the the
second MB in the address space the 286 sees is the same as the first.

But this would have unfortunate consequences for software that is well aware
of the greater address space (it would only be able to access every other
MB of the address space). So the original functionality of the A20 bit can be
reenabled by appropriate commands to the keyboard processor (later boards
have some additional mechanism for this which exact function escapes me at
the mo).

Note that newer versions of MSDOS don't use this A20 hack anymore, but use
the 64k-16 bytes above the first MB to load part of the (so-called) OS there.

Hope it helps.
--
ws@TooLs.DE     (Wolfgang Solfrank, TooLs GmbH) 	+49-228-985800