PC-XT Emulator On ESP8266

x86 emulation running DOS on ESP8266

Do you remember the simpler times when you had a DOS command line, a handful of commands, and you talked to the hardware through a few BIOS and DOS interrupts? Okay, maybe it was a little limited, but nostalgia doesn’t care. Now [mcuhacker] is working on bringing some of those memories back by getting a PC-XT emulator running on an ESP8266.

For the x86 CPU emulator, he ported Fake86 which is written in C, and created an Arduino IDE environment for it. The MS-DOS 3.3 bootdisk image is stored in flash and is accessed as the A: drive. There’s no keyboard yet but he has 640×200 CGA working with 80×25 characters on a 3.5″ TFT display with the help of a low pass filter circuit. In the video below he shows it booting to the point where it asks for the date.

Emulating other hardware on the ESP8266 seems to be a popular thing to do. Maybe you were an Apple user and would prefer 6502 emulation on the ESP8266 running as an Apple 1. We even have a Z80 emulation running CP/M in case that was more your preference.

58 thoughts on “PC-XT Emulator On ESP8266

        1. that’s what you’d think. If I can learn how to do ANY real programming beyond the start examples for python, and get a keyboard and screen for my Honeywell pc clone, ill start on that PoC

    1. At a guess, maybe a factor of fifty times slower overall in terms of boot sequence time? There’s a mention (in his blog) that he’s doing the following:

      “At the moment the code has no keyboard so to be able to get past BIOS boot the irq1 line is flooded with keyboard presses. This slows the emulation down.”

      1. Hmmm…. I got used to full speed XT emulation on a 28Mhz ‘020 back in the day, so regard anything less on more recent hardware as frustrating. Maybe I should port UAE to it so I can use PCTask LOL

  1. Shame that the fake86 project seems a bit dead – trying to install the amd64 deb package in Ubuntu 16.04 starts off a dependency war, and the forum that is linked on the project website no longer exists.

    Would it be absurd to run the win32 version via wine?

    1. Fake86 is my project. It’s on more of a hiatus than totally dead. The code is really poorly written. I started writing it when I was very new to C. I’m planning on just taking the CPU core code and rewriting everything around it, with more of a focus on coherent code, emulator accuracy and being more modular.

      If you want to install it, I’d recommend doing a git clone of the latest code and compiling: https://sourceforge.net/p/fake86/code/ci/master/tree/

      Even that is old, and the makefile no longer works as is, at least in Debian 8 or 9. If it doesn’t work for you, change this line:


      To this:

      LIBS=-lpthread -lX11

      1. Hi! Thanks for your input.

        I totally understand how code can seemingly stagnate over time – I’m quite literally adding new features to an existing codebase that is around 20 years old right now with very little documentation and most of the people who supported it gone. I certainly was not having a go at you or the work you’ve put into Fake86. In fact, the opposite is true – I love me some x86 (just ask the multitude of 80s/90s x86 hardware I have at home), and any excuse to check out something x86 related gets my heart pumping.

        And with that, I shall check out the git and compile :)

    1. DOS still runs on my old computers sometimes. It is a go-to place to test stepper motors connected to the parallel port. And it still runs software for some old control systems I made.

      I’d rather see Windows die :)

        1. Windows 3.0 + CGA should run fine on an 8088 based XT or decent clone. IIRC there are some 186 opcodes in the color EGA/VGA drivers, so you might need an NEC V20 CPU or equivalent. Even then it would still run OK in real-mode.

          Only when you install the subsequent multimedia extensions to Win 3.0 will you then run into the ‘286 CPU minimum’ barrier.

          1. Win3.0 will run on less than a 286. I ran it on a HP 200lx palmtop which has a 186 back in the day. It runs but slow as shit. I seem to remember running it on a Compaq portable, but it might have been a version of Windows older than 3.0

  2. This is devilishly clever, especially the video and use of flash as RAM with the paging system. I wonder how it would do for performance ported to the ESP32-WROVER module, with its SPI RAM…

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.