> On May 24, 2016, at 3:10 PM, Swift Griggs <swiftgri...@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