ESKAY   9/14/85

What a name for a file, you my think...


This is a brief rundown of the NEC uPD70116, also known as the V30.
To my knowledge, most of this also applies to the V20.


The V30 is a 16-bit microprocessor in a 40-pin package with the same
pinout as Intel's 8086.  I see it basically as an enhanced 8086 with
extended features, but it may also be considered a stripped-down
80186 with extended features.

The V30's mnemonics are significantly different from Intel's, this is
probably due to legal considerations.  We users shouldn't get hung up
on this and simply use Intel's mnemonics...


The V30 has three types of instructions:

- 8086-compatible instruction set
- enhanced instructions (80186 compatible)
- unique extended instructions.

Note: the data sheet says nothing about 80186 but I found the opcodes for
     "enhanced" instructions to be identical to those found in the 80186.

Since everyone knows the 8086 instructions, let's look at the "enhanced"
instructions, which are really the 80186 extensions in disguise:


NEC mnemonics   INTEL mnemonics Example         Function

PUSH imm        PUSH imm        PUSH 77H        Push an immediate value
PUSH R          PUSHA           PUSHA           Push 8 general-purpose regs
POP R           POPA            POPA            Pop 8 general-purpose regs
MUL imm         MUL imm         MUL AX,7        Multiply reg/mem by immediate
all shift/rotate instructions
with immediate arguments        SHR AX,3
CHKIND          BOUND           BOUND           Check array boundary
INM             INS             INS BYTE        Input string from port DX
                                               to [DI]
OUTM            OUTS            OUTS BYTE       Output string from [SI]
                                               to port DX
PREPARE         ENTER           ENTER 28,3      Allocate stack frame for
                                               procedure
DISPOSE         LEAVE           LEAVE           Deallocate stack frame when
                                               leaving procedure

The V30 has the following unique instructions:

INS             Insert bit field
EXT             Extract bit field
ADD4S           Add packed BCD strings
SUB4S           Subtract packed BCD strings
CMP4S           Compare packed BCD strings
ROL4            Rotates 1 BCD digit left through AL low nybble
ROR4            Rotates 1 BCD digit right through AL low nybble
TEST1           Test a specified bit and set/reset Z flag
NOT1            Invert a specified bit
CLR1            Clear a specified bit
SET1            Set a secified bit
REPC            Repeat until CY clear
REPNC           Repeat until CY set
FPO2            Additional floating point processor call


Additionally, the V30 has a mode bit (bit 15 of the flags register)
which determines whether the chip operates in "native" mode or in
"8080 emulation" mode. The following instructions control the mode bit:

BRKEM           break for emulation
RETEM           return from emulation
CALLN           call native routine
RETI            return from interrupt/native routine

In 8080 emulation mode, the registers are used as follows:
A=AL, B=CH, C=CL, D=DH, E=DL, H=BH, L=BL, SP=BP




Due to hardware differences between the Intel 8086 and the V30, the
V30 executes most instructions faster than the 8086. Thus, even if none of
the advanced features are used, replacing your existing 8086 with a V30 should
speed your system up.

As of last week, the V30 was not yet available to the general public.
The V20, however, (the 8088 replacement) is available and is being offered
for sale by some local distributors.

For more information, contact your local NEC support office or NEC parts
dealer (in Dallas, go by "Off the shelf components" at 11441 Stemmons Fwy
[247-0052] and ask for a spec sheet).

Both the V20 and V30 come in 5MHz and 8MHz clock speeds.  As soon as the
8MHz V30 becomes available, I'll run some benchmarks on it.