Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!mcnc!rti!bcw From: bcw@rti.UUCP (Bruce Wright) Newsgroups: comp.sys.ibm.pc Subject: Re: 640K limit Summary: The problem is the 8088/8086 Message-ID: <3478@rti.UUCP> Date: 22 Jan 90 17:26:41 GMT References: <4668.25aed7f2@uwovax.uwo.ca| <1468@blackbird.afit.af.mil| <370@marvin.moncam.co.uk> Organization: Research Triangle Institute, RTP, NC Lines: 78 In article <370@marvin.moncam.co.uk>, emmo@moncam.co.uk (Dave Emmerson) writes: > In article <28808@amdcad.AMD.COM|, phil@pepsi.amd.com (Phil Ngai) writes: > | In article <1468@blackbird.afit.af.mil| ewilliam@galaxy-43.UUCP (Edward M. Williams) writes: > | | > | |Nowadays with memory capacities STARTING at 1M, the stuff between 640k and > | > | Don't be ridiculous. The 8088 can't ADDRESS more than 1 mega. Just where > | did you expect IBM to put the IO stuff? > > How about at 1000:0 .. 4000:0, with 16K system RAM at 0000:0, and as > much as your processor can address from 4000:0 .. infinity. Since the largest address the 8086/8088 can generate is FFFF:F (offsets higher than this wrap around to 0 on the 8086), this means that the machine you are proposing would be able to address 768K of memory from 4000:0 up, and another 64K of "system memory" at 0000:0 (the segment address 1000:0 refers to the second 64K of memory on the machine). Even if you add these two numbers together, you have only 832K of memory which although nicer than 640K is still not that big by modern standards. You could achieve the same effect by having normal RAM extend from 0000:0 to D000:0 (instead of A000:0) and would still have the amount of I/O and BIOS space you suggest (192K), without the complications. But you would also lose the flexibility of the extensible BIOS area which runs from C000:0 to about F000:0, which is the most obvious place to economize; or you would have to limit video RAM whose reserved area runs from A000:0 to BFFF:F on the PC. Some PC's did do things like this, and consequently could have more than 640K of RAM (the best-known was probably the DEC Rainbow, which could address 896K of RAM), but they did so at the expense of flexibility. You can't get any more blood from the 8086 stone by doing this kind of thing. About the only way to do it would have been to include bank switching hardware in the original system. > I'm not too familiar with the 8086, but I do recall that some processors > expect to find a hard reset vector at the top of their addressing range, > and this has to be in ROM. Even that is no excuse, properly written > relocatable soft/firmware could easily have accomodated the BIOS area > being moved. The bottom line is that everything else has followed on from > the choice of processor. The 8086 does expect to find a reset vector at the top of memory (FFFF:0). You can of course circumvent this by catching the reset line and building your own circuit to handle it differently (including mapping into a "shadow ROM" at some other address that "goes away" after the boot sequence), but this costs money for the extra design and manufacture. Why bother unless you have a clear reason? At the time, 640K seemed like an awful *lot* of memory; also, it's not at all clear that a significant amount could be gained by techniques like a "shadow ROM" - how big is the boot code anyway? Well under 64K on the PC (more like 2-8K depending on the machine). It's most often done only when you _have_ to get the code at a particular address which is inconvenient once the O/S is actually running. Since you wouldn't gain much additional memory by moving the BIOS area, why should the effort be made to make it relocatable or use shadow ROM's? Your comment about everything else following from the choice of the processor is, as you can see, quite true. > That's not to say that things wouldn't have > been worse if the illustrious PC had been based on a Z80 or a 6502. Of course, many earlier machines were ... but it's doubtful that the original IBM PC would have been as popular or that its descendents would have lasted so long. It's not at all true that the IBM name guarantees success - look at the PCjr or the 5100. > Personally I'm more inclined > to lay blame at the feet of the major software house(s) of the late 70's - > early 80's. Probably true inasmuch as you talk about the problems with DOS - there was no excuse even at the time for some of the design deficiencies of Messy DOS (especially the early versions!). But the problems with the addressability of the 8086/8088 are cast in stone. Bruce C. Wright