[comp.os.msdos.programmer] 8088 vs 8086

storm@cs.mcgill.ca (Marc WANDSCHNEIDER) (06/21/91)

Could somebody please tell me the difference between the 8088 and the 8086
processors..?

Obviously, both are 16bit processors, but is the width of the data bus the 
only difference between them...?

Which was developed first, and why is it that the 386 and 486 chips create 
virtual 8086s instead of virtual 8088s...?

./*-
storm@bart.cs.mcgill.ca
storm@sizone.UUCP
-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
storm@cs.mcgill.ca         McGill University           It's 11pm, do YOU
Marc Wandschneider         Montreal, CANADA            know what time it is?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

dj@ctron.com (DJ Delorie) (06/21/91)

In article <1991Jun21.030948.10951@cs.mcgill.ca>, storm@cs.mcgill.ca (Marc WANDSCHNEIDER) writes:
> Could somebody please tell me the difference between the 8088 and the 8086
> processors..?
> 
> Obviously, both are 16bit processors, but is the width of the data bus the 
> only difference between them...?
> 
> Which was developed first, and why is it that the 386 and 486 chips create 
> virtual 8086s instead of virtual 8088s...?


Software differences:

  * Timing of opcodes, but only due to memory fetch times and
    instruction prefetch queue size.
    

Hardware differences:

  * 8-bit data bus vs. 16-bit data bus.

  (The 8088 had a "minimum" mode for 8085-ish compatibility; I don't
   recall if the 8086 had it also)

Same is for 80186 vs 80188.  I find that the only practical difference
is the cost of the external circuitry required.  With an 8088, you can
use one 8-bit ROM and one 8-bit RAM.  With an 8086, you need at least
two of each, with special circuitry to enable byte-wide writes.

As for the V86 mode, I *guess* that it's because the chip can do the
16-bit reads/writes you ask for, instead of 8-bit r/w.

I don't recall which was developed first, but my recollection is that
the original IBM PC had an 8088, and the IBM XT had an 8086.

DJ
dj@ctron.com

oneel@heawk1.gsfc.nasa.gov ( Bruce Oneel ) (06/21/91)

In article <1991Jun21.030948.10951@cs.mcgill.ca> storm@cs.mcgill.ca (Marc WANDSCHNEIDER) writes:


   Could somebody please tell me the difference between the 8088 and the 8086
   processors..?

   Obviously, both are 16bit processors, but is the width of the data bus the 
   only difference between them...?

   Which was developed first, and why is it that the 386 and 486 chips create 
   virtual 8086s instead of virtual 8088s...?

Internally, the 8086 and 8088 are divided into two units, the
execution unit and the bus interface unit.  Both of them use the same
execution unit and only differ in the bus interface units.  Inside,
the real CPU part (the execution units) is the same so that's my guess
as to why 386 and 486 have V86 modes.  

The differences in the bus interface units are as follows (it's been a
few years on the memory)

1.  The 8088 talks to the world in 8 bits at a time, the 8086 in 16
bits.
2.  The Prefetch queue in the 8086 is 6 bytes while the 8088 is 4
bytes.  Why? I don't remember, I do remember reading a well thought
out intel discussion about this.

3.  The other signals which come out are different.  The 8088 does
have a minimal mode where some of it's features aren't available (say
bus granting and such) but where the support chip count is reduced.
Not a big deal now, but in 1978 (or when ever it was designed) it was
a big deal.

As a result of the different bus interface units, the instruction
timing is different.  Memory fetches are much more expensive on the
8088 then on the 8086 when the 8086 is doing word aligned fetches.  A
good background reference to all of this is in Embedded Systems
Journal for (july?, the one which came to me in the mail yesterday).
Also, you could ask on comp.arch.

As I understand intel's push, the 8086 was the real processor and the
8088 was for a cheaper design.  The 8086 was first.

bruce
--
Bruce O'Neel              oneel@heasfs.gsfc.nasa.gov
NASA/GSFC/STX/Code 664

dmurdoch@watstat.waterloo.edu (Duncan Murdoch) (06/21/91)

In article <1722@balrog.ctron.com> dj@ctron.com writes:
>
>I don't recall which was developed first, but my recollection is that
>the original IBM PC had an 8088, and the IBM XT had an 8086.

Nope, the XT was 8088 based as well.  I can't think of any machine that
IBM released that used the 8086, though one of the early PS/2 machines
may have.

Duncan Murdoch
dmurdoch@watstat.waterloo.edu

pjh@mccc.edu (Pete Holsberg) (06/22/91)

In article <1991Jun21.030948.10951@cs.mcgill.ca> storm@cs.mcgill.ca (Marc WANDSCHNEIDER) writes:
=
=Could somebody please tell me the difference between the 8088 and the 8086
=processors..?
=
=Obviously, both are 16bit processors, but is the width of the data bus the 
=only difference between them...?

For all practical purposes, yes.  I think that there's slightly
different instruction fetch queue, but neither a user nor a programmer
would be aware of it.
=
=Which was developed first, and why is it that the 386 and 486 chips create 
=virtual 8086s instead of virtual 8088s...?

8086 was first.  Because the 8086 was first.  ;-)

Pete
-- 
Prof. Peter J. Holsberg      Mercer County Community College
Voice: 609-586-4800          Engineering Technology, Computers and Math
FAX: 609-586-6944            1200 Old Trenton Road, Trenton, NJ 08690
Internet: pjh@mccc.edu	     TCF 92 - April ??-??, 1992

sorrow@oak.circa.ufl.edu (06/22/91)

Well, here is the Intel family as far as I can discern:

Intel 8086: 16-bit processing, 16-bit data path
Intel 8088: Developed based on 8086.  16-bit data path was considered too
            expensive, thus we have a 16/8-bit system.
Intel 80188: Sames as 8088, but a bit faster since some offboard components
             were moved onto the chip itself (don't know which).
Intel 80186: 8086 equivalent of 80188
Intel 80286: 16/16 processor, however supported up to 16MB of addressable
             RAM and had a protected mode.
Intel 80386: 32/32 processor, however early implementations restricted the
             32-bit protected mode due to some bugs.  32-bit data path not
             supported on ISA bus machines.  Supports up to 4GB of RAM and
             has a built in ability to emulate virtual 8086 machines (why
             the 8086, I don't know -- possible because it is a closer 
             analogy to the 80386 than the 8088).
Intel 80386SX: 32/16 processor.  Considered a compromise on price and
               performance.
Intel 80486: 32/32 (I think) with on board FPU and 8k cache.
Intel 80486SX: 32/32 (Again, I think) with on board FPU disabled.

/*
Brian Hook -- MS-DOS Programmer for Contract
-----------------------------------------------------------------
"Seamus, that's my dog...I saw her today at the reception...sorry, sixTEEN
inches....better save the women and children first...but this one goes to 11!
..anymore of that plutonium nyborg?....there can be only ONE!....like a 
finger pointing to the moon....ease the seat back...one day closer to death
*/

