← Back to context

Comment by antientropic

7 years 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.

It 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.

  • The 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.

    • > 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.

Read 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.

  • Early 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.

  • Ems / 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.