From: [email protected]
Subject: A20 Line !
Date: Sat, 29 Jan 1994 09:10:04 GMT
I just started reading this news group and find it very interesting.
It's great to find a news group with knowledgable people, which brings
me to my question.
I would really like to know what the A20 line does in greater
detail, not that it is simply used for switching between real and
From: [email protected]
Subject: Re: A20 Line !
Date: Mon, 31 Jan 1994 03:52:02 GMT
(Gerald Vaselenak) writes:
> I would really like to know what the A20 line does in greater
> detail, not that it is simply used for switching between real and
> protected modes.
The following is a repost of article on this question which I did a
1. On an 80x86 PC (x>2), a 'real mode' segment:offset address of, say
FFFFh:200h maps to an absolute address of 1001F0h.
2. On the original 8088 PC, this same address maps simply to 1F0h,
because there is no 21st address line (addressing is limited to
2**20-1), and addresses wrap at 1 megabyte. But, the address is
3. This makes the 8088 and the 80x86 'incompatible.'
4. IBM 'fixed' this problem on the PC/AT by providing a special 'gate'
to force the 21st address line ("A20") to zero on the bus, even if
the 80286 processor was asserting this line as a one. This makes
the 80286 'wrap' at 1M, just like the 8088 does. This was done in
the name of compatability.
5. IMHO, this was a BAD THING. It basically only provided
compatability with programs that were broken to begin with (by any
reasonable measure), it encouraged more such broken programs, and
introduced complexity. Microsoft added insult to injury by
providing the program EXEPACK, which for many years was broken in
this regard, and which managed to propagate the 'brokeness' to the
literally thousands of application programs which were packed with
EXEPACK (EXEPACK is probably the only source of such 'broken'
programs which still exist today).
6. For protected mode operation, the operating system must set this
gate to allow A20=1. The boot default is to disallow A20 from being
set to 1. When one runs a 'broken' program (as defined above), A20
must be disallowed, but the problem normally surfaces if the
program is loaded at a location less than 64K.
7. Not only did IBM do a bad thing in providing this 'A20 gate,' they
did a really cheap and dumb thing by controlling this gate with a
spare signal which happened to exist in the keyboard controller
microprocessor. As is turns out, simply turning this gate off and
on is neither simple, nor is it fast, nor is it reliable, with the
IBM PC/AT implementation.
8. People have wanted to improve on the standard set by the PC/AT,
because it is difficult, slow, and unreliable. They have. But it
has been done many different ways, and there is much
incompatability, because IBM did not set a reasonable standard.
Also, use of protected mode was so long in coming that the
significance of a real standard for this function was not well
understood for many years.
9. The situation is still a mess, and has been one the main causes of
'incompatability' amoung PC clones.