Skip to main content

Timeline for Who set the 640K limit?

Current License: CC BY-SA 4.0

11 events
when toggle format what by license comment
Oct 3, 2018 at 13:10 comment added Neil Also, remember there was no such thing as plug and play, so things like video cards were designed to ONLY work at a fixed location within the 1st MB. Some had physical DIL switches, but for most of them, they had no option to move around. You couldn't add 2 CGA cards for example, but you could add both a monochrome (Hercules) and a CGA card, to have 2 screens because they would always appear in different address ranges. (I wrote such a system in the early 90s).
Oct 2, 2018 at 21:12 comment added Rui F Ribeiro @supercat I known, I was an early user and did my share on using and abusing undocumented stuff when programming. Nevertheless, the point is that it all escaped to IBM control in several angles.
Oct 2, 2018 at 20:34 comment added supercat @RuiFRibeiro: Unfortunately, the DOS routines for text output were more than an order of magnitude (factor of 10!) slower than optimized functions that wrote screen memory directly. Users preferred programs that could draw a screen in under 1/10 second rather than taking more than a full second, and programmers can hardly be blamed for giving users the kind of performance they want.
Oct 2, 2018 at 11:18 comment added Stephen Kitt But even if DOS software had only called BIOS and DOS services, it wouldn’t have been easy to run it in protected mode on a 286 because of all the segment arithmetic which was commonly indulged in.
Oct 2, 2018 at 7:31 comment added Rui F Ribeiro @Artelius The point is that software was "supposed" to use the services only via the BIOS/DOS system calls, and not address directly memory. However, people wanted faster software, there were BIOS lists, and soon Norton published their own books for the average Joe that did not had access to the BIOS listings.
Oct 2, 2018 at 7:03 comment added Stephen Kitt (With appropriate rules, it is possible to write real-mode programs which work fine in protected mode; Windows is proof of that.)
Oct 2, 2018 at 7:01 comment added Stephen Kitt @RonJohn CP/M supported that, yes, as did DOS in its own way; but expansion beyond 1MiB (+ HMA) required following development rules which were only published with the 286, so software couldn’t be written in an upwardly-compatible manner on the original IBM PC because the rules to do so weren’t known (nor was the architecture of the 286 when the PC was designed). Even if programmers followed all the “rules” (of which there weren’t many), their programs wouldn’t be able to use RAM above the HMA.
Oct 2, 2018 at 1:44 comment added RonJohn @StephenKitt in CP/M there was a command (but I can't find it now, and never had to use it, since my KayPro came with 64KB) to adjust the base address where CP/M loaded the BIOS. obsolescence.wixsite.com/obsolescence/cpm-internals "BDOS and CCP ... do not need any customisation - other than the need for them to be relocated (shifted up or down in memory) if the size of total memory changes after a user forked out to buy another 16K of RAM, for instance.​" IBM PCs presumably would have received such a feature when the 80286 arrived.
Oct 2, 2018 at 1:34 comment added Artelius @StephenKitt Good question. I don't think there is an interrupt vector which returns, say, the start of video memory. INT 12h returns the amount of contiguous memory, in KB, starting from address 0, but presumably if less than 640KB of RAM is installed this will be smaller and not tell you where video memory begins.
Oct 1, 2018 at 21:24 comment added Stephen Kitt Could you expand on how that would have worked in practice, assuming well-behaved software?
Oct 1, 2018 at 16:51 history answered RonJohn CC BY-SA 4.0