On 28 Oct 2010 at 13:34, Richard wrote:
Just because a CPU architecture has IO
instructions doesn't mean you
can't do memory-mapped I/O.
Just because a CPU doesn't have any I/O instructions or I/O space,
doesn't mean that you can't invent them.
Memory mapped IO is ubuiqitous in MS-DOS based
PCs, as it is generally
fastest to write directly to the memory-mapped display memory for
CGA > and VGA displays.
And there were other PC displays, that didn't use memory-mapped video
at all. One liability with the PC was that you weren't able to move
display space anywhere--software assumed it to be at a fixed
location. That pretty much limited real-mode RAM space to 640K,
which eventually became something of a liability until protected-mode
CPUs with address remapping came along.
The limit to 640k was for two reasons: 1) IBM decided to stick I/O and
ROM space starting at $A0000 and 2) MS-DOS required a contiguous memory
region (it couldn't deal with holes in memory).
Oh, and 3) nobody knows quite who said "640k should be enough for
everybody." It could have been IBM; it could have been Microsoft.
-spc (Gah! Why is this information still in my head? I haven't used
MS-DOS for fifteen years now!)