🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.sys.ibm.pc
Article #9257

Re: 640K limit

#9257
From: Bruce Wright
Date: Wed, 24 Jan 1990 23:27
47 lines
3331 bytes
In article <1990Jan24.174315.13698@ux1.cso.uiuc.edu>, mcdonald@aries.scs.uiuc.edu (Doug McDonald) writes:
> In article <21990004@hpvcfs1.HP.COM> johne@hpvcfs1.HP.COM (John Eaton) writes:
> >In order to understand some of the limitations of the PC you must remember
> >how the 8086 came to be. Intel was on a roll with the 4004/8008/8080 and
> >decided to go all out and design a micro that really had some POWER. It
> >was to be something that could challenge the minis and become the chip
> >of the 80's. I believe it was originally called the "432". But they still
> >needed to keep business coming in the door until this wonder chip was ready
> >so they decided to do a quick and dirty enhancement of the 8080. This was the
> >8086. It's only purpose was to keep the 8080 family alive until Intel could
> >deliver its real processor. Its hard to fault the designers for any design
> >decisions that were appropriate for it's expected lifespan.
> >
> Yes, but why did they have to botch it? One tiny, simple change
> in it, that would not increase (it probably would DECREASE) the
> gate count, and it would have been MUCH better: make the segment
> registers a simple extension of the address - that is, the
> 8086 would have used only 4 bits of the segment registers,
> but the 80286 would use 8 and the 80386 all 16. 
> 
> A second change to the 8086, that would have added two instructions, 
> would have been to add "add carry to segment register" and
> "subtract carry from segment register" instructions.

The main problem with the first suggestion is that unless there are other
changes in the machine code, it makes writing position-independent routines
more difficult.  Things like .COM files exploit the fact that you don't
need to do any fixups to run a .COM file at any segment address (if the 
prorgram follows some fairly simple and obvious rules).  However, they
could have gotten much of the benefit of the 8086 segments without *quite*
so many of the drawbacks by making the segment values multiples of 64 or
256 bytes rather than multiples of 16.  This would not waste a great deal
of memory due to fragmentation, and would allow a _much_ larger address
space.   The main problem is that at the time, the memory lost due to
fragmentation probably looked bigger than it does today.

Probably they should have done something along this line, possibly
making all the memory address instructions relative or having both
relative and absolute forms.  But if you aren't careful you might
end up designing a 68000, which wouldn't do now would it? :-)

The second suggestion is a pretty good idea, but it would have complicated
the design (there's no need to have anything like counters or adders for
dealing with the segment registers, except as necessary for the address
generation hardware).

						Bruce C. Wright
Technical Details
Message-ID: <3499@rti.UUCP>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!tut.cis.ohio-state.edu!rutgers!mcnc!rti!bcw
References: <4668.25aed7f2@uwovax.uwo.ca> <21990004@hpvcfs1.HP.COM> <1990Jan24.174315.13698@ux1.cso.uiuc.edu>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!tut.cis.ohio-state.edu!rutgers!mcnc!rti!bcw
From: bcw@rti.UUCP (Bruce Wright)
Newsgroups: comp.sys.ibm.pc
Subject: Re: 640K limit
Summary: Segment registers
Message-ID: <3499@rti.UUCP>
Date: 24 Jan 90 23:27:15 GMT
References: <4668.25aed7f2@uwovax.uwo.ca> <21990004@hpvcfs1.HP.COM> <1990Jan24.174315.13698@ux1.cso.uiuc.edu>
Organization: Research Triangle Institute, RTP, NC
Lines: 47