A VT100-like terminal for the Z80-MBC2

Similar projects worth following
uTerm (micro-Term) is a VT100-like terminal for the Z80-MBC2 ( It has a VGA out and PS/2 keyboard connector, a power supply for the Z80-MBC2 and a "transparent" serial-USB port. The video terminal is based on the ChibiTerm (


uTerm is an add-on card for the Z80-MBC2 single board computer to add a VT100-like terminal, a power supply and a "transparent" serial-USB port for a serial-USB adapter.

Here a previous version of uTerm vertically inserted into the Z80-MBC2 board:

and here assembled horizontally:

With the uTerm the Z80-MBC2 becomes an "autonomous" computer:

A couple of videos running "famous" CP/M games:


The uTerm has a "transparent" USB-serial adapter connector, so you can upload firmware to the Z80-MBC2 (using Arduino IDE) or load an Intel-Hex file (with iLoad) or use XMODEM to exchange files with a PC (running a terminal emulator that supports XMODEM file transfer) while the uTerm is in use.

Both the "mixed" power supply scenarios (USB-serial adapter not powered from USB but Z80-MBC2 powered and vice-versa) are managed by the HW, so you don't need to worry about it. In the following photo a serial-USB adapter is connected with a cable to the transparent SER_USB port:

This allows to use two keyboards and two monitors in the "same" time (one keyboard and monitor attached directly to the uTerm, and another keyboard and monitor of the terminal emulator on a PC connected with the serial-USB).

Or you can use the monitor attached to the uTerm and the keyboard of the terminal emulator on a PC. This is exactly the "configuration" I used in the following photo. As you can see, there isn't any keyboard attached to the uTerm (previous version attached to the Z80-MBC2 with a cable):


It is possible choose among 4 colors (green, white, cyan, amber) for the output VGA signal. To select the color use the JP2 and JP3 jumpers. In the following photos are shown the setting for JP2 and JP3 to select the color as white or green respectively:


This connector is intended for a better power supply connection for the Z80-MBC2. The use of this connector is recommended only if the uTerm and the Z80-MBC2 are connected with a cable. If they are directly connected (vertically or horizontally) the use of J3 is optional.


For a solid vertical mounting two 3D printed angled brackets have been created:

Please note that the left and the right angled bracket are different:

The .STL files are in the Files section.


For a solid horizontal mounting two 3D printed straight brackets have been created:

The .STL files are in the Files section.


uTerm is based on the ChibiTerm (, and the original software was modified to avoid any "interference" using the "transparent" serial-USB port.

The FW is available as source or a binary file ready to be flashed into the STM32. The source files are in the linked repository on Github. The binary file ready to upload is in the Files section.

uTerm serial is set to 115200 baud to meet the speed of the Z80-MBC2 with the current IOS revision. Only the US keyboard is supported. It has a 80 columns x 30 rows screen.


In the following we'll see how to flash the (executable .bin) binary file into the STM32 MCU using a ST-link V2 programmer.

The first thing you need is the STM32 ST-LINK Utility (STSW-LINK004) utility. You must download it from here (a registration may be required).

Install the utility and execute it. When you execute it without the ST-Link V2 programmer connected this is the output:

Now is time to use the ST-Link V2.

* * WARNING!! * *: Before to connect the ST-Link V2 to the uTerm, check carefully that the uTerm is not powered and not connected to anything else!

Always connect before the ST-Link V2 to the uTerm and then connect it to the USB!

Connect the ST-Link V2 to the uTerm using the...

Read more »

uTerm FW A071218_v2.bin

The firmware for the STM32 MCU in binary format ready to be flashed. This new version solves a bug in some situations using the right CTRL key (i.e. CTRL-L).

octet-stream - 12.68 kB - 12/01/2019 at 19:44


3D Printed Brackets

The .STL files to print the two angled or straight brackets with a 3D printer, for a vertical or horizontal assembling. Please note that the left and right bracket are different.

x-zip-compressed - 19.69 kB - 05/27/2019 at 14:57


Adobe Portable Document Format - 84.57 kB - 05/08/2019 at 08:12


spreadsheet - 15.46 kB - 05/08/2019 at 08:13



PCB Gerber files (100mm x 53mm).

x-zip-compressed - 184.01 kB - 05/08/2019 at 08:17


View all 6 files

  • FW Bug fix (uTerm FW A071218_v2.bin)

    Just4Fun12/01/2019 at 19:53 0 comments

    Thanks to gkaufman of the Retrobrew Computer Forum a bug has been discovered and solved.

    The bug affects the right CTRL key in some situations (i.e. CTRL-L).

    Please upgrade your uTerm with the latest .bin file to solve it (see the Files section).

View project log

Enjoy this project?



Massimo wrote 03/05/2024 at 17:39 point

I have a little problem. the board work exepct the tx and rx led. Do you have any idea of problem. the led are soldered correctly.

  Are you sure? yes | no

Just4Fun wrote 03/05/2024 at 18:46 point

If the board works as expected and only the RX and TX leds (L1 and L2) don't blink (both), check if they are soldered with their right polarities, or the R8/R9 resistors have the right values.

  Are you sure? yes | no

Massimo wrote 03/06/2024 at 06:21 point

thanks. fuck china component the resistor was wrong mark as 680ohm real 680Mohm. thanks again

  Are you sure? yes | no

Going2west wrote 12/16/2022 at 16:11 point

Is it possible to get a source code? I need support for 38400 bps... Or could you compile .bin with 38400 serial speed, please...

  Are you sure? yes | no

Just4Fun wrote 12/17/2022 at 11:00 point

Source code is on the linked github repo ( )...

  Are you sure? yes | no

TRStrider wrote 10/08/2022 at 21:11 point

Excellent addition to the Z80-MBC2! Got it built, up and running, so far so good! Just need to make a couple modifications to make it work in my final case design. Been a long time since I've had this much fun on a project!

  Are you sure? yes | no

CYUL wrote 04/28/2022 at 19:35 point

Made one. Works well. It was an easy build, although since STM32F030F4P6 are pretty much unobtainium these days, I resorted to de-solder one from another board, and *that* wasn't easy.

I  ended up shorting D1 and U2 (pin 1 to 3) to use USB power from a USB to DC barrel jack cable. This way I can use one of those many phone chargers I have lying around, and I don't need a radiator. I could also get power from my laptop or a power bank.

Good job! Thank you!

  Are you sure? yes | no

P. Lapensee wrote 03/15/2022 at 22:45 point

First of all, congratulations for your project. I am a big fan of your mbc2 z80 and now it is time for me to add the uterm. Unfortunately, I'm running into some small problems.
- First, in order to program the stm32 I had to hold down the reset button so that stm link utility could connect. This is not a big problem but I can't find any mention of this anywhere.
- Secondly, well nothing is displayed on my monitor. My soldering is good and the mbc2 z80 is well powered. I also see the transmission LEDs blinking so I guess the communication is good between the boards. Any tips on what I should check at first ?

  Are you sure? yes | no

ln4 wrote 08/12/2021 at 01:57 point

Hi, I'm working on a fork of the uTerm firmware that fixes some keyboard handling bugs, and also adds a new menu system.  The menu lets you change the baud rate, or serial port settings (eg. 8E1) on the fly.  The purpose is to make the uTerm work as a general purpose serial console.  I am also working on an update to improve the terminal emulation, which should be ready soon.  Check it out here:

  Are you sure? yes | no

Sven Simon wrote 07/11/2022 at 12:36 point

Thanks for your hard work. I was able to compile it under MacOS and switched in an 8x20 font giving me 80cols x 24rows . What was the reason to change the FONT_TABLE to by scanline arrangement, though? Took me a while to get the data in the right order.

  Are you sure? yes | no

ln4 wrote 07/11/2022 at 15:24 point

Hey Sven, I'm glad you were able to find a use for it!  I changed FONT_TABLE while experimenting with fonts and just left it that way.   But there isn't a reason it needs to be that way.

  Are you sure? yes | no

Guido wrote 04/20/2021 at 05:30 point

I created a small board with an ESP8266 to allow usage of the Z80-MBC2 via Telnet and WiFi. As long as Characters aren't transmitted too fast (no handshake on serial used), it is working quite awesome. Anybody interested in the code?

  Are you sure? yes | no

Guido wrote 04/20/2021 at 05:11 point

I put a new version of the firmware on github :

This version works also with keyboards (like Perixx), which don't react on key pressed until they received an initialization.

Further, I extended the Modifiers, to allow right ALT as ALTGR, which is used on many non-US keyboard layouts to reach some characters.

Finally, I changed the tables for GERMAN layout, but this can now easily adopted to other layouts as well.

  Are you sure? yes | no

Michael Hofmann wrote 03/28/2021 at 19:08 point

Hi. I am currently in the process of assembling the uTerm circuit board and have the problem that I cannot get the right VGA socket J8 anywhere. Which manufacturer and type is J8 and where can i buy it ?
Thanks for the help.
Michael Hofmann

  Are you sure? yes | no

Just4Fun wrote 03/29/2021 at 07:51 point

Hi, in the PCB Assembly Guide .zip there is the datasheet of the needed VGA connector. I normally buy them from aliexpress (i.e.:,searchweb201602_,searchweb201603_  )

  Are you sure? yes | no

antal.vincz wrote 03/15/2021 at 22:28 point

Hi. I uploaded the uTerm FW A071218_v2.bin my STM32F103C8 board with serial connection. The upload is finished without error. I read back the CPU memory and that is contain the good program, same as .bin. But nothing happened when I restart my STM board. Not have  syncron signals or video signal on PA5,6,7. This program not running on STM32F103 board?  Thanks for any help. Tony

  Are you sure? yes | no

P. Lapensee wrote 03/17/2022 at 20:29 point

Did you find the problem since ?

  Are you sure? yes | no

Guido wrote 03/07/2021 at 16:36 point

Just got the last part of my MBC2 running (including uterm and ucom). Nice Project.

Somebody interested in a german keyboard version of the stm fw?

  Are you sure? yes | no

Muecke wrote 07/11/2022 at 17:04 point

Ja großes Interesse. Wo bekommme ich die FW her ?

  Are you sure? yes | no

Arthur wrote 01/07/2021 at 12:02 point

Hi guys, my ST-Link V2 can't identify the stm32 mcu. I've already inspected the lanes from the mcu to J6. It seems to be ok. Is there an option to program it f.e. with an arduino? Thank you

  Are you sure? yes | no

pino.giaquinto wrote 04/19/2020 at 07:33 point

It could be very convenient to configure (as I did with my PS/2 interface for the NE Z80, see -2 and the keys Ins, Home, End, Del, PgUp, PgDn, Up, Down, Right and Left according to the WS standard that many CP/M software adopt ... what do you think?

  Are you sure? yes | no

freefuel wrote 06/24/2019 at 19:58 point

Hi when ordering boards from what PCB Specifications should be selected from there service to correctly duplicate your design?  

  Are you sure? yes | no

Ken Yap wrote 06/24/2019 at 22:51 point

Pcbway has an express order page which can parse the Gerber files and set many of the parameters, have you tried that?

  Are you sure? yes | no

freefuel wrote 06/24/2019 at 23:18 point

I have, but I am still unsure what the correct specifications are, and I think it may have gotten the drill file importation wrong. 

  Are you sure? yes | no

Ken Yap wrote 06/24/2019 at 23:30 point

Looks fine to me in Pcbway's Gerber viewer. Aren't you submitting the zip file provided? Also have you checked if the maker has shared their project on Pcbway already? Edit: it's here: so you can just order from that page and the maker gets 10%.

  Are you sure? yes | no

villaromba wrote 05/30/2019 at 14:35 point

Great project thank you. Successfully built it from the kit version and it's working great.

  Are you sure? yes | no

Just4Fun wrote 05/31/2019 at 06:54 point


  Are you sure? yes | no

Just4Fun wrote 05/16/2019 at 07:52 point

Hi, GSX was intended for a graphic add-on card. uTerm is a VT100 Terminal, so GSX is useless in this case...

  Are you sure? yes | no

gururise wrote 05/15/2019 at 17:29 point

Possible to add GSX extension?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates