Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

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

24

Submitter: Noxious

Reacties (24)

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.
en dat tikt best wel aan als je een beetje resolutie hebt.
s/hebt/wilt hebben
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]
De storage zit op een SD kaart. Dat gezegd hebbende, MS-DOS boot wel van 180K floppies hoor :-)
De storage zit op een SD kaart.
Lees: swap space voor de emulator. Verwacht niet dat een SD-kaart hier lang mee zal leven.
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 :)
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?" :+
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.
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]

Oh dit is echt supervet ! Heeebbooonn!!
... 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. :|


Om te kunnen reageren moet je ingelogd zijn