We’re all used to emulating older computers here, and we’ve seen plenty of projects that take a cheap microcontroller and use it to emulate a classic home computer or gaming platform. They’re fun, but serve mostly as a way to relive old toys.
As microcontrollers become faster though it’s inevitable that the machines they can emulate become more powerful too, so we’re moving into the realm of emulating productivity machines from years past. An example is [Ilya Maslennikov]’s pico-286, which as its name suggests, is a 286 PC emulator for the Raspberry Pi Pico.
It has an impressive set of sound and video card emulations, can drive either a VGA or an HDMI monitor, and uses a PS/2 keyboard and mouse. If DOS games are your thing it should provide what you want, but it’s caught our eye because there was a time when a 286 DOS PC was a productivity machine. There’s a huge library of still-useful software for DOS, and thus the prospect of a handheld DOS PC still has some appeal. We’d love to see someone put this in a badge.
MS-DOS may no longer be for sale, but there are several ways to land an open-source DOS in 2025. FreeDOS is something of a powerhouse.
One of the things abot freedos is its a little hungry for ram… while it will boot and run on 640k there’s not much left. That is something to remember on something like the xt class zenith laptop I tried it on a number of years ago or some OG pico
Realistically speaking, an XT class system is barely usable for anything without an UMB and EMS memory card.
By mid-late 80s, applications grew so big or complex that they needed whole conventional memory, leaving little left for DOS.
That’s why some XT compatibles had 704KB or more RAM, depending on the video adapter.
With CGA, up to 736KB were possible. With MDA/Hercules it were 704KB.
That helped a bit run bigger software, but merely if a small DOS such as 2.11 or 3.x was used.
DOS 4 (late 80s) had higher memory consumption.
Then DR-DOS 5 added HMA support to move DOS above 1MB (286+), which used the otherwise unused HMA to hold DOS parts and reduce memory footprint again.
With an UMB card and utilities it also was possible to move DOS parts into the 640KB-1MB region, which worked on XTs, too.
Anyway, I’m probably stating the obvious here.
An EMS memory card probably is most useful to XTs, I guess,
because it’s being provided by a device driver and supported by the application that needs lots of memory.
UMB cards are cool, too, but they alone don’t provide much RAM by comparison.
ESP32 also has one called FabGL, but that hasn’t seen much activity recently. I guess this could be a more promising option at the moment.
I have been thinking about replacing internals of my 95LX (with a busted screen) with something like this.
I guess you could run protected-mode Xenix, but I tend to prefer real OSs with memory protection. Maybe there’s some target supported by NetBSD that could soon be within the window of viable emulation.
Not Unix, but OS/2 1.x runs on an 80286 system.
Though it should have 4 to 6 MB of RAM to be running smoothly.
The final OS/2 1.3 was quite mature for its time and supported Windows applets.
That being said, it’s not certain that any given 80286 CPU emulation is good enough for OS/2, it depends.
It used quite some features of x86, especially the full ring scheme.
This makes me imagine a landline phone with a built-in bbs and sip gateway.
Ahh memories
According to the sourcecode uploaded to github, 80286 protected mode is not yet implemented on the emulator in the article. What has already been made to work thus far is incredibly cool though and suspect there may be room for further enhancement.
Hi. That makes sense, emulating the MMU/Segmentation Unit and 16-Bit Protected-Mode is quite some work.
Many PC emulators thus emulate an 80186/80188 and V30/V20, at most. The newer 8086-2 ISA, in short.
Without 8080 emulation mode of the latter, usually.
V20/V30 is nowherenear as well emulated than the overrated i8088.
If this emulator here has XMS memory support
and the larger adderss bus of the 80286,
then it’s at very least usable to most 90s era DOS applications. 🙂👍
I’m thinking that if you’re adding the MMU and 16-bit protected mode, you might as wel go the whole way, skip the whole 286 and go 386.
Although a 386 will be a bit harder to emulate cycle-perfectly because of the longer pipeline. But which software really depended on cycle counting by the time the 386 was released?
Maybe some graphics demos, but probably not one game. Because of the PC clone market, there were dozens of systems that superficially worked exactly the same, but had internal differences. And graphics cards were different, etc. So if you depended on cycle-accuracy in your game, your game would probably only run on a small subset of systems. Then it becomes a choice between not going for cycle accuracy in the first place (having less clever graphics) or play testing on all possible combinations of motherboards and video cards, making patches for ever combination, and autodetecting and applying the necessary patches at runtime. Not commercially feasible, so I don’t think anyone ever did that.
In short: let’s skip 80286 and jump straight on to 80386!
The 80286 Protected-Mode is the basis for the 80386 Protected-Mode, though, so it shouldn’t be omitted.
The 386 MMU adds a paging unit and variable segment size.
To “disable” segmentation, it basically inflates segment size from 64KB to 4GB (whole address space).
What’s interesting about 16-Bit Protected-Mode is that segments can be marked as program (executable) and data (non-executable),
which prevents these overflow exploits.
x86-32 architecture needed DEP to bring this feature back to “flat mode” environments such as Windows NT.
What’s also cool about 16-Bit Protected-Mode is that it uses pointers and selectors.
Tricky to handle to humans, but it allows tinkering with memory without moving memory around so often.
It’s a little bit like Expanded Memory (EMS) if we will.
Pico 286 is very limited to EGA/VGA planar modes right now, cause they are memory hungry beasts, so only software using VGA Mode 13h and other CGA/Tandy modes works pretty well.
The Acorn BBC with a 6502 ripped those 286’s apart for processing power apart. In those days Econet just worked and had proper hierarchical folders ( with upper and lower case FS), password protected user spaces etc etc on a networked machine. We had a few PC jnrs bought by the Acorn doubters. It was a time to just forget and move on.
Strictly an era for the ’86 romantics to indulge theselves in. Best wishes. ARM
When most people think of 286 its not 1984/1986 IBM 5170/5162, its flood of cheap 12-20MHz clones from 1990 accompanying release of Windows 3.0. Its memories of playing F29 Retaliator, Wolfenstein 3D, Test Drive 3, Centurion, Civilization, Monkey Islands, Kings/Space Quests, Leisure Suit Larrys, Hot Rod 1/2 etc.
Acorn was bankrupt by 1986, thats why they sold to not much better off Olivetti.
This. These CPUs were expensive when they were new. I didn’t even get an XT class system until 1989, when an affordable clone was unusually cheap at the local store and my Dad had some spending cash to get one (Epson Apex 100). That same year, Intel announced the i486, and I think systems were available around Christmas time (I certainly didn’t get one for xmas)
There was a narrow range of years where the 286 dominated because it was relatively affordable and performed better than an 8088. It was a good mid-range option during its peak, and was also a budget option when the 486 hit the market. But people were encouraged to get a 386 instead of a 286 by then because it was clear that Windows 3.x was a big deal for office/productivity apps.
Nearly the same story for the 386, horribly expensive when new. The top of the line for PCs in mid to late 1980’s would have been a 386 (such as Compaq 386 as early as 1986). Few of my friends got into 386’s until the early 1990’s when they were simply expensive instead of ridiculously expensive. I managed to get one in 1993, which was a huge upgrade for us.
The 286 processor itself was “okay” for Windows 3.x, more or less.
Most applications except high-performance ones such as AutoCAD, Visual FoxPro, Gupta SQL and so on were plain 16-Bit applications.
Even Visual Basic, Turbo Pascal f. Windows or MS Quick C 1.0 f. Windows ran on 80286 processors (on Windows Standard-Mode kernal).
However, many 286 systems were cobbled together from existing PC/XT parts.
If you take existing 8-Bit cards and stuff them on an PC/AT mainboard, then the performance will suffer greatly.
Especially if 8-Bit hardcards or MFM/RLL controllers with a poor interleave factor for HDD are used.
On top of that, a new low-level formatting for better performance would require a new installation of DOS and all applications and their data.
Not many users went this extra mile, so to say.
And that’s one of the reasons that older 286 systems were appearing to be both slow and limited.
They had been built using spare parts, basically.
Also because home users were notoriously short on money.
By contrast, 80386 systems were considered precious and that’s why they had been treated with more respect.
If you assemble an 32-Bit power house then you do that use outdated 8-Bit cards with 4,77 MHz and 300 KB/s bandwidth, but at least use normal 16-Bit ISA cards (roughly 6-8 MB/s of ISA), if not 32-Bit EISA.
But if an PC/AT was probably built, then the 80286 was very snappy.
An 12 or 16 MHz 80286 PC with 2 or 4 MB of RAM @70ns or less (0 waitstates) was on par with many average 386 PCs of the 80s.
An 80287 co-pro didn’t hurt, either, if CAD or DTP applications were used.
386 class PCs usually also had the advantage of having a motherboard with less bottlenecks.
While the i386 didn’t have internal cache yet, the 386 motherboards had 32 or 64KB of fast SRAM acting as external cache (or more, such as 256KB).
And even if they didn’t have it installed, they still had 32-Bit wide memory connection on the motherboard.
The later Tandy 1000 home computer models had an 286 processor on an PC/XT or PCjr motherboard, basically.
The expansions slots and many of the on-board peripherals remained 8-Bit, though.
https://en.wikipedia.org/wiki/Tandy_1000#Selected_models
i’m way off topic but you made me read the wikipedia on IBM 5170 and after drooling over how familiar it is to me (similar specs as the 1990 286-12MHz i grew up with, and similar look to an 8086 or 8088 PC-XT i got for free somewhat later), i came across this jaw-dropping paragraph:
“According to IBM’s documentation, in order to function properly, the AT power supply needed a load of at least 7.0 amperes on the +5 V line and a minimum of 2.5 amperes on its +12 V line. The power supply would fail to start unless these minimum load requirements were met, but the AT motherboard did not provide much load on the +12 V line. To solve this problem, entry-level IBM AT models that did not have a hard drive were shipped with a 5-ohm, 50-watt resistor connected on the +12 V line of the hard disk power connector. In normal operation this resistor drew 2.4 amperes (dissipating 28.8 watts), getting fairly hot.”
^Hi, please excuse me for the reply, but this reminds me of something.
Adding a load to AT PSUs was still common in the early 90s, as a precaution, I think.
Once saw a few big, rectangular concrete resistors, too.
Btw, here’s OS/2 1.1 running on an IBM PC/AT Model 5170 (8 MHz model).
It did run very well, memory really was the limiting factor at the time.
4MB and more made a difference on real multitasking operating systems.
Oh, and having a proper graphics card for the GUI. Such as EGA (full), (S)VGA or 8514/A or XGA.
https://tinyurl.com/yfjswd7s
The BBC Master 512 system consisted of an 80186 board and shipped with DOS Plus and GEM.
They connected via the tube and the Master 128 hardware was used for i/o and CGA emulation.
In some way (performance etc), it was similar to a basic 80286 system.
The 80186 was essentially an microcontroller variant of 80286,
without Protected-Mode and 24-Bit address range.
https://chrisacorns.computinghistory.org.uk/Computers/Master512.html
https://en.wikipedia.org/wiki/Intel_80186
Other UK computers also had 80186s, interestingly.
Such as the RM Nimbus series.
These systems were unconventional for using MS Windows 1.x (!) and having built-in network support.
https://www.thenimbus.co.uk/range-of-nimbus-computers/PC-186
https://en.wikipedia.org/wiki/RM_Nimbus
“Do not sell or share my personal information”
(also, why TF do you now use cookies!? Why do you need to “capture and analyze how users interact with our websites, as well as to enhance user experience”? These are genuine questions)
Very interesting project, I’m gonna have a look at it!
Huu, fortunately, computer were productive way before the 286…
Quite some 6502 and z80 machines were used daily for spreadsheet and such…
Also, how do you design a 286 computer? You need an other computer to do so.
So, yeah, a bit pedantic no?
No mention of compatibility/performance on github page, no list of tested/working software, no github issues (thats where you would usually find people talking about compatibility problems). Not a single pico-286 video on YT, no google results for anyone blogging about actually trying it, not even a single screenshot :( Its like no one ever ran the thing.
Did anyone try it? It has interesting take on general-midi emulation, reading the code its all boops instead of instruments? Would love to hear how it sounds.
oh, and repository contains mentions of using AI to write the code.
I feel like you didn’t look for more than a few seconds. That’s how long it took me to read this from the linked Github page:
“This project primarily uses the MURMULATOR dev board as its hardware base. This board provides an RP2040, PSRAM, and various peripherals suitable for the emulator’s development and testing.”
And a few seconds later I found this:
https://duckduckgo.com/?q=MURMULATOR&iar=videos&t=ffab&atb=v491-3
It’s all over Youtube.
Try finding MURMULATOR running pico-286. On YT its all ZX Spectrum and some 8bit consoles. I found exactly one video with no sound from 2023 of pico-xt https://www.youtube.com/watch?v=9F0lXviwLE8 and one review from 2024 https://habr-com.translate.goog/ru/articles/842292/?_x_tr_sl=auto&_x_tr_tl=en with actual useful info:
performance ~8MHz 286 on rp2040
“VGA and EGA modes on pico-xt are supported to a very limited extent (there is little memory in the microcontroller) and 90% of games will not work in them” but that was 2 years ago
Prince of Persia and Monkey Island run
“King’s Bounty just doesn’t start”
Seing as this is a russian project all communication must be going on telegram
I tried it, in the “host” configuration because I didn’t have a pico to hand, but the keyboard code doesn’t appear to work properly (trying to enter a colon – kind of essential for DOS – produced a pair of @s instead, as did many other non-alphanumeric keys). if it was AI-generated that might explain why; certainly had I noticed that, I wouldn’t have bothered.
“Do not sell or share my personal information”
(also, why TF do you now use cookies!? Why do you need to “capture and analyze how users interact with our websites, as well as to enhance user experience”? These are genuine questions)
Very interesting project, I’m gonna have a look at it!
Even if the readme.md taste an awful lot of AI (and https://github.com/xrip/pico-286/blob/master/CLAUDE.md lol this info is useful to anyone, not just IA = P )
Huu, fortunately, computer were productive way before the 286…
Quite some 6502 and z80 machines were used daily for spreadsheet and such…
Also, how do you design a 286 computer? You need an other computer to do so.
So, yeah, a bit pedantic no?
i don’t understand the name, it doesn’t emulate a 286, it emulates up to a 286, non of the 286 software I tested ran correctly.
Wow. 286! I was expecting 8088 emulation. Nice job!
it’s an 8088/8086 with some bonuses. It falls short of a full 286, but good enough for DOS games in many cases. As a project goal, I think a 286 AT (or PS/2) is a really admirable target for a retro computer.
But will it play Chuck Yeager’s flight simulator or street rod 2?
Almost all of this code is stolen from Fake86/XTulator. It just throws some glue code around it for the Pico.
I see no attribution to the original author anywhere. Someone correct me if I’ve missed it.
There is nothing wrong with using the code, but it’s a violation of the GPL to not preserve notices and attributions, including the original copyright holder. It’s also just generally considered rude and disrespectful.
It’s also misleadingly labeled a 286 emulator. It’s not. The author didn’t add support for protected mode to the Fake86/XTulator code that was stolen, therefore it’s still just an 80186 emulator.