Tiny386 On An Espressif ESP32-S3

Some people may remember the joys of trying to boot Linux on an 8-bit AVR microcontroller, which was an absolute exercise in patience. In comparison [He Chunhui]’s Tiny386 emulator running on an ESP32-S3 MCU is positively zippy when it boots and runs Windows 95. The provided video (also embedded below) makes clear that while you can comfortably waddle off to prepare and pour a fresh cup of tea, it’s actually borderline usable.

The source code can be obtained via GitHub, which contains not just the basic emulated 80386 CPU written in C99, but also peripherals borrowed from TinyEMU and QEMU, along with a SeaBIOS ROM. In addition to the Windows 95 demo it’s claimed that Tiny386 should be able to run most 16/32-bit software.

Right now the ESP32-S3 version targets the JC3248W535 board, which is a roughly $30 development board featuring a built-in display with touch screen and an ESP32-S3 module. Although it has a USB-C port, it appears that this one is just for programming and not for the USB peripheral of the ESP32-S3. With the USB OTG peripheral used, one could conceivably make a small 386 system based around an ESP32-S3 that features a USB hub to plug a keyboard, mouse, etc. into.

Considering that the Tiny386 emulator is a very simple and straightforward approach to emulating an early-90s PC, some optimization might enable a pretty zippy general purpose PC for early 90s software. Quite a boost from watching Linux struggle into a command line on an AVR, indeed.

3 thoughts on “Tiny386 On An Espressif ESP32-S3

    1. Propaply, if the timings were changed for the emulation.
      If the system timer is emulated at real-time (normal),
      then the loops would take to long and the Win95 watch-dog might halt the system because “Windows is not responding” anymore.
      The time scale must be changed in short.
      Within the emulation the passing of time must be different to the real world.

      Speaking of timings, this emulation feels as if the emulated 386 ran at 6 MHz.
      I have seen 386SX-16 system running Windows 95 more smooth, at least.
      With something like an slow, unaccelerated OAK OTI-67 SVGA graphics card.
      Windows 3.1 on a 286-10 with 4 MB of RAM ran way smoother, too.
      Even in Hercules graphics mode on a Hercules card (known to be slow).

      An 4,77 MHz V20 PC running Windows 3.0 in VGA was about same speed as in the video, I think.
      That’s when you see the individual GUI elements being drawn step by step.

  1. Well done! 😎👍

    Please just everyone keep in mind that this won’t rival a proper vintage PC
    such as an 386DX-40 PC with 16 MB RAM, 500 MB HDD, an Cyrix math co.,
    an accelerated ISA graphics card (ET4000/W32i, WD90C31 etc) and an AWE32 soundcard with EMU 8000 synth.

    It’s not meant as an criticism whatsoever. In fact, I am impressed! 😃
    I’m just writing this in defense of the real thing,
    before anyone starts to glorify smartphones and modern microcontrollers.
    The port is impressive and Win95 is usable for lightweight tasks for sure.
    But unless Hover runs smooth as silk in the emulation, it’s not on same level as a real 386/486 of the 90s.

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.