Can you run an 8086 PC-XT emulation with 640K RAM, 80×25 CGA composite video and a 1.44MB MS-DOS disk on an ESP12E without additional components?
Yes, you can and I did.
The video is output using DMA I2S and uses only about 10% of the CPU.The components makes a lowpass filter at 7MHz and a correct NTSC CVBS signal.
The video has a resolution of 640×200 and is a subset of the upcoming ESP8266 TVout library.
1MB of the flash is used as a swapfile and creates virtual RAM space to the emulation through a MMU caching system.
The MS-DOS 3.3 1.44 MB bootdisk image is uploaded into the ESP8266 flash and accessed from the emulator as drive A:
It has been tested with MS-DOS 6.22 and works as well.
I used MS-DOS for reference. To not break any copyright you can use a Free-DOS image available here: http://www.fdos.org/bootdisks/
A HDD can be supported through SPI and the SD library.Networking is supported through the ESP8266 Wi-Fi.
I’m using a 3.5″ TFT CBVS display so the text is quite small.A larger CBVS monitor will show a crisper picture.
Once keyboard and mouse code is added, here are 2 of the GUI’s it will run:
Here is the source code for the ESP8266 PC-XT emulator.
These files are required for compiling it on the Arduino-IDE:
You also need to upload the MS-DOS disk image to the ESP8266 using the ESP Flash Download Tool.
The code outputs video on the I2S data pin (UART-RX) so this needs to be connected to a TV or NTSC composite monitor.
You need to build this circuit to make the output into 1-Vpp CBVS.
Also the filter circuit cannot be connected to the UART-RX pin while uploading.It will make the upload fail.
This just boots the PC up. No keyboard code yet.
Happy hacking your new tiny PC.
I'm in the process of porting my emulators to the ESP32.
It has better native support for memory and video.