V20 trivia (was: WTD: NEC V20 Hardware Manual, IBM PC schematics

From: Hans Franke <Hans.Franke_at_mch20.sbs.de>
Date: Thu Mar 13 04:28:00 2003

> > > > Not that I know off. The V20 did behave exactly like an 8088.
> > > Besides, it wasn't a completely Bug-For-Bug replacement. NEC failed to
> > > implement some of the quirks of the 8088. For example, if an interrupt
> > > occurred during the execution of an instruction with a double prefix, the
> > > NEC would continue, but the intel would drop one of the prefixes when
> > > resuming.
> > > REP MOVSB DS:[SI] DS:[DI]
> > > will resume with a V20, but with an 8088 will only do one more rep after
> > > an interrupt.
> On Wed, 12 Mar 2003, Hans Franke wrote:
> > Well, that's eactly the 186 behaviour. Now considering that the

> Not MY experience. The 386 is the first Intel that I'm aware of that
> fixed the double prefix bug. But NONE of the NEC v series had that
> bug. (ONE way to tell whether the current chip was Intel or NEC)

I have to step back here. I always thought the 186 had this already
fixed. Maybe I'm mixing up these two CPUs.

Didn't the 80C86/88 also have the double prefix bug fixed ?

> > timeing was also exactly like 186 (or real mode 286), and the
> > instruction set is the same, I still think NEC just used the

> Did the V20 have the INSB/INSW/OUTSB/OUTSW instructions? (present in
> 80186/80188, but not 8086/8088

It had all the 186 extensions, especialy Enter, Leave, Pusha Popa,
Ins, Outs and Imul. I can't gurantee for Bound, 'cause I never used
that on a V20 (but I did on the 186).

Furtermore the V20 did include a bunch of new, nice instructions
(if in 86 mode). Just I know of no software to use them. For example,
A bunch of operations for 4 Bit values - aka BCD and Bitoperations.

> > 186 (188) core as template for the V20/V30 - Considering that
> > V40/50 where like the 186 with integrated perhipherals, you
> > may considere it as a two step knock off...
>
> BUT,...
> Other V20 instructions followed the 8088/8086 model.
> Such as what happens if you push SP. For example:

> MOV BX, SP
> PUSH SP
> MOV CX, SP
> POP AX
> ; will copy the value pushed by PUSH SP into AX.
> ; on the 8088/8086 and the V20, AX will equal CX
> ; on the 80186/80188, AX will equal BX
> (how to tell whether the chip is 8086/8088 v 80186/80188 or above)


Excuse me ? AFAIR that's the way to check if you had a 286 or
above. the 186 did behave exactly like the 86. the pushed SP
is the decremented value, while 286 and above push the original
value, and the test (at least as I did it) was:
PUSH SP
POP AX
CMP AX,SP
Equal -> 286 or above,
Not Equal -> 186 or below.

To test for 186/88 vs 86/88 (and V20/30) was using the shift
operation. starting with th 186, the shift value was anded
by 1Fh. So you would load any value except Zero into AX and
load CL with 32, execute a shift. If the resulting AX was
Zero, it was an 86/88 (of V20/30), if not it was a 186 or
above.


Gruss
H.

--
VCF Europa 4.0 am 03./04. Mai 2003 in Muenchen
http://www.vcfe.org/
Received on Thu Mar 13 2003 - 04:28:00 GMT

This archive was generated by hypermail 2.3.0 : Fri Oct 10 2014 - 23:36:12 BST