John Payson wrote: > > > >I can still hear someone say "640 Kb should be enough for anyone" ... :-) > > > > Bill Gates said that, believe it or not. > > |Really, did he? > > Supposedly, though I suspect the quote is apocryphal. > > |That's funny, because the so called "640 k barrier" was IBM's > |invention, by placing the video buffers at 640K in the 1MB memory > |space of the 8086/88, in the original IBM PC design. > > Microsoft and Bill Gates were actually quite involved in the design > of the original PC. Remember that they not only provided the DOS for > the machine, but more importantly (at the time) they also wrote the > BASIC interpreter (which was still in the ROMs of many IBM machines > built long after it was essentially obsolete!). I have no idea what, > if anything, Microsoft contributed to the memory map (which isn't all > THAT bad, really) or the I/O map (which is TERRIBLE!) but supposedly > the character set (including that funny character 158 which nobody can > identify) was Bill Gates' creation. > > |MSDOS could use the full 1M quite well, from the very beginning. > |There existed MSDOS PCs which where not IBM PC compatible, > |which accessed the video buffers by a banking scheme, and so > |could use the full 1MB minus epsilon. I used one myself (made by > |Nixdorf/Germany - now part of Siemens-Nixdorf, SNI), which was > |built that way. > > Pushing the memory up to 736K on CGA-based machines (or 704K on mono- > chrome machines) was not a problem; the area starting at $A0000 was > labeled as "reserved for future expansion". IBM didn't actually use > that area until the advent of the EGA card (which was an incredibly > bizarre and awful hack, IMHO), but all subsequent display cards have > needed that area for compatibility with EGA/VGA. > > In fairness to IBM and Microsoft, however, I don't think that having > the barrier at 640K was any better or worse than having it at, e.g., > 512K or 768K. The fundamental difficulty was that software which had > been designed to fit (barely) in a 640K system without too much other > junk (e.g. network drivers, etc.) had trouble in more complex setups. > Had the original barrier been at 768K, programs would have been big- > ger and the exact same problem would have arisen. > > In some ways, it may even be said that having the "640K" barrier was > a good thing. Since there are unused addresses above that spot, it > is possible to cram in drivers and such without taking memory from > the bottom 640K. Thus programs that expect 640K can get it. Had the > original barrier been at, e.g. 896K ($E0000) then a lot of software > would probably have required 800+K of available RAM and there'd be > nowhere to put the drivers. > > Of course, back in the days of DesqView (before Windows really took > off) I found it oddly ironic that while I spent $100 to buy 4MB of > RAM, people all over were spending hundreds of dollars in time and > software to gain a few dozen K here and there of "DOS" memory. Boy > that was awhile ago... As I see it, it's that assumption that having a barrier at ALL was necessary/OK, that's a stupid assumption that didn't need to be made at all... If they'd not done a "Dumb", we could have a memory map without any barrier, like this (Just a quick idea, using 16 Mb as an arbitrary number): 0 to 16 Mb could be device space, memory map space, BIOS Rom space, and so on (By now, IBM Basic would take a full meg of it, right?) Give each slot in your machine up to a full megabyte of IO space if it needs it, tell it it's ROM IO Base at bootup time. No address contention, had they done that. From 16 Mb upwards could be linear RAM, up to 32 bits unsigned addressing. No dang 640k limit. I could be running QEdit with 64 Mb of Ram, not 600k, available SO many things I do would be so much easier had this been done! The 16 Mb barrier here is just arbitrary (Could be at 7FFFFFFF giving you 31 bits of address space before & 31 bits of RAM space from 80000000 to FFFFFFFF, just as easily.) It's not excessively limiting, unlike the 640k barrier But then, we could have an interrupt controller per slot, truly shared interrupts, and so on, had things been done "my way"; dream on, huh? Mark, mwillis@nwlink.com