Summary

We’re at a fortunate moment: microcontrollers available at modest prices are edging into the capability level previously reserved for full-fat systems and can, through emulation, run software beyond classic 8-bit home computers, consoles, or old arcade games. A project we’ve been watching for a while is tiny386, an emulator for ESP32 boards that provides a 386 PC with just enough 486 and 586 instructions enabled to run a modern Linux kernel. Now we’re pleased to note that this platform is making it to the RP2350, with ports for both the FRANK emulation platform and the Waveshare Pi Zero boards. You can now have a 32-bit PC with all the peripherals, including VGA and DVI/HDMI, for the cost of an inexpensive development board. Having seen tiny386 run on its minimum-spec ESP32 platform, we’ll concede that while it’s usable, it’s not the fastest experience, but the RP2350 port promises better performance. It’s not for a modern full-fat Linux distro, but should work well for running older operating systems such as DOS, or Windows 3.1 and 95, or even a lean Linux setup. This has fascinating potential: while these systems are old, they still have an enormous software library. The idea of useful general-purpose computing, 1990s style, in the palm of the hand, is interesting. If you’re curious, you can find tiny386 here and the FRANK boards here. Maybe they’re a better route to ’90s fun and games than a 386 laptop. About 25 years ago I ran emulators in my palm, on a Pocket PC (the platform supported SH3, MIPS, StrongARM CPUs). PocketDOS was the one that emulated an PC/XT, it was possible to run Norton Commander or Windows 3.0 in Real-Mode. But there were also console emulators for Sega Master System/Genesis, GBC, NES/SNES, TG16 and various home computers (C64, ZX Spectrum). The interpreters Sarien (Sierra AGI games) and ScummVM (LucasArts games) had been ported to WinCE/PPC200x too. Besides Pocket PC (PPC), there also was Handheld PC (HPC) form factor. It was like a little notebook/electric organizer and had a keyboard. The Game API (GAPI, some sort of DirectX equivalent) was available to both, but the Pocket PC 2000/2002 or Windows Mobile 2003+ wasn’t. Pocket PC 200x was a software framework that extended Windows CE. Normal Windows CE 2.x or 3.x applications ran on both form factors, I think. If the screen resolutions allowed it. There also was than one GameBoy emulator (Phoinix?) that ran on Dragonball based PalmOS PDAs (m68k). It was slow on older palms, but good enough to play strategy/rpg games. Awesome! All this project needs now is to be placed on a board with an LPC chip for use in a passive ISA backplane. Cool idea! I’d also add support for a custom version of the Lo-tech/Monotech EMS card. Not an 1:1 copy but something that’s compatible enough with the Lo-tech EMS memory driver. Dedicated EMS that works in Real Mode is useful to many applications/games (EMS uses quick bank-switching, rather than copy operations). Emulating it via V86 or via the emulator software causes a performance penalty 2 or 4 MB of EMS is a good start, I think. Windows 3.0 in Real-Mode needs Large-Frame EMS to be useful, though, so it’s perhaps more sensible to just run it in Standard-Mode or 386 Enhanced Mode instead. PS: Having free UMBs in 640 to 1024 KB range would be nice, too. So USE!UMBs can be used in MS-DOS 5/6, or in other DOSes that support UMBs (QRAM can help with older ones). But that is a matter of the emulator and doesn’t need extra special hardware, likely. In the early ’90s I was running DOS in a x86 emulator running on an Acorn Archimedes A310. For reference the A310 has a 32-bit ARMv2 CPU running at 8MHz with 1MB of RAM. The result was quite usable. So no surprise that a modern 32-bit ARMv8 running at 150MHz with 8MBs of RAM can do x86 emulation fairly well. Kind of funny the a in-house developed CPU from a mostly unknown British home computer company is powering so much of the world.

By Jenny List

Original Article