strangest systems I've sent email from

Guy Sotomayor Jr ggs at shiresoft.com
Tue May 24 17:24:43 CDT 2016


> 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


More information about the cctalk mailing list