> A couple of corrections...

> ...

>> There is even an EMM286.EXE driver for machines with a 286 CPU floating 
>> around
>> the Internet that basically does the same thing EMM386 from MS does 
>> (including
>> providing virtualized EMS).
>
> Never seen that one. But the 286 memory managers I saw, such as
> BlueMax, used the _chipset_ to map RAM into UMBs, not the CPU. The 286
> doesn't have a hardware MMU and can't do this. This meant that 286
> memory managers were specific to the motherboard chipset. BlueMax
> worked on IBM 286 PS/2s and nothing else. There was also a Chips &
> Technologies one I read about.

I don't know exactly how EMM286 works -- it may be in fact be quite different 
than EMM386.  I do know that it provides essentially the same functionality as 
EMM386.  Also, if you use the EMS provided by EMM286, it seems to reboot the 
CPU to exit the Page Frame (i.e., it is VERY slow and isn't as useful as it is 
with EMM386).

> ...

> You do not mention the big one though.
>
> 286 protected mode is still segmented, just like the 8088/8086 with
> its 16 segments of 64kB.

Sort of.  16-bit Protected Mode uses Selectors instead of Segments, and it also 
has Descriptor Tables (like the GDT) similar to 32-bit Protected Mode.  E.g, 
you can't do straight math to calculate the linear or physical memory address 
of a Selector like you can with a Segment.  A Selector is simply an "index" to 
an entry in a Descriptor Table where the actual memory addresses (and other 
details) are stored.  But a 16-bit PM Selector is still limited to 64k in size 
(but can also be less than 64k) while a 32-bit Selector can be up to 4G (but 
can also be less).  So 16-bit PM is not really "segmented", at least not in 
quite the same sense that Real Mode is, though it's similar in some respects.

Another difference between Segments and Selectors is that a Code Segment (CS) 
is never writable, so you can't do things like use a CS: override prefix or 
simply copy CS to one of the data Selectors (DS, ES, FS, or GS) in your code if 
you intend to write to that memory (but you can read from it).

> ...

> x86-64 removes support for V86 mode, and I believe, for 286 protect mode too.

I don't doubt that is true -- 64-bit CPU's seem to really be trying hard to 
remove all legacy support, except through Software Virtualization.

>> Just as an FYI, in 16-bit PM you can access the entire 4 GB of addressable
>> memory just like 32-bit PM
>
> No, that's wrong.
>
> The 80286 has a 24-bit address bus and can access a maximum of 16MB of
> RAM directly.
>
> Its _virtual_ address space was much bigger. I think, but am not sure,
> that the 80286 supported 16k of segments instead of 16 -- so a total
> of 16384 segments of 64kB, meaning a _virtual_ address space of 1GB.
> But 16GB of real physical RAM was the max, as with the 386SX.

You're conflating the 286 CPU with 16-bit PM.  They are not the same thing.  
16-bit PM is fully supported on 32-bit CPU's -- you just need to set up the 
Selectors with the correct Rights & Extended Rights.  A 16-bit Selector on a 
32-bit CPU can address any part of the 4G memory, but the size is always 
limited to 64k. 

>> Let me first address the comment about leaving room for MS LANManager (or
>> other big TSR's) in Upper Memory.
>
> LAN Manager was not a TSR. It was a whole network stack.
>
> The LanMan _client_ was not one TSR: it was about 3 or 4 of them. A
> card driver, then a protocol, then a client... Which was good as
> different bits could go into different UMBs.

I think they all could have also gone into different EMS pages -- I don't think 
_ALL_ the code needed to be in Conventional or Upper Memory (though, 
undoubtedly, some of it probably did).

> ...

>> I actually starting investigating what EMS actually was and discovered it
>> certainly doesn't deserve the bad reputation it has garnered.
>
> Agreed. It was very useful in its time.

And I think it still is -- I am certainly finding it useful, thought I think 
DPMS is an even better alternative, at least for TSR's and Device Drivers.

> ...
>
> Handy! I had almost forgotten about DPMS, TBH.

I think most people have, if they ever even knew about it in the first place.  
It certainly wasn't very well publicized.  I've also seen references in RBIL to 
a DPMS VxD in early versions of Windows DOS boxes, but have never experimented 
with it and am not even sure it's quite the same DPMS (though according to RBIL 
it is the same as Novell).  The DPMS acronym is also used in VESA video 
contexts (Display Power Management Signaling).


_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to