Ontwikkelaar maakt compacte x86-emulator die Windows 95 op ESP32 kan draaien

Een ontwikkelaar heeft een lichte x86-emulator ontworpen, die onder andere Windows 95 op een klein ESP32-bordje kan draaien. Volgens de maker is de mini-emulator in staat om de meeste 16bit- en 32bit-software te draaien.

De ontwikkelaar, hchunhui genaamd, heeft na meer dan een jaar werk de eerste build van Tiny386 op GitHub geplaatst. Zoals de naam al doet vermoeden is dit in de basis een emulator van de veertig jaar oude i386-processor, die van de grond af aan is ontworpen. Om er een volledige x86-emulator van te maken heeft de maker onderdelen van onder andere RISC-V-emulator TinyEMU en cpu-emulator QEMU gebruikt.

Deze x86-emulator onderscheidt zich van de rest met zijn compactheid. Tiny386 kan daardoor op allerlei hardware met lage specs draaien, waaronder microcontrollerbordjes. De hacker noemt daarbij specifiek de S3-variant van de ESP32. Deze module heeft 512kB sram, 384kB rom en een 240MHz-dualcoreprocessor. Het is hiermee dus mogelijk om onder andere Windows 95 en Windows NT op zo'n controllerbord te installeren. Hoewel enkele features ontbreken, kan de 'meeste' 16bit- en 32bit-software gedraaid worden in de emulator, meldt hchunhui. Het is volgens de ontwikkelaar zelfs mogelijk om Linux-kernels te draaien door de toevoeging van i486- en i586-instructies.

Door Kevin Krikhaar

Redacteur

10-11-2025 • 16:33

41

Submitter: Noxious

Reacties (41)

Sorteer op:

Weergave:

Misschien begrijp is het niet goed maar 512kb sram lijkt me niet voldoende om Windows op te draaien? Onder DOS zou je daar al tegen problemen aanlopen.
Menig ESP32-S3 bordje heeft 16MB flash en 8 MB PSRAM.

Die 512k is zeg maar intern geheugen op de ESP zelf.

Bij menig bordje is de PSRAM 'extern', maar er zijn tegenwoordig zelfs al ESP32-varianten met PSRAM on-board.

Dit is best wel rap RAM, maar nog steeds wel een stukje langzamer dan 'intern' geheugen. En er zitten nog andere nadelen aan, zoals dat je bepaalde programma-code niet kunt uitvoeren vanaf PSRAM. Met name de code die SPI zaken afhandelt. Maar ook DMA wat je nodig hebt voor bepaalde bussen zoals RMT, I2S etc.

Voor een aantal displays moet je echt wel PSRAM gebruiken, omdat je de hele frame buffer in RAM moet houden en dat tikt best wel aan als je een beetje resolutie hebt.
Nou menig S3 bordje wat met een display geleverd wordt, is vaak al 480x480 of groter.

Maar zelfs al zou je het nogal bescheiden doen, met 320x200 @ 16 bit (veel van die displays gebruiken 16-bit per pixel), dan zit je al op 64k pixels, oftewel 128k voor een enkel frame buffer.

En dan wil je eigenlijk wel double-buffering gebruiken, zodat je in de ene buffer je updates kunt doen en de andere door het display laten uitlezen. Dan blijft er erg weinig over voor je programma code.

Ook omdat die 512k niet volledig voor je beschikbaar is, omdat een deel ook toegewezen is aan de 2e core en een deel van je programma ook in RAM moet staan. (+ wat caching) In de praktijk is er op de ESP32-S3 zo'n 360k beschikbaar en nog wat losse flarden.

Om dergelijke displays vloeiend aan te sturen, moet je best wel diep gaan in de interne architecture van de ESP32-S3, omdat er heel veel dingen best wel veel invloed op elkaar kunnen hebben. Maar dat maakt het ook zo leuk :)

