maniek86 logo

M8SBC-486: Windows 95

[Go back to the main page of this project] [Previous part]

Windows 95 on M8SBC-486

Intro

Similar to MS-DOS and Windows 3.1, I never expected Windows 95 to run on the M8SBC-486. In theory, the board meets the minimum requirements for Windows 95 (a 386-class CPU and 4 MB of RAM), but the missing second PIC and DMA are still the biggest problems. My attempts to run stock Windows 95 were unsuccessful: the setup ran until the end of the first boot, then crashed. The preinstalled image of Windows suffered the same fate (crash on boot). These missing elements are hard to ignore, especially since they are assumed to be present in the OS source code.

Windows 95 on the Intel Inboard/386

In August 2026, I stumbled upon a Reddit post about Windows 95 running on an Intel Inboard/386 in a 5160 XT. It's an ISA processor upgrade card for IBM PC/AT/XT computers with an original 8088 CPU that upgrades them to a 386. But what does the Intel Inboard/386 have to do with my project? After reading the post, I noticed a mention of the missing second PIC. I immediately thought of my board (M8SBC-486 could actually be referred to as a 486 XT). The author, u/Mike1978uk, modified the Windows 95 OSR1 code to eliminate the hardcoded references to the second PIC so that it could run on his platform. He also published the source code and images on GitHub. This gave me hope that Windows 95 might actually run.

Before trying it, I was concerned about the missing DMA and disk access. Normally, 32-bit disk access in Windows requires IDE interrupt #14, which is present on the missing second PIC. Ultimately, I assumed it wouldn't be an issue because Reddit post screenshots showed that the disk driver was running in legacy mode. This mode relies on BIOS disk interrupts and my BIOS disk interrupts use PIO disk access without interrupts.

So, I got to work. I decided to modify the existing image rather than compile everything from source. I downloaded the 2 GB image from the first release. My modifications are as follows:

I first booted the prepared image in my custom 86Box build with the M8SBC-486 board added to it. It has the same limitations as the board. It booted fine! I could even use a serial mouse.

The final moment had come: Would it boot on the M8SBC-486? I flashed the image onto the HDD, turned on the power and, to my surprise, it booted!

First Windows 95 boot on M8SBC-486Setup while running Windows 95 first time

With that first boot, I successfully opened and used a few Windows built-in apps: System properties, Paint and Minesweeper.

System propertiesPaintMinesweeper

Windows 95 on the M8SBC-486

Although I managed to boot Windows 95 on the M8SBC-486, I quickly ran into nasty problems. Apps and Windows itself tended to crash and freeze. One thing I noticed during these crashes was that the HDD LED was constantly lit, as if there were a problem with the BIOS disk subsystem. In fact after digging in, I found that this was the problem! Windows 95 generally likes to swap a lot on such low-memory hardware. My BIOS interrupts were buggy and corrupted the registers. This caused data corruption, then memory corruption due to swapping and even file system corruption. I decided to rewrite the BIOS disk subsystem. Within a few hours and with the help of AI to find edge case bugs, I had something more complete than the previous implementation. (In the context of versions, the described fixes are present in BIOS 2.03, while the buggy implementation is in 2.02 and previous versions). The rewrite sped up disk access and finally stopped corrupting CompactFlash cards (DOS could finally boot from CFs). There are still some compatibility bugs. For example, some CF cards still refuse to work. And two extra neat things: I added slave disk support and I implemented the CHS-to-LBA transaction. Now, DOS can finally use more than 528 MiB! 

Returning to the topic of Windows 95, after fixing the BIOS disk subsystem, the system finally became stable. I decided to switch from QEMM to the original HIMEM, but I quickly switched back when I found out that HIMEM was unstable with Windows 95 and was corrupting memory. The system's speed is not great, but it's not the worst either.

Here's a list of things I've tested that work successfully after fixing major issues:

Once again, huge thanks to Mike1978uk for his win95-intel-inboard-386pc project. It was the final unexpected piece needed for the M8SBC-486 to run Windows 95.

More sources, as well as a ready to download and to run image, will be available soon. I'm working on an assembly and operation page for those who want to experiment with the M8SBC-486. If you want to build and use this board, keep in mind that this is an experimental computer project, not a finished product, so I don't provide any warranty - you're mostly on your own!

More coming soon

Last updated: 07/10/2026


Homebrew Computers