What about a V20-MBC...?

A project log for Z80-MBC2: 4ICs homemade Z80 computer

8MHz Z80, 128kB banked RAM, RTC, Disk on SD, Basic and Forth interpreters, CP/M 2.2 and 3, cross Assembler and C (SDCC) toolchains

Just4FunJust4Fun 02/20/2020 at 09:014 Comments

I'm starting to play with a V20 CPU. It is a special version of the Intel 8088 CPU (that one  used on the IBM PC), that can also run 8080 code.

I'm using a "full static" CMOS version (uPD70108HCZ aka V20HL):

Here my current "experimental setup":

I'm currently using a 128KByte SRAM and a uPD70108HCZ CPU. The "companion" I/O processor that emulates all the legacy I/O chips is a STM32F030R8 MCU (on the white board ARMando).

In the final version I'll probably use an Atmega32 MCU to have only THP parts.

Here the first "hello world" test program loaded directly from the microSD and executed by the V20 CPU @ 8MHz:

Stay tuned... :-)

* UPDATE 1 *

I've just "ported" the iLoad Intel-HEX loader to the V20 on breadboard, translating the source by hand from Z80 assembler to 8086 assembler.

So now I've an automated toolchain to assemble (with NASM), upload and execute on the target a 8086/8088 assembler source.

In the following video the usual "Hello World" demo with iLoad:

* UPDATE 2 *

Wanting to test the 8080 mode, I've ported the Altair Basic (8080 machine code) to the V20 on breadboard.

I've done a new version of iLoad, called iLoad-80, to load a Intel-Hex 8080 executable.

After the load phase iLoad-80 switches the V20 CPU into 8080 mode and jumps to the 8080 code.

Here a demo video:

* UPDATE 3 *

...and the IMSAI Basic:

and the Palo Alto Tiny Basic too:

* UPDATE 4 *

I've stopped to play with the V20 on breadboard to make the design of the V20-MBC.

Currently I've finished the draft of the schematic,

Here I've used an Atmega32 as MCU (so only THP parts).

Here the main specs:

- V20HL CPU (uPD70108HCZ)

- RAM can be configured with 128/512/1024KB;

- optional RTC and microSD modules (the same used in the Z80-MBC2);

- optional 16x GPIO port;

- I2C expansion port;

- serial port;

- ISP connector (for the Atmega32);

- clock can be configured at 4/8MHz.

It should work with a 80C88 too (of course loosing the 8080 mode).

* UPDATE 5 *

Here the PCB:

The layout allows to "plug in" a uTerm or a uCom board as in the Z80-MBC2 (vertically or horizontally) using the same 3D printed brackets.

Because it is a "two flavors" board (8088/8080), I've used a two flavors ice cream as logo... :)

I've just sent the gerber files to the service, so we'll see...


MS-BOSS wrote 03/21/2020 at 22:21 point

There are several things which might work a bit different in NEC V20/V30 processors when compared with a 8088 (in case you run into mysterious bugs when running old 8088 code):
AAD/AAM instructions in V20 processors ignore its second byte and always use base 10, thus you cannot use the amazingly fast undocumented property of AAM instruction which allows you to perform DIV AX, imm8 which performs a mixed 8/16 bit division with remainder.
POP CS (0x0F) means POP CS on 8088 while it means "new instruction prefix" on V20 and all newer x86 processors
Zero flag behaviour may differ when performing MUL instructions on V20

You can find more on that on (not my work)

  Are you sure? yes | no

Just4Fun wrote 03/22/2020 at 10:44 point

Thanks for the info/link. Very interesting!

  Are you sure? yes | no

Ken Yap wrote 03/21/2020 at 13:51 point

Can you please make this a project so that I can like and follow it?

  Are you sure? yes | no

Just4Fun wrote 03/21/2020 at 14:59 point

Yes of course... When I've the first board assembled I'll make a new "project page" and put the link here. I've just sent the gerbers to the service... fingers crossed...

  Are you sure? yes | no