kanderse@money.prime.com (Kurt Andersen) (06/22/91)

In article <1991Jun21.153305.23525@maytag.waterloo.edu> dmurdoch@watstat.waterloo.edu (Duncan Murdoch) writes:
>Nope, the XT was 8088 based as well.  I can't think of any machine that
>IBM released that used the 8086, though one of the early PS/2 machines
>may have.
>
>Duncan Murdoch
>dmurdoch@watstat.waterloo.edu


As I recall the first verrsion of the IBM pc used 8086.
This version failed and was shortly followed by the
8088 version of the IBM pc.

Every so often you here about someone looking for IO cards
for an original IBM pc.  The 8086 IBM pc had a different
bus design then the popular IBM pc.

I think it failed pecause of bad technical desgin, and
marketing.

IBM started up a chain of franchised computer stores with
strange rules like requiring RED carpeting etc.  It turns out
the most successful store had IBM blue colored carpeting.  Needless
to say, IBM kicked the store out for violating franchise
rules.  They were planing to give this dealership the best
dealership award when IBM found out.

-Kurt

chetl@daisy.tamu.edu (Chet Laughlin) (06/22/91)

In article <1606@cvbnetPrime.COM> kanderse@money.UUCP (Kurt Andersen) writes:
>In article <1991Jun21.153305.23525@maytag.waterloo.edu> dmurdoch@watstat.waterloo.edu (Duncan Murdoch) writes:
>>Nope, the XT was 8088 based as well.  I can't think of any machine that
>>IBM released that used the 8086, though one of the early PS/2 machines
>>may have.
>>Duncan Murdoch
>>dmurdoch@watstat.waterloo.edu
>As I recall the first verrsion of the IBM pc used 8086.
>This version failed and was shortly followed by the
>8088 version of the IBM pc.
>Every so often you here about someone looking for IO cards
>for an original IBM pc.  The 8086 IBM pc had a different
>bus design then the popular IBM pc.
>-Kurt

