8088 vs. 80c88

Jim Leonard trixter at oldskool.org
Wed Feb 11 00:13:01 CST 2009


I was always under the impression that when Intel moved to a CMOS 
manufacturing process for the 8088/8086, they fixed a bug regarding a 
repeated LODSB with a segment override -- that the REP prefix was 
ignored (bug) in the old 8088s, and was honored (correctly) in the newer 
chips.  So a simple routine to try to identify the 8088 vs. the 80c88 
would look something like:

   mov     cx,2            ; test if following instruction will be
                           ; repeated twice.
   db      0F3h,26h,0ACh   ; rep es: lodsb
   jcxz    Yes             ; intel non-CMOS chips do not care of rep
   jmp     Nope            ; before segment prefix override, NEC and
                           ; CMOS-tech ones does.

If I run this on my 5150 with (C)1978 8088, I see the bug (cx does not 
update).  If I run this on my 5160 with "80c88" printed on the chip, I 
do not see the bug (cx goes to 0).  So all is well, right?

Well, I use this routine in a detection library for a project I recently 
completed(*) and someone is claiming that the code is broken.  It 
reports an 80c88 when the chip is *not* marked 80c88, but rather "8088 
(C) 1983 Intel".  So what's going on?  Is the chip from 1983 actually an 
80c88, since it doesn't have the bug?  Or did Intel fix the bug before 
moving to a CMOS manufacturing process?

(*) project is a CGA compatibility testing program; you can grab it from 
www.oldskool.org/pc/cgacomp
-- 
Jim Leonard (trixter at oldskool.org)            http://www.oldskool.org/
Help our electronic games project:           http://www.mobygames.com/
Or check out some trippy MindCandy at     http://www.mindcandydvd.com/
A child borne of the home computer wars: http://trixter.wordpress.com/


More information about the cctalk mailing list