Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!rutgers!uwm.edu!ux1.cso.uiuc.edu!ux1.cso.uiuc.edu!uxe.cso.uiuc.edu!mcdonald From: mcdonald@uxe.cso.uiuc.edu Newsgroups: comp.sys.ibm.pc Subject: Re: Why is DOS limited to 640K? Message-ID: <110200015@uxe.cso.uiuc.edu> Date: 16 Oct 89 09:40:08 GMT References: <10253@cbnews.ATT.COM> Lines: 32 Nf-ID: #R:cbnews.ATT.COM:10253:uxe.cso.uiuc.edu:110200015:000:1670 Nf-From: uxe.cso.uiuc.edu!mcdonald Oct 15 14:46:00 1989 >Why is a plain DOS limited to 640K memory? It (MS-DOS itself) isn't. It is IBM's PC-DOS that is limited to 640 K. MS-DOS is limited to the amount of memory that appears below the lower of the ROM-BIOS and video memory (if any). In a PC ROM-BIOS starts at 640K+128K = 768K. So, if one had a hacked bios and a video card somewhere above that, you use 768 K. Some non-clone MS-DOS computers really do run up to 704 K. A friend of mine has an MS-DOS computer with a bios he write himelf that really uses 768K. The reason for the ultimate limit is that the ROM has to go somewhere, and it better be below 1Meg, as that is all an 8086 can address. 640K comes because that is where EGA video memory goes. >I think a more direct question is why didn't Microsoft adopt an >official DOS extenter as soon as the ATs came out 5 years ago. >It would be compatible with the old DOS applications and would free >AT owners from DOS most serious limitation. After all this time the >286's are two (or three if you count RISC) generations behind, and >without an operating system. Because that is impossible. old DOS applications run on 8086's, not in the 80286 extended mode. They DO sell OS/2, and does not have a 640K limit - but they didn't have it then. They did have a Xenix, which does not run DOS programs, but even the first version worked fine as a Unix. 8086 programs cannot run in 286 mode because Intel changed the way segment registers work. And, believe it or not, somehow Intel forgot to add instructions to switch from 80286 mode back to 8086 mode ( so hardware hacks get installed to do it by a hardware reset). OS/2 cannot run most DOS programs. Doug MCDonald