I can't vouch for the red carpet/blue carpet story, but
the first IBM PCs did use Intel 8086s.  They also had
cassette ports in the back, as some of you may recall.
The machine is called a PC-1 internally by IBM hardware
reps.  The motherboard came with 256K of RAM if I remember
right, and could hold 512k.  The PC-2 came out later,
and had an Intel 8088.  There was room on the motherboard
for 640k and the cassette port had dissappeared - but 
Basic still supports it...

As for the bus design, I really can't remember anymore
if there was a difference between the 8088 and 8086
versions.  I do know you could place the same mono or 
CGA cards in either machine and they worked fine.  I'd
have to pull out a schematic for both before making any
definite calls.  Anyone else remember when you got a
schematic for the machine when you bought one.  (a little
nostalgia never hurt)  oh yes, and BIOS listings to boot
in the Tech manuals.

No PS/2 or PS/1 machines used the 8088.

-Chet Laughlin

wallyk@bicycle.WV.TEK.COM (Wally Kramer) (06/22/91)

sorrow@oak.circa.ufl.edu writes:

...
> Intel 80186: 8086 equivalent of 80188
...

More like an 8086 with a couple of extra instructions (which were supposed
to work in the 8086), plus a lot of additional on-chip hardware:  2 (4?)
DMA controller channels, some programmable timers, and dynamic RAM support.
-----
Wally Kramer	contracted from Step Technology, Portland, Oregon 503 244 1239
wallyk@orca.wv.tek.com        +1 503 685 2658

sorrow@oak.circa.ufl.edu (06/22/91)

Time out...the first PC came with a casette port.  True.
The first PC came with 256K?  WRONG.

The first PCs (I mean the FIRST) had 16K on the motherboard, expandable
to 64K.  Later ones allowed expansion to 640K I believe.

Brian
/*
Brian Hook -- MS-DOS Programmer for Contract
-----------------------------------------------------------------
"Seamus, that's my dog...I saw her today at the reception...sorry, sixTEEN
inches....better save the women and children first...but this one goes to 11!
..anymore of that plutonium nyborg?....there can be only ONE!....like a 
finger pointing to the moon....ease the seat back...one day closer to death
*/

Ralf.Brown@B.GP.CS.CMU.EDU (06/22/91)

In article <17641@helios.TAMU.EDU>, chetl@daisy.tamu.edu (Chet Laughlin) wrote:
}I can't vouch for the red carpet/blue carpet story, but
}the first IBM PCs did use Intel 8086s.  They also had
}cassette ports in the back, as some of you may recall.
}The machine is called a PC-1 internally by IBM hardware
}reps.  The motherboard came with 256K of RAM if I remember
}right, and could hold 512k.  The PC-2 came out later,
}and had an Intel 8088.  There was room on the motherboard
}for 640k and the cassette port had dissappeared - but 
}Basic still supports it...

Nope.  The PC-1 had an 8088 as well, and was limited to 64K on the
motherboard (using 16K chips).	It also had only five expansion slots
compared to the eight on the PC-2, which could hold 256K on the
motherboard (though by adding one chip and replacing another, you could
get it to hold 640K on the motherboard).

BTW, even the newest PS/2s still have the identical BASIC interpreter
in ROM (copyright 1981).  Has something to do with the fact that IBM's
BASIC.COM and BASICA.COM make calls to absolute addresses in the BASIC
ROM....

-- 
{backbone}!cs.cmu.edu!ralf  ARPA: RALF@CS.CMU.EDU   FIDO: Ralf Brown 1:129/53
BITnet: RALF%CS.CMU.EDU@CARNEGIE   AT&Tnet: (412)268-3053 (school)   FAX: ask
DISCLAIMER?  Did  | It isn't what we don't know that gives us trouble, it's
I claim something?| what we know that ain't so.  --Will Rogers

sorrow@oak.circa.ufl.edu (06/23/91)

|>BTW, even the newest PS/2s still have the identical BASIC interpreter
|>in ROM (copyright 1981).  Has something to do with the fact that IBM's
|>BASIC.COM and BASICA.COM make calls to absolute addresses in the BASIC
|>ROM....

Exactly right.  And because of this, a PC clone cannot run IBM BASICA or
BASIC.  This is one of the reasons for the existence of a separate BASIC for
MS-DOS machines, GW-BASIC.

