: :So why did Microsoft chose 640000 bytes as the upper limit for DOS? : : Because Bill Gates said so : "640 kb ought to be enough for : everybody." : : But it's not M$, it comes from the original PC hardware design: : http://en.wikipedia.org/wiki/Conventional_memory: Your response brings more questions.

My first PC was an XT with 640K RAM. The user manual explicitly stated that memory could be expanded to 1Meg by purchasing additional chips. There were empty sockets on the motherboard to take the ships. There was a caveat that only "special software" could access this additional memory. But obviously the memory was simply not there. It was not being used by hardware.

My father still has his old Commodore PC 20, an XT clone , we looked inside and has 384k RAM and a 256K expansion card in one of the slots. After further looking we found memory chips on the graphic card and even on then hard disk controller along with a Z80. Interestingly the hard disk controller has a bunch of utility programs such as FDISK, FORMAT, SECURE ERASE etc., which can be accessed by pressing ESCAPE on start-up. My father thinks, that the memory over 640k is mapped to the hardware, like the hard disk controller ROM, video card memory, ROM BIOS, printer card etc. Who knows, maybe was possible to have some sort of expansion which required special software to be able to use it.

: My father still has his old Commodore PC 20, an XT clone , we looked : inside and has 384k RAM and a 256K expansion card in one of the : slots. After further looking we found memory chips on the graphic : card and even on then hard disk controller along with a Z80. : Interestingly the hard disk controller has a bunch of utility : programs such as FDISK, FORMAT, SECURE ERASE etc., which can be : accessed by pressing ESCAPE on start-up. My father thinks, that the : memory over 640k is mapped to the hardware, like the hard disk : controller ROM, video card memory, ROM BIOS, printer card etc. Who : knows, maybe was possible to have some sort of expansion which : required special software to be able to use it.: Memory on the original pcxt 808x machine was 512k for programs - the other 384k (up to the 1meg limit) were called UMB's (upper memory blocks). You used to have to use a config.sys driver driver to either configure it as EMS (Expanded Memory System) memory or Extended Memory (EM) depending on how you wanted to access it..

The other was was to use a DOS extender like Dos4gw to look at the memory as a flatter 'plane'.

The EM or EMS drivers basically just paged out 64k blocks from the UMB's down into the 512k area and let you write to them and then page them away again.. was useful to store data etc ..