On May 24, 2016, at 3:10 PM, Swift Griggs
<swiftgriggs at gmail.com> wrote:
On Tue, 24 May 2016, Guy Sotomayor Jr wrote:
The initial implementation of the A20 gate was
implemented by the
keyboard controller(!) because it was discovered late in the PC AT
development cycle and we couldn?t add more logic to the board (but we
could add some wires).
That's very bizzare. It still makes me feel dirty just thinking about it,
but it's interesting nonetheless. I wonder about some of the "clever hack"
software that squeezed a tad bit more memory by dancing around/in
previously reserved memory. Isn't that sort of how Quarterdeck got started
? I also remember XMS and EMS and all that fun, though the Amiga geek
inside me is screaming that I shouldn't reveal that.
No it was to allow accessing memory without having to reload a segment
register. It was a space and performance optimization. There was no additional
memory.
As I recall, SW needed to access something in the BIOS ROM(s) and also
the contents of low memory. Normally, that would have involved reloading a segment
register (and restoring it when done) but by organizing the code properly and
setting the segment registers it was possible to access both the low *and* high
regions without reloading a segment register. That is, put a large value in the
segment register and when you wanted to access low memory, use a large offset.
When you wanted to access high memory, use a small offset. You could access
32KB of high and 32KB of low without reloading a segment register (or any particular
split you wanted).
These are the sort of ?tricks? that most people don?t think much about when
dealing with multi-GB memory environments. There are still cases where every
byte (and cycle) count and doing these sorts of ?tricks? is what determines if
the product is doable or not.
TTFN - Guy