|>
|>-- 
|>{backbone}!cs.cmu.edu!ralf  ARPA: RALF@CS.CMU.EDU   FIDO: Ralf Brown 1:129/53
|>BITnet: RALF%CS.CMU.EDU@CARNEGIE   AT&Tnet: (412)268-3053 (school)   FAX: ask
|>DISCLAIMER?  Did  | It isn't what we don't know that gives us trouble, it's
|>I claim something?| what we know that ain't so.  --Will Rogers

By the way Ralf, damned good book! (UnDOS).
/*
Brian Hook -- MS-DOS Programmer for Contract
-----------------------------------------------------------------
"Seamus, that's my dog...I saw her today at the reception...sorry, sixTEEN
inches....better save the women and children first...but this one goes to 11!
..anymore of that plutonium nyborg?....there can be only ONE!....like a 
finger pointing to the moon....ease the seat back...one day closer to death
*/

shaunc@gold.gvg.tek.com (Shaun Case) (06/23/91)

In article <1991Jun21.173218.1912@mccc.edu> pjh@mccc.edu (Pete Holsberg) writes:

(re: 8086 vs 8088)

>
>For all practical purposes, yes.  I think that there's slightly
>different instruction fetch queue, but neither a user nor a programmer
>would be aware of it.

Someone mentioned that they are different lengths -- what if you have some
self modifying code that modifies something that is already in the queue?
Do the 8086/8 catch this and re-fetch (or modify within the queue) the 
altered instructions?

It is my understanding that running self-modifying code is a definite 
no-no on the 386 and 486, although I think this is due to pipelining
rather than a fetch queue.  

Am I right or wrong?

(Please, no style flames on SMC, I don't write it (any more...)  :-> )

Shaun


-- 
shaunc@gold.gvg.tek.com  

-- 100,000, perhaps 200,000 or more Iraqis died in a "Turkey Shoot"
   inappropriately called a "war."  -- Michael Albert

jorgense@irisa.fr (Finn Jorgensen) (06/24/91)

To answer the question from Shaun Case about self modifying code :

One way (the only, to my knowledge) to test wether you have a '88 or a '86
is to modify code five bytes after the program counter. If the processor 
executes the modified code, it is a '88 (the modified code has not been
fetched yet) if the original code (ie. before modification) is executed,
you have a '86 (code already in prefetch queue before modification).

The same test, using an adress slightly further down, can be used to
distinguish the '88-'86 family from the later processors.

Anyway, self-modifying code has always been considered very dangerous and
bad practice. It is even more so with these prefetching processors.

Greetings from Brittany, France !

Finn Jorgensen. 
IFSIC, Universite de RENNES I
Campus de Beaulieu
35042 RENNES CEDEX
FRANCE

liberato@dri.com (Jimmy Liberato) (06/25/91)

chetl@daisy.tamu.edu (Chet Laughlin) writes:

>In article <1606@cvbnetPrime.COM> kanderse@money.UUCP (Kurt Andersen) writes:

>>As I recall the first verrsion of the IBM pc used 8086.
>>This version failed and was shortly followed by the
>>8088 version of the IBM pc.
>>Every so often you here about someone looking for IO cards
>>for an original IBM pc.  The 8086 IBM pc had a different
>>bus design then the popular IBM pc.
>>-Kurt
>
>I can't vouch for the red carpet/blue carpet story, but
>the first IBM PCs did use Intel 8086s.  They also had
>cassette ports in the back, as some of you may recall.
>The machine is called a PC-1 internally by IBM hardware
>reps.  The motherboard came with 256K of RAM if I remember
>right, and could hold 512k.  The PC-2 came out later,
>and had an Intel 8088.  There was room on the motherboard
>for 640k and the cassette port had dissappeared - but 
>Basic still supports it...


I just looked inside a PC-1, and, well, at least the carpet 
story might have some credibility!

--
Jimmy Liberato   liberato@dri.com
                 ...uunet!drivax!liberato

Darius Vaskelis <U39648@uicvm.uic.edu> (06/25/91)

>>I can't vouch for the red carpet/blue carpet story, but
>>the first IBM PCs did use Intel 8086s.  They also had
>>cassette ports in the back, as some of you may recall.
>>The machine is called a PC-1 internally by IBM hardware
>>reps.  The motherboard came with 256K of RAM if I remember
>>right, and could hold 512k.  The PC-2 came out later,
>>and had an Intel 8088.  There was room on the motherboard
>>for 640k and the cassette port had dissappeared - but
>>Basic still supports it...

