Skip to main content

Timeline for Who set the 640K limit?

Current License: CC BY-SA 4.0

20 events
when toggle format what by license comment
May 5, 2022 at 13:38 comment added Omar and Lorraine It may be worth knowing that the DEC Rainbow 100, which could be upgrade to 896K of memory andwhich ran MS-DOS MS-DOS can see all 896K.
Feb 17, 2020 at 15:56 history edited Tim Locke CC BY-SA 4.0
Changed 'who' to 'whom'
Sep 16, 2019 at 10:26 comment added Thorbjørn Ravn Andersen For those thinking the 640 Kb barrier was the most stupid decision ever, please remember that this machine could ship with 16 kb of RAM (though you needed more to do things like Zork, that requires 48 kb). It was only later that the limit got really problematic, and that only because the IBM PC was wildly more successful than anybody could ever have believed at launch time.
Sep 16, 2019 at 8:33 answer added Patrick Schlüter timeline score: 7
Sep 15, 2019 at 15:27 comment added dave Somewhere I recall reading that Microsoft argued for the 640K limit, because IBM had originally proposed a 512K boundary (i.e., exactly half the address space).
Nov 6, 2018 at 8:17 vote accept PkP
Oct 3, 2018 at 18:15 comment added supercat @RichF: To be sure, think the 68000 architecture is nicer than the 8088/8086, but it needs a minimum 16-bit data bus to be practical and IBM wanted to use an 8-bit bus.
Oct 3, 2018 at 16:36 comment added supercat ...that stores each line as a separate object could use 16-bit indexing within each line while accommodating individual lines up to 65,520 bytes. If the 8088 had included at least one more segment register (or perhaps--for programs whose combined DS and SS usage would be under 64K, included a mode which would use SS as the default segment for non-prefixed instructions using any addressing mode) and included load-segreg-immediate instructions, it would have been just about perfect.
Oct 3, 2018 at 16:30 comment added supercat @RichF: Unless one has a 32-bit memory bus, working with 16-bit quantities is going to be faster than working with 32-bit quantities. Splitting objects into a size that will allow offsets to be stored as 16 bits rather than 32 will thus improve performance even on a machine with a 32-bit linear address space. On the other hand, when using something like the 68000, using 16-bit offsets will limit objects to 32767 bytes. Limiting objects to 65520 bytes doesn't seem as limiting. From a practical perspective, something like a text editor...
Oct 3, 2018 at 9:27 comment added RichF @supercat You make a good "glass half full" argument in showing an effective use of overlapped pointers. From my "glass half empty" perspective I see a system limited by 16-bit pointers, causing people to find work-arounds for problems which need not exist in the first place. If Intel had not chosen to go with a design which would halve source-code compatibility with their 8-bit CPUs, then they could have gone with a flat memory model easily expandable to a 32-bit memory space at some point in the future. Instead, they locked in a half-a**ed model still dependent on 64 kbyte ranges.
Oct 3, 2018 at 8:12 comment added Voo @Rob As Ben Franklink used to say "Most quotes attributed to people on the internet are wrong".
Oct 2, 2018 at 18:49 comment added supercat @RichF: The overlapping pointers were a good design for programs that didn't need to handle individual objects over 64K. Every "linear" design I've seen on 16-bit platforms would require programs to either subdivide memory into 64K sections and ensure no object crossed a section boundary, or else add extra code for every access that could straddle a section boundary. Effective coding often required having more than two uncommitted data segments, but the 8088 design was much better than the 80286 design.
Oct 1, 2018 at 22:41 comment added Erik Eidt It probably goes without saying but Intel choose 20 bits for the address bus of the 8086, which constrained the address space to at most 1 megabyte. Beyond the address pins, there are also limitations in the instruction set that assume a 20 bit address space (the mechanism of the segment registers). Other constraints, such as IBM's board design, then shrank the potential RAM from there.
Oct 1, 2018 at 21:47 comment added RichF The "640k limit" (hole in contiguous RAM) was just 1 of a series of short-sighted, odd, and/or bad decisions involving the PC. Others include a) IBM choosing 8086 family over 68000. b) IBM not buying MSDOS outright instead of allowing Microsoft to co-own and co-market it. c) Intel choosing to overlap memory pointers instead of normative flat memory pointers. d) Intel thinking it would be an important feature of the 8086 to be able to assemble 8085 code, complicating and probably limiting the chip. e) Intel not realizing that the 286 protected mode would benefit from a way to go back to real.
Oct 1, 2018 at 18:58 comment added Davislor @Robill It wasn't that 384K (There was actually another 64K minus 16 bytes if you turned on bit 20 of the address bus.) was assigned to other purposes. By the '90s, a lot of that "upper memory" was put to use with EMM386! It was that DOS could only load an executable into a contiguous bloxk of memory, and IBM chose to start video memory at A0000h.
Oct 1, 2018 at 17:57 comment added Solar Mike It did lead to the other joke: “I need to run Word, where’s my 256 meg ram chip” about the time “bloatware” was being applied to how some wrote programs...
Oct 1, 2018 at 16:51 answer added RonJohn timeline score: 22
Oct 1, 2018 at 15:21 comment added RobIII From the horse's mouth, Bill Gates: "I never said '640K should be enough for anybody!'". Another quote in there: "The IBM PC had 1 megabyte of logical address space. But 384K of this was assigned to special purposes, leaving 640K of memory available. That's where the now-infamous ``640K barrier'' came from"
Oct 1, 2018 at 13:15 answer added Stephen Kitt timeline score: 83
Oct 1, 2018 at 12:57 history asked PkP CC BY-SA 4.0