This is a information page about the RunCPM port for the TTGO VGA32.
The RunCPM port fo the TTGO VGA32 derived from 2 other projects:
1 – RunCPM itself (at GitHub or Discord-Channel) from Marcelo Dantas
2 – FabGL Library (at GitHub) from Fabrizio Di Vittorio
From the original RunCPM project there was also support for the ESP32, but Derek Cooper (at GitHub = coopzone-dc) created a fork of RunCPM which does use the ANSI Terminal sketch (using VGA16Controller) of FabGL to provide RunCPM along with the FabGL ANSI Terminal on the same PCB – here the TTGO VGA32 (and for his homemade ESP32 VGA device).
Derek Copper ported the version 4.1 to the TTGO VGA32
After a while, I was using prior to that RunCPM on the Arduino Due / ESP32 without VGA / Linux and Windows, I found the fork of Derek on the net and found it was a great port 😉
At this time the actual version of RunCPM was at version 5.1
So I took a deep look in the source of his fork and compared some of the Arduino .ino includes with the newer version and tried to port the functions of the v4.1 to the v5.1
To my surprise this worked very well 🙂
A short while later Marcelo Dantas did release v5.2 of RunCPM and I included the few improvments (for the ESP32 part) also in my fork of the fork from Derek Cooper.
I had many nice written conversations with all these 3 authors as they help me very politely.
With their help I was able to improve the v5.2 of RunCPM for the TTGO VGA32 in many ways – for new functional and design features – which I wanted.
Over the time the following new features had been added against the inital v4.1 fork of Derek Cooper:
- USB-serial-Control/-Console as a alternative to the VGA / PS/2-keyboard-port
- Mirror-function of the VGA-console at the USB-serial-port (switchable control PS/2-keyboard or USB-Terminal-session)
- Key-Click (could be disabled)
- Reboot without clearing Terminal-Config (with BREAK-Keyboard-Shortcut or REBOOT at the CP/M prompt)
- Reboot-Countdown (not interruptible) but also with sound
- Auto-Reboot when config-changes need a reboot to be activated
- Colored Boot-Screen
- Support for another display-color for the bold-screen-attribute
To compile this / my fork of RunCPM for the TTGO VGA32 v1.4 you need
- my RunCPM fork of a fork 🙂 ( from my Google-Drive )
the actual source (RunCPM v5.5 Rev 20210712.0) from HERE
- the Arduino IDE ( I use v1.8.13 )
– for RunCPM the SDFat Library >= v2.0.2 from Greiman via the Arduino IDE Library Manager
- ESP32 Board support via the Arduino IDE Board Manager
(by now – 11. April 2021 – install only up to ESP32 board-support v1.0.6)
- initial install of the FabGL Library v1.0.3 (24.05.2021) inside the Arduino IDE
- update the FabGL Library (only if < v1.0.3) inside the Arduino IDE Installation with the FabGL master.zip from GitHub
- maybe the Drive A: RunCPM-BootDisk or the complete CP/M-Software -Library from the RunCPM-GitHub-Page
Before the first compile read carefully the read.md from the original RunCPM-GitHub-page – especially the section about the
„SdFat library change“ and maybe the „Important Notes“ section at the coopzone-dc-Gihub-page about „hard-setting“ the fuse for 3.3V programming voltage via
./espefuse.py –port /dev/ttyUSB0 set_flash_voltage 3.3V
The master.zip-update for the FabGL Library has to be copied (content of FabGL-master-directory of the .ZIP) to a path like the following on my system:
Now you can open the .ino in the Arduino IDE and choose the right COM-Port of your Board and disable the PSRAM-Option like
When you are getting weird error messages while compile regarding the FabGL Library then please
CLEAR your Build-Cache.
For clearing the Cache you have to close the Arduino-IDE and delete the following files
in the directory (like)
This is because we update the FabGL Library without notice to the Arduino IDE and the Arduino IDE is exteme caching while compiling 😦 so not all parts of the source would be newly recompiled and we get some weird compile-result or weird compile-messages while the compile is in progress.
When the .ino does compile correctly then its now time to create the FAT32 MicroSD card with the content of the Bootdisk of A.ZIP
You need to create a directory named A at the root of the card for Drive A: and then inside this directory a new directory named 0 (Zero) for the directory of the (normal) User 0 – this look like E:\A\0\ if you Card-Reader is E:\
You could create up to Drive P: (and dont forget the User directory 0 (Zero) upto? 9 (Nine)
If you want to use another than the internal CCP with RunCPM then you have to copy the CCPs to the root of the MicroSD card (and you have to compile your RunCPM with a different CCP – but most users wont neeed another CCP)
If you compiled RunCPM, created the MicroSD card, conneted the card/Keyboard/VGA-Screen and Power to the TTGO VGA32 then its time to bootup 🙂
From here you can start to use CP/M straight away from Drive A: or start to configure the Terminal via the F12-Key:
My Reboot key is the BREAK-Key which could be reached via Ctrl+Pause (Pause is right beside the Scroll-Lock-Key).
The USB-serial-console is useable when the TTGO VGA32 is powered via the USB-port of a computer.
On Windows you have to use the Device-Manager to find the COM:-Port number.
On Linux the easiest way is to have a „dmesg -w“ running while inserting the TTGO VGA32.
So mostly on Linux the TTGO VGA32 is at /dev/ttyUSB0 or /dev/ttyUSB1
The serial speed of the USB-serial-port is set in the Arduino-.ino-File at 115.200 Baud
For using RunCPM for the TTGO VGA32 via USB-serial-port (with Windows) I sugest to use Tera Term as Terminal, because Tera Term has a nice Option to set a small Clipboard-Delay which is handy when inserting MBASIC-Programs via Clipboard directly in the MBASIC prompt:
As you could see in this preferences window the TTGO VGA32 does connect to the computer via a CP2102A TTL-serial chip.
So you need to have the driver for this chip installed on your Windows or Linux system (which is mostly already there or would be installed automatically by Windows)
The Mirror-Function does copy the output and input from the VGA-console to the USB-serial-port.
If you enable USBSerCtl in the Config-Menu the TTGO VGA32 could ony be controlled via a serial session
(only the BREAK-Reboot and F12 Config does work from PS/2-Keyboard – and only from there 🙂 )
Additionally links in the german VzEkC e.V. Forum about RunCPM on the TTG VGA32 and other hardware and software like RunCPM written by me and the forum-members there:
Very nice people to the subject/topic CP/M can also be found: