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 CPU emulator is a port of Mike Chambers FAKE86.And the composite video is based on the work of Cnlohr and Hrvoje Cavrak
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:
Windows 3.0Here 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.
11/12/2018 update:
I'm in the process of porting my emulators to the ESP32.
It has better native support for memory and video.
Comments