• Please review our updated Terms and Rules here

Mini-Review: Liligo ESP32 VGA+FAB-GL Library/PC Emulator Demo

Slob

Experienced Member
Joined
Oct 20, 2017
Messages
172
Location
Kentucky USA
I'm not sure how people on this board feel about emulators, but...

I have been spending the evening playing with the LILYGO TTGO VGA ESP32 Module V1.4 and FAB-GL, a very nice Arduino library and it's "demo" IBM-PC emulator. Let me say, that for $18 and some stuff virtually everyone reading this on this forum probably has lying around, it is a great deal of fun for very little money.

The Liligo TTGO (version 1.4) is a small board with an up-to-date ESP32 IoT chip with PSRAM mounted on a board with PS/2 connectors for a mouse, a keyboard, a VGA connector, sound via a small amplifier or external via a jack, an SDHC reader, and a USB connector for power and programming. Even if you happen to have an ESP32 lying around, it might not have PSRAM (pseudostatic RAM), and with the connectors, etc., you could not even get the parts for what they ask for it.

Of course, the ESP32 is a powerhouse with Bluetooth, wireless, and many other capabilities on its own. As shipped, the Liligo VGA board may or may not have software on it; there were zero instructions but it is well documented and supported on the Internet. Buying the 1.4 version is important, because earlier versions might not have the pseudo-static SPI RAM installed, and some programs (including important programs like the emulator) require this. There may be other limitations with earlier boards.

The board is of very good quality, and it is probably close to the smallest possible board that could be built with this technology and connectors - but the disadvantage is that there is simply no way to mount it (more on this later). It is powered and programmed via the USB cable, but powering the ESP32, a mouse, and other things might be pushing your luck on your computer's USB connector. You COULD program the unit and THEN hook up an external supply during operation assuming that you don't need the serial port. But even the bare ESP32 might be pushing hundreds of milliamps during programming.

As is, the board is very nice as a "learing Arduino" development board, but the real power comes from the Arduino FAB-GL library, which was built for this board design. i may be wrong here, but the author of FAB-GL designed and sold a board on Tindie, and Liligo and others copied the design (with improvements). I'm to sure how the author of FAB-GL feels about this but he isn't selling his boards anymore. Given the economics of Tindie, I don't think that he was making a fortune from this anyway.

the FAB-GL library is very polished library for many high-level graphics and peripherals. Some of the demos are basically finished applications. For example, one is terminal emulator that has received pretty good reviews. One that was added recently is an IBM-PC Emulator. I thought I would give the board a spin.

There are YouTube demos of the emulator in action, and also a "how to program" video that is fairly complete, although devoid of accompanying verbal instructions. Anyone here can certainly follow what is done, and figure out the rest themselves or by Googling. In my case, I was familiar with Arduino and ESP32 programming and I got things loaded, compiled, and running first crack, no problem. It is important that you install a reasonably sized (4GB is hugely more than enough) SDHC card formatted in DOS32 format before powering the board after programming. Security-conscious people will raise an eyebrow about how the network connection works and the downloading of the images, but the author is a known and respected quantity in ESP32 circles. Still, might be a good idea to use your "guest" wireless connection over a VPN.

The FAB-GL PC-XT demo is slightly rough around the edges but for a "demo", it's darned good and well thought out; it looks for your wireless connection and if "virgin" or not found will prompt you for one. At that point, it gets time from an NTP server and you ae presented with a menu of emulation disk images, both FDD and HDD. If the images don't exist on the flash, they will be downloaded to it Once downloaded, further selections of these images don't re-download them. All of these functions can be customized fairly easily even by a casual programmer by editing the source and recompiling.

FreeDOS, MS-DOS, CPM/86, and many early development tools and utilities are included in the images. So is Windows 3.0, which incredibly works, albeit slowly. This is not to say that the emulation is slow, but by Windows 3.0's introduction, most people were using 286's with extended/expanded memory and no one would attempt to use Windows 3.0 on a bare PC/XT clone with a CGA for anything besides "playing with it". There simply is not enough RAM (no extended/expanded RAM available). Because the video emulated is a CGA (on a VGA) or Hercules board, there are some compromises in video quality and resolution. This does not really detract much from the demo. It isn't what the dog said, but it's that the dog spoke at all, or words to that effect. Back in the day, I myself used Windows 1.0(1?) on a 640x200 CGA connected via NTSC to a B/W monitor, and I will tell you, it really wasn't worth using, it was just a curiosity (and an expensive one at that, the software was not cheap and my first Microsoft mouse cost over $100 1980's dollars)

The demo images all seem to work fine at first blush. I have not tried the "PC Speaker" based audio yet (and I understand that the emulation is good, but not perfect). I have not delved into it enough yet to see if the original XT BIOS and BASIC ROMS can be made to work with it (it is possible, I've had this mostly working myself with other emulation systems).

How good is the emulation? Flight Simulator works on it...that was the benchmark of PC compatibility back in the day. I found a potentially serious bug with (potentially) the library or code in that I had to connect the mouse AFTER bootup of the GUI in order for the DOS/Windows programs to see the mouse properly. This may have something to do with the age of my (non-optical) PS/2 mouse and the open source mouse driver used. No doubt, this will be ironed out.

FAB-GL requires a license for commercial use (in a for-sale product AFAIK, please read the ever-changing license) as I understand it but it is freely available on Github.

I plan on building this into a box and building a tiny PC emulator out of it complete with small LCD VGA monitor and shortened keyboard and mouse cables. As I mentioned, this presents some problems. There is no good way of mounting the Liligo board, and, taking the connectors out to a chassis will require some very creative and fiddly cabling. I've already cut the tail off of a one-axis dead PS/2 mouse in preparation for this (and chassis mount PS/2 connectors are hard to find). DOS emulators running on a PC have been done to death (and with better fidelity and speed), but a tiny, very cheap standalone computer running one this inexpensively with low time investment has not.

Conclusion:

I have done emulators for the 8080 and 8008 on ESP8266's, the predecessor of the ESP32 (including one that outputs NTSC video and reads a PS/2 keyboard and a paper tape reader), but my works have been dirty, nasty hacks compared to this. I'm considering porting the "guts" of my 8008 emulator to FAB-GL.

I know that we all love the look and feel of original hardware. But this setup is a very low-cost entry into retrocomputing for the casual person, those on a budget, or the "time/space limited" (like me) who can't justify buying and maintaining a large and potentially fragile vintage IBM-PC/XT just for an occasional thrill.

P.S. Don't be expecting to play your favorite 1990's "SVGA/SoundBlaster AWE64" DOS games on this. The hardware and speed capabilities are very modest. Again, for what it is, it's very nice.
 
Last edited:
Top