11 ms·
This has always annoyed the piss out of me. It wouldn't have been Bill's or Microsoft's call to make, in the first place. The hardware memory map is not set by
by myself248 8y ago
This has always annoyed the piss out of me. It wouldn't have been Bill's or Microsoft's call to make, in the first place. The hardware memory map is not set by software.
The 640K limitation derives from the 1MB address space of the IBM PC, and as the name implies, IBM did the hardware design. They did it around a particular Intel chip, which had a 1MB address space. IBM could've put in hardware support for bank switching (as some EMS/XMS add-in cards later did), they could've used a chip with more than 20 address lines, they could've done a lot of things.
But they didn't. IBM wasn't designing a mainframe-killer, they were designing a personal computer. It was competing with 16k and 64k 8-bit machines, and the first IBM PCs shipped with 64k and later 128k of RAM. Using the top 384K for peripherals and allocating 640K for programs must've seemed insanely generous at the time. But whoever made that decision, it was on the hardware side, not anyone at Microsoft.
- oblio 8y ago> But whoever made that decision, it was on the hardware side, not anyone at Microsoft. The hardware supported more than 1MB, as later CPUs proved. However, MS-DOS didn't really support it, as EMS/XMS proved: https://www.filfre.net/2017/04/the-640-k-barrier/ https://www.filfre.net/2017/04/the-640-k-barrier/ I'd say that you've got it backwards, in my opinion. And in the opinion of that fine article I linked.
- antientropic 8y ago"The hardware" did not support more than 1 MB. The 8086/8088 had a 20-bit address space (reflected both in the segmentation model and the address bus), so that limits it to 1 MB.
- oblio 8y agoRead the article... Yes, obviously those CPUs didn't support it. But the later CPUs and PCs did, and yet the software (MS-DOS), didn't really support it. They had to use some gross hacks to access more memory. That excuse is valid for 8086, but it's no longer valid for the 386.
- justtopost 8y agoEms / xms was a hack to use the extra memory. Without those systems you would never see more than the base ram. These started out as 3rd party software before eventually becoming part of msdos. I still remember the sticker shock when buying a retail copy of EMM386. So I suppose 'support' is a bit weasely here.
- rzzzt 8y agoExpanded memory cards did exist before EMM386, and could be programmed to map in 4×16 KB pages to D000 or E000: https://en.wikipedia.org/wiki/Expanded_memory#Expansion_boards https://en.wikipedia.org/wiki/Expanded_memory#Expansion_boar...
- simonh 8y agoEarly DOS was designed to be as lightweight as possible so as much memory as possible was available to applications. Including expanded memory bank switching code and 32bit protected mode support on early primitive hardware that didn’t have those features anyway would have left little or nothing for actual applications to run in. Even when expanded memory was an option, loading a bank switching memory extender to work around the cpu’s Address range limitations left less base memory left for non-EMM aware apps to run in. Many times I remember discussing with users the pros and cons of different memory managers and aporoaches, but most of the time in that era, not using them at all and using bare bones MS-DOS was actually the best choice. Some users would have two boot disks. One without EMM386 to run software that wasn’t expanded/extended memory aware to maximise the memory available to them, and another with EMM386 to run one or two apps that were.
- deleted 8y ago[deleted]
- vetinari 8y agoIt was actually 1MB+64kB, due to how real mode segmenting works. The infamous A20 line could be set up to alias that top 64kB to the first 64kB. The 80286 CPUs did support up to 16 MB of RAM, but they needed to be switched into protected mode to be able to use it. The problem was, that there was no way to switch back, except reset. That might be the reason, why MS DOS never supported this mode. With 80386, it was possible to run in protected mode AND run real mode binaries in VM86 mode, which is exactly what Windows 3.x used.
- unilynx 8y agoThe 8086/8088 didn't have that A20 line setting. That was added later for backwards compatibility. The 80286 reset thing wasn't a full PC reset, but a CPU reset.
- vetinari 8y ago> The 8086/8088 didn't have that A20 line setting. That was added later for backwards compatibility. True > The 80286 reset thing wasn't a full PC reset, but a CPU reset. That required an extra hardware and BIOS support. The CPU had to be reset externally, and after jumping to FFFF:0000, the BIOS had to recognize that this is a CPU reset, not re-initialize the hardware and return execution to where it came from.
- deleted 8y ago[deleted]
- onion2k 8y agoBut whoever made that decision, it was on the hardware side, not anyone at Microsoft. Bill Gates' famous comment isn't really a decision though. As it's usually cited it's just an opinion - '640Kb should be enough for anyone' means "I don't think any programs will need more than that!". If someone at IBM decided that there should be 640Kb of available RAM for programs it's believable that Bill might have simply been agreeing with them. The main thing that's annoying about the quote is that it's trotted out as an example of how Bill was wrong, as if being wrong is something terrible that he should be ashamed of decades later. That's nonsense. Being wrong is fine so long as you change your mind when you understand that you are wrong.
- close04 8y agoTo follow up on that: as if stating anything that’s perfectly acceptable today but not years from now is somehow outrageous. “8 core CPUs or 32GB of RAM are more than enough for gaming” (c) 2018 Facts change and opinions change with them. Wonder if Moore’s law will get the same treatment now.
- logicchains 8y agoMaybe that's why Google Chrome was created, to prevent anyone ever again suggesting that any particular amount of RAM should be enough.
- 13of40 8y agoAt one of the Microsoft company meetings in the middle to late 2000s (I recall it was at Safeco Field) he claimed that when IBM was developing the PC he tried to convince them to use an MC68000 instead of the 8088. He said going with the 8088 set the industry back ten years. Assuming he wasn't making the story up, it's hard to imagine him making that quote or even agreeing with it.
- ghaff 8y agoHere's the thing though. Engineering workstations existed. There's a good argument that the "right" approach was to use an MC68K and, while you were at it, a "real" operating system whether a Unix or one of the 16-bit operating systems in use on minicomputers at the time. But there's also a good argument that, had you done a more open and mass market-oriented engineering workstation (whatever that meant exactly) at, what?, 2x the price point of an IBM PC--which, remember, didn't even always have a hard disk at the time--you'd not have been competitive with Z80 or 6502 machines. Even using the 8088 vs. the 8086 was a cost-saving move. A premium IBM PC might well have simply flopped rather than accelerating the industry.
- patrickg_zill 8y agoTo your point: Entire businesses have been run on systems that have 512k of RAM. The IBM Series 1 had up to 128k: it was designed by Don Estridge, more famously known as the father of the PC...
- deleted 8y ago[deleted]
- MrTonyD 8y agoI was doing OS coding in those days - and writing both drivers and apps on top of Windows. People forget what was happening back then. Hardware had removed the 640K memory limit - but Windows stuck with it for years afterward. Not for any technical reason, but because they dominated the market, and neither needed to change nor wanted to change - no matter how hard that made things for developers. I worked with Microsoft guys, and they were very blunt about not wanting to change their working OS code if they didn't need to - so Bill held back the entire industry for years.
- kbenson 8y agoMS has always been famously conservative when it comes to making sure old software still functioned on newer iterations. They launched a completely new OS (NT) just so they wouldn't have to kill true DOS compatibility. They put special case instructions in their OS to recognize applications and ensure they worked. It's easy to say they put back "the industry" for years, if we define the industry as chip design, but I think it's just as easy to make a case that they greatly expanded the industry over this time by giving people a platform and OS combo that could continue to run their software from a few years back even after upgrading every component. In my opinion, consumer confidence likely greatly outweighed the other benefits, as it allowed economies of scale to really be reached, and spurred the whole industry forward from the massive demand.
- MrTonyD 8y agoWhat we are arguing about is whether there were any options other than those chosen by Apple (abandon developers with Motorola 68K) and Microsoft (don't support anything other than segmented architecture). Since I worked with the Microsoft guys, Mach engineers (since I was one), and did OS development, I would say that there were definitely other choices for Microsoft. We added backward compatibility via Mach, which was picked up by Microsoft. But the Intel guys (who I also worked with) had provided newer generation chips to Microsoft years before - and they allowed development with either segmented architecture or with a linear virtual address space. They described conversations with Bill where Bill had refused to make any changes since it wouldn't increase his revenue.
- kolderman 8y agoIt was a software limit, inasmuch as the software wanted to run in real mode even though by 1989 you had a modern 32 bit cpu that had all the features to run Windows 10 today.
- NeedMoreTea 8y agoAnd the first PC design was deliberately spec-reduced in order not to impact on sales of the dedicated word processor, the IBM Displaywriter. The 8086 was thought too powerful and would compete against existing IBM products, so the 8088 was chosen. Other changes to expansion and bus architecture were on the same basis. The PC was not supposed to be the benchmark design on which the entire future of computing was built. If you were looking for one of those better off starting with an Amiga. :)
- reidrac 8y agoThat's right. My first PC had 512K (and a NEC V40 CPU, 80188 compatible). The first time I met someone at school owning a PC with 640K I found it really weird, like it was an usual number coming from a ZX Spectrum 8-bit with 128K of RAM.
- dhimes 8y agoNice try Bill. We all know you said it. :)