*AHEM*  Not quite right.  This is from someone who actually used
an original IBM PC with DOS 1.0 for a while, and now works at
IBM.  (Although comments in this message are NOT to be taken as
official statements from IBM, this is just little old me
represtenting no one but myself...)

The original IBM PC (sometimes dubbed PC-1) did indeed use an
Intel 8088, NOT the Intel 8086.  The reason for it was that
there were a great many cheap 8-bit components on the market,
and not a very many 16-bit ones.  IBM picked the Intel 8088
because internally it was 16-bit, so it would be more
attractive than a Z80, but externally it would be 8-bit,
allowing existing designs of hardware expansion to be easily
modified to work in the IBM PC.

The original operating system was supposed to be CP/M-86 from
Digitial, but due to a few events I won't go into, it ended
up being IBM PC-DOS 1.0, which they licensed from Microsoft who
bought it from someone else as DOS86.  IBM did market CP/M-86
along with IBM PC-DOS, and even a few other OSs.  (Anyone
remember the UCSD system for UCSD Pascal?  Whew!)

The IBM PC did indeed have a cassette port.  It was located
right next to the keyboard port, and was the same DIN
connector.  The only other IBM that had one was the PCjr,
although it used a different connector.

The first IBM PC had 16K of RAM soldered to the motherboard,
with empty sockets to allow up to 64K of RAM.  Expansion
through the 8-bit slots allowed expansion to 544K of RAM.
(Later BIOS upgrades which were once available through IBM
supported 640K of RAM, hard disks, and EGA.  The first IBM
PC could use NONE of these if the original BIOS is still
intact.)  The next PC after it had 64K soldered to the
motherboard and allowed 256K of expansion.

The first PC to use the Intel 8086 that I'm aware of was a
Compaq.  On this fact however, I'm not so sure.  I still have
the PC World when it was introduced, and it seemed to refer
to it as the first 8086 machine, and it explained what an
8086 was since it was new to everyone even though it's an
older chip, but I wouldn't be surprised if someone digs up
an older compatible design that used the 8086.

IBM's first PC that used an 8086 was the IBM PS/2 Model 30.
It ran it at 8MHz.  The IBM PC, PC-XT, and PCjr all used an
Intel 8088 running at 4.77Mhz.  If anyone tells you other-
wise, they are just plain wrong.  If you find someone who
claims it had an 8086, open 'er up and check.  If it has
the original IBM motherboard, it's an 8088.

- Darius
=========================================================================
   BITNET: U39648@UICVM             | "I'd rather laugh with the sinners
 Internet: u39648@uicvm.uic.edu     |         than cry with the saints,
====================================|  the sinners are much more fun,
  "Don't set fire to strangers."    |  and only the good die young."
  - Mr. Zarniwoop                   |  - Billy Joel

davet@cbnewsj.cb.att.com (Dave Tutelman) (06/27/91)

In article <91176.135005U39648@uicvm.uic.edu> U39648@uicvm.uic.edu (Darius Vaskelis) writes:
>
>The first PC to use the Intel 8086 that I'm aware of was a
>Compaq.  On this fact however, I'm not so sure.  I still have
>the PC World when it was introduced, and it seemed to refer
>to it as the first 8086 machine, and it explained what an
>8086 was since it was new to everyone even though it's an
>older chip, but I wouldn't be surprised if someone digs up
>an older compatible design that used the 8086.

I believe that the Compaq used an 8088, though I could be wrong.  The
press (and the industry) sometimes referred to them generically as
"8086 machines" because, after all, the 8086 had been around for some
time, though not in desktop PCs.  There were "cage" computers (S100 bus
comes to mind) that used it, and I worked on a PBX (private telephone
system) whose processor was an 8 MHz 8086.

The first IBM-compatible PC I know that used a true 8086 chip was made
by Olivetti, and sold in the USA as the AT&T PC 6300.  That was about
1984 or '85.  I could be wrong, and would be interested in facts to
the contrary.

Dave

sorrow@oak.circa.ufl.edu (06/28/91)

It is my understanding that the first machine to use an 8086 at 8mhz was
a Compaq DeskPro.  I remember a whopping SI of 1.9....:-)

Brian
/*
Brian Hook -- Specialist in X to ANSI.SYS porting software
-----------------------------------------------------------------
"Seamus, that's my dog...I saw her today at the reception...sorry, sixTEEN
inches....better save the women and children first...but this one goes to 11!
..anymore of that plutonium nyborg?....there can be only ONE!....like a 
finger pointing to the moon....ease the seat back...one day closer to death
*/