[url=https://espeasy.readthedocs.io/en/latest/ESPEasy/ESPchips.html#overview-of-supported-chips]Hier een overzichtje van (bijna) alle Espressif SoC's[/url]
Ik gebruik een ESP met een e-ink scherm, en die heeft een lagere resolutie dan wat je noemt maar werkt prima (al draait deze geen Linux). Windows 95 draait prima op 640x480.

Zoals ik elders al schreef is 512 kB echt weinig voor RAM. Nou wilde je vroeger niet swappen met HDD; hoe dat nu zit met microSD lijkt me dat met al die TLC en QLC rommel ook niet wenselijk.
e-ink gebruikt vaak maar 1 bit per pixel en is super traag om te updaten.
Dus dat gebruikt maar 1/16e van de hoeveelheid geheugen en je hoeft je ook niet zo druk te maken om de snelheid omdat die displays sowieso al super traag zijn.

De wat nieuwere e-ink schermpjes ondersteunen zelfs 'partial updates', zodat je niet eens het hele frame in RAM hoeft te hebben.

640x480 (best duur schermpje, e-ink met hogere resolutie is vaak erg prijzig) is minder dan 40k RAM voor nodig als je het hele scherm in RAM zou willen houden.

En zoals ik al schreef, hebben moderne ESP's een aardige sloot PSRAM aan boord. Ik heb zelfs een ESP32-P4 hier liggen met 32 MByte aan PSRAM. Mijn eerste PC met zoveel RAM was toch echt pas rond '96 volgens mij en dat kostte een vermogen (althans voor een 1e jaars student)
En zoals ik al schreef, hebben moderne ESP's een aardige sloot PSRAM aan boord. Ik heb zelfs een ESP32-P4 hier liggen met 32 MByte aan PSRAM. Mijn eerste PC met zoveel RAM was toch echt pas rond '96 volgens mij en dat kostte een vermogen (althans voor een 1e jaars student)
Ja en nu koop je ze voor een euro en een half :') (nouja de ESP32-C3 bordjes dan die ik gebruik in mijn maaksels, ik had er laatst 10 van op aliexpress voor 15 euro). Die P4 zal wel wat meer kosten.

[Reactie gewijzigd door Llopigat op 10 november 2025 21:13]

De storage zit op een SD kaart. Dat gezegd hebbende, MS-DOS boot wel van 180K floppies hoor :-)
M.a.w. alle RAM wordt op een SD kaart geemuleerd naast dat diezelfde SD kaart ook dient als virtuele hard disk voor het OS om van op te starten? Met een beetje mazzel kun je na een uur inloggen :+
Komt wel overeen met het gemiddelde windows 95 systeem van vroeger! Een soort van gratis hdd simulatie erbij dus :)
De storage zit op een SD kaart.
Lees: swap space voor de emulator. Verwacht niet dat een SD-kaart hier lang mee zal leven.
Het is volgens de ontwikkelaar zelfs mogelijk om Linux-kernels te draaien door de toevoeging van i486- en i586-instructies.
Daar zijn niet zoveel use cases voor. Linux kan ook native draaien, wat een stuk efficiënter zal zijn.
[...]


Daar zijn niet zoveel use cases voor.
Sinds wanneer houd dat een tweaker tegen?

[Reactie gewijzigd door Schway op 10 november 2025 17:42]

Sinds wanneer houd dat een tweaker tegen?
Het hoeft een tweaker niet tegen te houden. Er is alleen weinig eer te behalen in het draaien van (andere) x86 software in een x86 emulator.

Windows is een goede proof of concept omdat er geen andere architecturen zijn waar het (lichtgewicht) goed op kan draaien met goede compatibiliteit.
Met een gui? Lijkt mij sterk.
Zeer zeker wel. FVWM2 draaide al in 1993 op oude hardware van destijds (80486), met de voorloper van X.org, XFree86.

Op een 80486 laptop draaide ik ooit Windows 9x met LiteStep. Of het 95 of 98 was weet ik niet meer. Wel had ik MSIE eruit gesloopt (of niet eens geïnstalleerd) en gebruikte ik een Milestone van voorloper van Firefox. Internet ging via een native Ethernet poort. Ook had ik OpenSSH Server er werkend op.

Hoeveel RAM deze laptop had weet ik niet meer. 512 kB is echt veel te weinig.

Toch is Windows 9x hierop draaien wel degelijk interessant. Er zijn nog oude legacy machines die dat moeten draaien. Zelfde m.b.t. Windows XP of zelfs OpenVMS binnen bepaalde overheidsinstanties.
Dan de vraag, does it run Doom?
Het kan al in een PDF op een gewone computer, dus ik ben eerder benieuwd: "Does it run Doom inside a PDF on this light x86-emulator?" :+
ja misschien niet de x86-emulator, maar t kan wel :Y)

*Edit*

Blijkbaar reageer ik te weinig op de frontpage 8)7

[Reactie gewijzigd door Vuikie op 10 november 2025 19:26]

Maar de belangrijkste vraag is: kun je er de video clip van Buddy Holly van Weezer mee kijken?
Waarschijnlijk niet via de emulator+win95. Maar de ESP32 zelf (zonder emulator) kan die video best afspelen: https://github.com/tuupola/esp_video

Hover op windows 95 spelen zal mogelijk een vergelijkbaar slecht resultaat geven.
En als ik zo kijk is de effectieve snelheid ongeveer een 486-20 mhz. Of een snelle 386 DX-40. Ik heb nog nachtmerries over de traagheid en het ontbreken van snappy reageren op dit soort machines.
Dat was alleen als de 386 genoeg L2 cache had toegevoegd.

In praktijk was de 486 altijd sneller, de SX waar je op doelt had niet de L2 cache standaard, voeg je dat toe dan won de 486 makkelijk.

En een 386 met 8mb ram was zeldzaam, daar moest je veel knaken neerleggen en behoorde absoluut tot high end.

Ook vroeger was Mhz niet het enige wat telde.

