A20 Line: Difference between revisions

Jump to navigation Jump to search
[unchecked revision][unchecked revision]
Content deleted Content added
spelling correction
No edit summary
Line 1: Line 1:
The A20 Address Line is the physical representation of the 20th bit of any memory access. When the IBM-AT (Intel 286) was introduced, it was able to access up to sixteen megabytes of memory (instead of the 1 MByte of the IBM-XT). But to remain compatible with the IBM-XT, a quirk in the XT architecture (memory wraparound) had to be duplicated in the AT. To achieve this, the 20th line on the address bus (A20) was disabled by default.
The A20 Address Line is the physical representation of the 20th bit of any memory access. When the IBM-AT (Intel 286) was introduced, it was able to access up to sixteen megabytes of memory (instead of the 1 MByte of the 8086). But to remain compatible with the 8086, a quirk in the 8086 architecture (memory wraparound) had to be duplicated in the AT. To achieve this, the 20th line on the address bus (A20) was disabled by default.


The wraparound was caused by the fact XT computers could only access 1 megabyte of memory but because of there segmented memory access method they could effectively address up to 1 megabyte and 63 and a bit kilobytes. In order to keep the number of transistors on their chips to a minimum, Intel decided to wrap around address above the 1 megabyte mark to the beginning of memory. For some reason a few short-sighted programmers decided to write programs that actually used this wraparound (rather than directly addressing the memory at its normal location at the bottom of memory). Therefore in order to support these XT era programs on there new architectures, this wraparound had to be emulated on later processors; this was achieved by way of a latch that by default set the A20 line to zero.
The wraparound was caused by the fact 8086 computers could only access 1 megabyte of memory but because of there segmented memory access method they could effectively address up to 1 megabyte and 63 and a bit kilobytes. In order to keep the number of transistors on their chips to a minimum, Intel decided to wrap around address above the 1 megabyte mark to the beginning of memory. For some reason a few short-sighted programmers decided to write programs that actually used this wraparound (rather than directly addressing the memory at its normal location at the bottom of memory). Therefore in order to support these 8086 era programs on the new processors, this wraparound had to be emulated on the IBM AT and its compatibles; this was originally achieved by way of a latch that by default set the A20 line to zero. Later the 486 added the logic into the processor and introduced the A20M pin to control it.


For an operating system developer (or [[Bootloader]] developer) this means the A20 line has to be enabled so that all memory can be accessed. This started off as a simple hack but as simpler methods were added to do it, it became harder to program code that would definitely enable it.
For an operating system developer (or [[Bootloader]] developer) this means the A20 line has to be enabled so that all memory can be accessed. This started off as a simple hack but as simpler methods were added to do it, it became harder to program code that would definitely enable it and even harder to program code that would definitely disable it.


==A20 Pin==
==A20 Pin==