the 640kb limit was of the hardware, software was written around it.
the 8086 processor that was used in the first PC by IBM, supported only 1 MB of memory, and that was divided as follows:
0-640k: User memory, but first 1k used for teh IVT (Interrupt Vector table as the processor was designed to use this region to store addresses of the 256 (4 bytes each) interrupts in the lowest 1k)
-128k: Video memory, used in parts by different displays, some by the MDA (Monochrome Display Adapter), the CGI (Colour Graphics Adapter) an EGA/VGA (Video Graphics Array/Adapter)
-128k: User ROM-BIOS, like the one we find on a display card, system BIOS can be augmented with custom BIOS mapped in this region.
-128k: System ROM-BIOS, the processor was designed to start with the first instruction 15 bytes short of 1 MB, so all the firmware had to be placed there.
640kb was more than enough for DOS programs and most of the shell programs that had a GUI (although in text mode)
Windows changed it all.
So, early days, there was no concept of chipsets, individual functions were carried out by specialised chips, and the basic memory (128/256k) was present on the board itself. there was no concept of a memory module either, the board had arrays of DIP sockets to get the chips, and additional memory was installed by way of ISA (8 bit wide then!) memory upgrade cards!!!
These days, even the 640k base memory is present in the DIMM, nothing is present on the board, so if you have a newer board you need to put some memory on it to get it boot. But it is a common diagnostic trick to remove the memory and the display card to check the board. If it starts beeping continuously in absence of memory, it is good. Else how would the BIOS code to make the beeps have executed!!???
girish
<font color=red>Nothing is fool-proof. Fools are Ingenious!</font color=red>