[Reactie gewijzigd door mr_evil08 op 10 november 2025 19:39]

hahaha hiero. Ik had men ouders kapot gezaagd om meer RAM nadat ik DOOM had gekregen van een vriend (4 diskettes denk ik?), maar die draaide niet op 2MB RAM, zelfs na alle base memory uit te persen in de autoexec.bat en config.sys (had 4 nodig).

Na veel zagen mission accomplished en kon ik DOOM draaien op onze 386SX25 met 8MB RAM!! Niet volledig fullscreen want dat was redelijk schokkerig.
Doom kon ook op 4 mb draaien.
Windows 98/98 starte anders sneller op dan windows 11 terwijl de snelheid een factor 100 omhoog is gegaan (en op sommige vlakken zelfs veel meer)
... een emulator van de veertig jaar oude i386-processor ...
In mijn beleving was de i386 toch wel wat recenter dan dat, maar niet dus, ik word echt stokoud. :|
Windows 95 was al 486 met 4 tot 8mb ram.

386 was eigenlijk niet geschikt voor 95, je zag ze ook altijd met max Windows 3.x
Hmm, heb nog een USB floppy drive en wat custom ESP32-S3 boards liggen. Icm een goeie kwaliteit SD kaartje zou dit wel een grappig project zijn. OSR1 van floppy af... het kan nooit erger zijn dan NT4 op een 386 met PCMCIA cd speler en 30MB hdd 🤣
Zegt mij allemaal niks dit. Wat achtergrond informatie over wat dit allemaal is zou fijn zijn.
Mij ook niet. Maar het is dan ook een .Geek artikel.

[Reactie gewijzigd door Mog op 10 november 2025 17:50]

dat staat toch echt wel in de titel :)
ESP chips zijn best populaire microcontrollers.

Lekker compact, vrijwel allemaal met WiFi en bieden veel mogelijkheden om "mee te spelen". En niet te vergeten erg goedkoop.

Bijvoorbeeld sensoren uitlezen, dingen aansturen zoals motortjes, led'jes, displays, etc.

Daarmee kun je bijvoorbeeld dingen in je huis automatiseren, een robotje bouwen, etc.

Het verrassende is nu dus dat iemand een PC kan emuleren op zo'n extreem compact en simpel processortje. Welliswaar een PC uit begin jaren '90, maar toch. Best indrukwekkend op een processortje wat nog een stuk kleiner is dan een micro-SD kaartje of een nano-SIM. In de meer voor hobbyisten bruikbare formaten zijn de modules veelal zo tussen formaat postzegel tot een halve pinpas (in de lengte doorgesneden)

Wat ik er leuk aan vind is dat het "back to basic" is (niet de programmeertaal gelukkig) zodat het ook voor mensen zonder enige ervaring een lage drempel heeft om ermee te beginnen. Zo heb ik een hele klas met kinderen van 8 - 12 jaar mee laten knutselen en ze werden super enthousiast om andere leuke dingen te maken. (en de meest interessante ideeen kwamen van een 8-jarige)
En wat is hier praktisch het nut van?
Niets, dat is zelfs heel pijnlijk.

Maar serieus, wat maakt het uit, het is een tof projectje om een simpele emulator voor een oude processor te schrijven, en Windows is een hele toffe demo

[Reactie gewijzigd door blabla1234 op 10 november 2025 18:35]

Iemand heeft vandaag vast iets super tofs bereikt. Maar ondertussen lezen mensen een bericht over Win95 op een ESP32 en hebben wij er een discussie over.

Sommige dingen hebben geen praktisch nut behalve dat iemand iets heeft gedaan dat niemand dacht dat mogelijk zou zijn. Ook al was het onmogelijke door het feit dat het geen nut had.


Ik heb zelf ooit Crysis gedraaid op een Eee PC 4G 701: uitvoering: Asus Eee PC 4G (701)

Niet omdat dit een goede gaming laptop zou zijn maar omdat het onmogelijk zou moeten zijn het spel hierop te draaien. En daarmee een Ja antwoord te kunnen geven op de vraag: "Can it run Crysis?".
In 1969 bedacht met het concept van binary space partitioning. En in de jaren 90 paste Carmack het toe om Doom mogelijk te maken op hardware wat het eigenlijk niet zou moeten kunnen draaien.

Stel nou dat men in 1969 zich had laten tegenhouden met totaal irrelevante concepten zoals "praktisch nut".
Echt hè? Genoeg die toentertijd overtuigd waren dat thuiscomputers geen praktisch nut hadden. Dan hadden we hier (op Tweakers) niet eens gezeten met zijn allen…
Waarom beklimmen mensen de Mount Everest? - omdat hij er is.

Waarom maken mensen dit soort projecten? - omdat het kán
De mens wil teveel.
Oh dit is echt supervet ! Heeebbooonn!!

Om te kunnen reageren moet je ingelogd zijn