sergey
Veteran Member
Hi,
As you might know 8088 and 80C88 are very similar from programmer's point of view. Some time ago I found that 80C88 made by Harris and later by Intersil have one difference from 8088 - they disable interrupts for one instruction following PUSH <sreg> instruction. At the same time I tested 80C88 made by OKI and Intel (copyright string (C) Intel '78), and they didn't have this behavior. Recently I've got a new Intel 80C88 chip (copyright string: (C) Intel '78, '86), and strangely enough it does test like Harris 80C88 - disables interrupt following PUSH <sreg> commands.
Now here are few interesting observations:
- Older Intel 80C88 package looks exactly the same (except the silkscreen) as Oki 80C88. It also mentions Japan, and as far as I know Intel never had manufacturing in Japan... So it looks like Oki made 80C88 for Intel.
- "CMOS version of 8086 features operating current of 10mA/MHz maximum" article from IEEE Micro (October 1983) magazine mentions that Harris Semiconductor had developed the CMOS version of 80C86 (and so I assume 80C88) and that both Harris and Intel will manufacture CMOS 80C86 CPUs using Harris design.
So any ideas what was the history of 80C88 processors? Did both Oki and Harris developed their own CMOS versions of 8088 or was it a centralized effort by Intel?
Also (this question has been asked a few times, but I never found a working solution): How to distinguish between NMOS 8088 and CMOS 80C88 in software? Wrong answers are:
- Using segment override prefix with REP... something like REP ES LODSB with big value in CX. 8088 being interrupted by timer interrupt won't continue REP. So does 80C88 (contrarily to what some sources say).
- Loading CS with instructions like POP CS or MOV CS,REG/MEMORY. Supposedly 80C88 doesn't support these undocumented instructions, while 8088 does support them. In practice 80C88 and even NEC V20 support these instructions (they basically work as far jump).
Speaking about the original NMOS 8088, I've seen at least 4 different copyright strings: Intel '78, Intel '78 '81, Intel '78 '83, and Intel 1998.
The first one - Intel '78 had a bug with loading stack address - it was not disabling interrupts after MOV SS,REG/MEMORY and therefore if interrupt happened following that instruction it would use invalid stack address. The bug was fixed in processors with Intel '78 '81 marking and later.
Any ideas what are the differences / changes between other revisions? (It could also be that there are no bug fixes in these versions, just technology changes, etc.).
Finally the last one (Intel 1998) is strange... First of all it is strange that Intel made a change to a 20 years old design. Another thing it looks like my processor was made in 2005 (L540136B date string, 5 is the last digit of year, but since the copyright says 1998, it could only be 2005). I didn't know Intel was still making 8088 (it was making 80C88 till some time in 2000's).
Thanks,
Sergey
As you might know 8088 and 80C88 are very similar from programmer's point of view. Some time ago I found that 80C88 made by Harris and later by Intersil have one difference from 8088 - they disable interrupts for one instruction following PUSH <sreg> instruction. At the same time I tested 80C88 made by OKI and Intel (copyright string (C) Intel '78), and they didn't have this behavior. Recently I've got a new Intel 80C88 chip (copyright string: (C) Intel '78, '86), and strangely enough it does test like Harris 80C88 - disables interrupt following PUSH <sreg> commands.
Now here are few interesting observations:
- Older Intel 80C88 package looks exactly the same (except the silkscreen) as Oki 80C88. It also mentions Japan, and as far as I know Intel never had manufacturing in Japan... So it looks like Oki made 80C88 for Intel.
- "CMOS version of 8086 features operating current of 10mA/MHz maximum" article from IEEE Micro (October 1983) magazine mentions that Harris Semiconductor had developed the CMOS version of 80C86 (and so I assume 80C88) and that both Harris and Intel will manufacture CMOS 80C86 CPUs using Harris design.
So any ideas what was the history of 80C88 processors? Did both Oki and Harris developed their own CMOS versions of 8088 or was it a centralized effort by Intel?
Also (this question has been asked a few times, but I never found a working solution): How to distinguish between NMOS 8088 and CMOS 80C88 in software? Wrong answers are:
- Using segment override prefix with REP... something like REP ES LODSB with big value in CX. 8088 being interrupted by timer interrupt won't continue REP. So does 80C88 (contrarily to what some sources say).
- Loading CS with instructions like POP CS or MOV CS,REG/MEMORY. Supposedly 80C88 doesn't support these undocumented instructions, while 8088 does support them. In practice 80C88 and even NEC V20 support these instructions (they basically work as far jump).
Speaking about the original NMOS 8088, I've seen at least 4 different copyright strings: Intel '78, Intel '78 '81, Intel '78 '83, and Intel 1998.
The first one - Intel '78 had a bug with loading stack address - it was not disabling interrupts after MOV SS,REG/MEMORY and therefore if interrupt happened following that instruction it would use invalid stack address. The bug was fixed in processors with Intel '78 '81 marking and later.
Any ideas what are the differences / changes between other revisions? (It could also be that there are no bug fixes in these versions, just technology changes, etc.).
Finally the last one (Intel 1998) is strange... First of all it is strange that Intel made a change to a 20 years old design. Another thing it looks like my processor was made in 2005 (L540136B date string, 5 is the last digit of year, but since the copyright says 1998, it could only be 2005). I didn't know Intel was still making 8088 (it was making 80C88 till some time in 2000's).
Thanks,
Sergey