kim@mips.UUCP (Kim DeVaughn) (09/19/85)
[ ... go ahead, eat my bits ... ]
Well, I found one (an 8 MHz V30, that is) at one of the local NEC
distributors ... the 1st one I called, and I got the last one they
had in stock, no less (maybe I *am* living "right," afterall :-) )!
The salesman I spoke with said they'd be getting more in "soon," as
I mentioned I wanted to pick up a spare. The distributor I used is:
Western Microtechnology ph: 408-725-1660
10040 Bubb Rd.
Cupertino, CA 95014
The price (quantity of one) was $20.10 plus tax. This was for the
8 MHz, ceramic part, and has to be just about the best deal I've seen
in many moons! By the way, the actual NEC part numbers for the V30
series of chips are:
uPD70116D-8 8 MHz, ceramic
uPD70116D-5 5 MHz, ceramic
uPD70116C-8 8 MHz, plastic
uPD70116C-5 5 MHz, plastic
(Replace the "16" with "08" and you get the V20 (8088 compatible) p/n's.)
There were alot of distributors listed on the sheet NEC sent with the V30
spec, so you shouldn't have too much trouble finding one. I did recognize
one outfit on the list from the back pages of Radio-Electronics or Popular
Electronics in days-gone-by. They were (are?) used to dealing with small
volume, mail-orders; you might try them if your local distributor doesn't
want to sell you just one chip. They are:
Mouser Electronics ph: 619-449-2300
11433 Woodside Av.
Santee, CA 92071
NEC's address (so you can get a spec) is:
NEC Electronics, Inc. ph: 800-632-3532 in California
401 Ellis St. 800-632-3531 elsewhere
PO Box 7241
Mt. View, CA 94039
Note: I am not associated with any of the above companies, except as a
satisfied customer.
Ok, now for some quick-and-dirty before/after benchmark numbers:
System: Fujitsu u-16s w/8087 (8 MHz)
SCP: MS-DOS 2.11
Compiler: TurboPascal 3.01A (w/8087 support)
Benchmark: program bench(output);
var
i,j,k,l: integer;
r: real;
s: string[100];
t,u: string[50];
begin
i := 0;
r := 0.0;
s := '';
t := 'ABCDEFGHIJKLMNOPQRSTUVWXYABCDEFGHIJKLMNOPQRSTUVWXY';
u := 'abcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxy';
repeat until keypressed; {start timing when a key is hit}
for j := 1 to 1000 do
for k := 1 to 1000 do {1 to 50 for string test}
for l := 1 to 10 do
{one of: }
i := i + 1; {integer}
{r := r + 1.0;} {real}
{s := t + u; } {string assign/concatinate}
writeln(^G,i{or r, or s}); {stop timing when the bell rings}
end.
Results: | 8086 | V30 | %-improvement
---------------------------------------------------------
integer | 150.75 | 144.30 | 4.3%
real | 1489.24 | 1357.94 | 8.8%
string | 497.50 | 296.25 | 40.5% <---- !!
| | |
Mgen + | 1012.14 | 935.84 | 7.5%
Msho ++ | 23.09 | 18.35 | 20.5%
Times are in seconds.
+ Mgen is a Mandelbrot set generating program (compute intensive).
++ Msho is a display routine for Mgen's data (data-move intensive).
The machine sucessfully ran all the diagnostics, floppy and hard-disk tests,
rupt driven communication/modem program, etc. In short, the s/w couldn't
tell the difference (obviously, there were no s/w timing loops in anything
I ran ... at least none that were critical).
Subjectively, MASM seems to run about 20%-30% faster, and scrolling thru text
in various editors is quite noticeably faster. I am a little surprised by
the integer vs. real results (I expected to see the least improvement in code
that uses the 8087); I haven't looked at the code Turbo generates tho. In
any case, a performance improvement of 15%-20% for average, interactive work
is well worth $21.51, I'd say (and the chip was only slightly warm after a
couple of hours of experimentation)!
Here's a look at the "extra" instructions in the V30 and V20 (note that these
are NEC's mnemonics):
80186 compatible: PUSH imm . pushes immediate data onto the stack
PUSH R . pushes 8 general registers onto stack
POP R . pops 8 general registers from stack
MUL imm . executes 16-bit multiply of register
or memory contents by immediate data
SHL imm8 . shifts/rotates register or memory by
SHR imm8 immediate value
SHRA imm8
ROL imm8
ROR imm8
ROLC imm8
RORC imm8
CHKIND . checks array index against
designated boundaries
INM . moves a string from I/O port to mem
OUTM . moves a string from mem to I/O port
PREPARE . allocates an area for a stack frame
and copies previous frame pointers
DISPOSE . frees the current stack frame on a
procedure exit
NEC unique: INS . insert bit-field
EXT . extract bit-field
ADD4S . adds packed decimal strings
SUB4S . subtract one packed decimal string
from another
CMP4S . compares two packed decimal strings
ROL4 . rotates one BCD digit left thru AL
lower 4 bits
ROR4 . rotates one BCD digit right thru AL
lower 4 bits
TEST1 . tests a sspecified bit; sets/resets
zero-flag
NOT1 . inverts a specified bit
CLR1 . clears a specified bit
SET1 . sets a specified bit
REPC . repeats next (string) instruction
until carry-flag is cleared
REPNC . repeats next (string) instruction
until carry-flag is set
FP02 . additional float-pt processor call
8080 emulation mode: BRKEM . start 8080 emulation mode
RETEM . return from emulation mode
CALLN . call native-mode (V30) subroutine
from within 8080 emulation mode
(use normal RETI to return)
Looks like NEC just may have developed the "Z-80" of the 8086-style
16-bitters ...
Enjoy!
/kim
"The difference between science and the fuzzy subjects is that science
requires reasoning, while those other subjects mearly require scholarship."
-- Lazarus Long
[generic disclaimer]
--
UUCP: {decvax,ucbvax,ihnp4}!decwrl!mips!kim
DDD: 415-960-1200
USPS: MIPS Computer Systems Inc, 1330 Charleston Rd, Mt View, CA 94043