> Windows XP/7's video modesetting logic is a bit mysterious. It may try to set a incompatible mode using int10h, which will cause flickering or even black screen after transferring control to the legacy OS.
> It is based on the SpiderSTREAMS source, stremul\msgsrvr.c.
There's some special history.
skissane · 8h ago
I’d love to know if any apps ever actually used the STREAMS support in Windows NT 3/4; I’ve never seen any
ronsor · 8h ago
Wow, Microsoft open-sourced Windows XP?
mmastrac · 8h ago
... uhh, not really. :)
kevinsync · 8h ago
The little bit I perused is very readable code.. like enjoyable to read. There are a lot of stylistic decisions that always felt "right" to me (general spacing, commenting style, horizontal alignment of equals signs, etc) -- but FWIW the first codebase I ever read (and probably imprinted on me indelibly) was DikuMUD, which is kind of in the same ballpark.
Anyways, very cool to see.
bitwize · 4h ago
I... wouldn't confess to having perused illegally leaked Windows source, as it could taint you and make you ineligible to contribute to certain projects, like Wine.
Kwpolska · 1h ago
That's Wine's problem, not mine.
skissane · 8h ago
Microsoft owns GitHub, and GitHub is crawling with Windows source code leaks… and I’m wondering it anyone at Microsoft really cares? Is it possible they’ve even made an intentional decision just to ignore it?
If it were an Oracle source code leak, I expect they’d have a crack team of lawyers suing people 24x7 until it was all gone… maybe that’s why there haven’t (to my knowledge) been any Oracle source code leaks (I vaguely remember one of Solaris, but that wasn’t such a clearcut case since IIRC it was mostly previously open sourced code)
Well, it wouldn’t surprise me if some unfriendly intelligence agency somewhere had succeeded in stealing some of it, but if they have, they are unlikely to release it publicly
jsheard · 8h ago
> Microsoft owns GitHub, and GitHub is crawling with Windows source code leaks… and I’m wondering it anyone at Microsoft really cares?
Even weirder is that GitHub hosts all of the tools for activating (i.e. cracking) modern versions of Windows and Office as well. Microsoft really doesn't care.
adiabatichottub · 8h ago
Why should they? They have bulk licensing deals with PC OEMs and large organizations. They've already got the big money. J. Random Hacker building a PC isn't even a rounding error to them.
michaelmrose · 7h ago
Quite right in fact limited weak copyright protection helps retain marketshare that might be lost otherwise especially when that weak protection in fact costs little real revenue.
aspenmayer · 6h ago
It looks even smarter from the MS side when you think of all the threat intel that they gather from pirated Windows installs that can be used as a baseline to compare legit installs against.
userbinator · 6h ago
Also, they still get the ad revenue and telemetry if you pirate Windows and otherwise leave it stock.
...of which the tools to disable that invasiveness are also on GitHub, so maybe they just care more about maintaining marketshare.
rzzzt · 2h ago
MS offers (or offered back in the day of Win2000 and XP) access to source code for governments, system integrators and academic institutions as part of its Shared Source Initiative:
When I started college in 1989, my Pascal programming class used a cluster of AT&T 3B2 systems running SVR3. I poked around those systems like crazy over the course of two quarters. I don't remember if there was any significant source code exposed to unprivileged users.
During the mid-90s, the Unix Wars were raging and Unix System Labs was suing U.C. Berkeley over the intellectual property of Unix source code. Unix had been written at AT&T Bell Labs, but Berkeley had licensed and forked their own, based on improved networking code, and by this time it was ready to run on i386 systems. In fact, USL had borrowed back some BSD code, allegedly without crediting them. Berkeley had been busy removing AT&T code and replacing it, so they could relicense BSD Unix.
USL, part of AT&T (but later purchased by Novell), contended that Berkeley could not easily make a "clean room implementation" of any kernel code or device drivers, if those programmers had read or worked with original AT&T source code. They told the courts (and journalists) that the programmers might be tempted to reproduce proprietary Unix code, consciously or subconsciously, and therefore, these programmers were permanently "Mentally Contaminated" and Berkeley should not be allowed to continue distributing BSD [BSDi] Unix.
So when I attended Usenix LISA in 1994, this 3-year lawsuit was at a fever pitch, and someone on the convention floor had manufactured large buttons for attendees to wear, proudly proclaiming "MENTALLY CONTAMINATED", and all the admins and systems programmers had a good laugh about the absurdity of trying to keep a lid on proprietary source code by policing everyone who's ever seen one of its files.
userbinator · 6h ago
This is like the reverse of the bootloaders first pioneered by the Hackintosh community to boot UEFI macOS on traditional BIOS systems.
and VESA VBIOS from SeaBIOS project
Unfortunately I believe modern GPUs without a standard VBIOS may not act enough like an IBM VGA for a generic VGA VBIOS to work, so I see another project for someone in the future: a retrofit VBIOS, especially for those GPUs e.g. Intel's for which lots of open-source driver code and documentation is available but later models no longer come with a VBIOS.
Perhaps also injecting a true CSM from an old closed-source UEFI BIOS, before they started removing it, is worth doing as in my limited experience SeaBIOS isn't as quite compatible as the closed-source ones for some edge-cases.
mjg59 · 6h ago
It's actually pretty much the same as the project to get Windows running on Intel Macs before Apple released Boot Camp
LukeShu · 9h ago
Very cool hack.
But, as okanat says, if the goal is to run legacy operating systems, then modern hardware is going to be challenging in other ways too. IME the biggest thing I want PC BIOS back for is the ability to use non-GPT disk layouts, which this doesn't accomplish as, as to use it you put it on the EFI partition on your GPT disk.
mintsuki · 6h ago
By spec, UEFI is required to support both MBR and GPT, so there is literally nothing stopping you from using MBR.
skissane · 8h ago
MBR and GPT can coexist on the same disk - MBR goes in sector 0, GPT starts in sector 1. Normally the MBR in sector 0 is “protective” (it just marks the whole disk as in use), but in theory you can create a “hybrid” disk in which the MBR and GPT both describe the same partitions. I suppose you could even reserve most of the disk as one big GPT partition and then split that up into multiple MBR partitions. You’d have to be very careful editing the partition table on such a disk because standard tools might break it.
rjst01 · 42m ago
In practice, whether or not this actually works can be very hit-or-miss. We've found several UEFI implementations will not consider a disk bootable if the pMBR doesn't exactly match the spec, which specifies that the 'protective' partition shouldn't be marked as bootable in the MBR partition table.
Meanwhile, other implementations will not consider the disk bootable in BIOS mode if the partition in the pMBR is not marked bootable.
mintsuki · 12m ago
Indeed! Which is why the only portable solution is to not do this.
For stuff that needs to be bootable by both BIOS and UEFI the only portable solution is to use MBR, not GPT. That means all legacy BIOS systems will boot it, and so will all UEFI systems since UEFI must support MBR.
For ISOs that need to additionally be booted off of optical media (aka ISOHYBRIDs) the story gets more complicated, but ultimately what you need to take away from that is the same: avoid GPT at all cost.
LukeShu · 4h ago
Too late to edit: non-GPT, non-MBR
For instance, whole-disk btrfs. Or old BSD partition schemes.
mintsuki · 2h ago
That is a very niche use case, and also won't really work on most real BIOS machines as they actually check for a proper MBR and/or BPB (and no GPT), which is also why GPT on BIOS support is very spotty, since a lot of BIOSes will detect the GPT and refuse to boot, or refuse to boot in legacy (CSM) mode.
In any case that is far beyond the original scope of booting old PC OSes, which MBR support alone serves really well (99.9% of the way there, really), which is why I assumed by default you were thinking of MBR, not some other weird scheme.
Kwpolska · 1h ago
How much benefit would there be in whole-disk btrfs? The space taken up by GPT and the FAT32 EFI partition is a rounding error compared to the sizes of modern disks.
nicman23 · 2h ago
you probably can with uefi modules
o11c · 9h ago
Huh, Github fails quite badly at dealing with submodules from other forges.
ehutch79 · 9h ago
Why?
II2II · 9h ago
The two reasons I can think of: to run legacy or educational operating systems. There are going to be limitations to what can be supported, but simply getting the OS to boot is part of the battle. It would also be useful for those who want to experiment with operating systems by creating their own. Yes you can do that without BIOS support, but there are many old tutorials floating around that depend upon BIOS support. The BIOS was also created as a primitive hardware compatibility layer, so it will provide basic support for things like I/O.
Retr0id · 7h ago
You get a better experience on the educational front from booting them in a VM, but it's certainly more fun to boot on real hardware.
axiolite · 9h ago
From the project page: "Boot FreeDOS, Windows XP, and Windows 7"
Additionally, it was just 3 years ago that memtest86plus finally got a UEFI version. That was painful for a few years there. (Though the 4GB RAM limit would have made this not an ideal solution.)
I'm sure there are other such self-hosting utilities that haven't been and may not be ported/rewritten to work under UEFI.
p_ing · 9h ago
DOS. Can’t think of any other reason.
okanat · 9h ago
You get better DOS emulation with DOSBox, rather than trying to make the modern peripherals work on a CSM / BIOS system.
kevin_thibedeau · 6h ago
DOSBox doesn't give access to real hardware. DOSemu doesn't run well on 64-bit machines. If you need unfettered hardware access, FreeDOS on the bare machine is the best option.
ale42 · 28m ago
Actually it does give some. I'm using old ham radio software like CT9 under Windows 64-bits using DOSBox-X, with the parallel port configured in pass-through mode. DOSBox-X supplies a specific driver for this kind of direct hardware access. Of course not everything will work that way.
mycall · 4h ago
What about using PCem? It does well emulating real hardware.
kevin_thibedeau · 2h ago
That does one no good if you need something connected to a parallel port.
I would really love to know more about this.
I assume it's this VGA driver:
https://github.com/tongzx/nt5src/tree/master/Source/XPSP1/NT...
> It is based on the SpiderSTREAMS source, stremul\msgsrvr.c.
There's some special history.
Anyways, very cool to see.
If it were an Oracle source code leak, I expect they’d have a crack team of lawyers suing people 24x7 until it was all gone… maybe that’s why there haven’t (to my knowledge) been any Oracle source code leaks (I vaguely remember one of Solaris, but that wasn’t such a clearcut case since IIRC it was mostly previously open sourced code)
Well, it wouldn’t surprise me if some unfriendly intelligence agency somewhere had succeeded in stealing some of it, but if they have, they are unlikely to release it publicly
Even weirder is that GitHub hosts all of the tools for activating (i.e. cracking) modern versions of Windows and Office as well. Microsoft really doesn't care.
...of which the tools to disable that invasiveness are also on GitHub, so maybe they just care more about maintaining marketshare.
- https://en.wikipedia.org/wiki/Shared_Source_Initiative#Overv...
- https://news.microsoft.com/source/2002/02/21/microsoft-annou...
During the mid-90s, the Unix Wars were raging and Unix System Labs was suing U.C. Berkeley over the intellectual property of Unix source code. Unix had been written at AT&T Bell Labs, but Berkeley had licensed and forked their own, based on improved networking code, and by this time it was ready to run on i386 systems. In fact, USL had borrowed back some BSD code, allegedly without crediting them. Berkeley had been busy removing AT&T code and replacing it, so they could relicense BSD Unix.
USL, part of AT&T (but later purchased by Novell), contended that Berkeley could not easily make a "clean room implementation" of any kernel code or device drivers, if those programmers had read or worked with original AT&T source code. They told the courts (and journalists) that the programmers might be tempted to reproduce proprietary Unix code, consciously or subconsciously, and therefore, these programmers were permanently "Mentally Contaminated" and Berkeley should not be allowed to continue distributing BSD [BSDi] Unix.
https://en.wikipedia.org/wiki/UNIX_System_Laboratories,_Inc.....
So when I attended Usenix LISA in 1994, this 3-year lawsuit was at a fever pitch, and someone on the convention floor had manufactured large buttons for attendees to wear, proudly proclaiming "MENTALLY CONTAMINATED", and all the admins and systems programmers had a good laugh about the absurdity of trying to keep a lid on proprietary source code by policing everyone who's ever seen one of its files.
and VESA VBIOS from SeaBIOS project
Unfortunately I believe modern GPUs without a standard VBIOS may not act enough like an IBM VGA for a generic VGA VBIOS to work, so I see another project for someone in the future: a retrofit VBIOS, especially for those GPUs e.g. Intel's for which lots of open-source driver code and documentation is available but later models no longer come with a VBIOS.
Perhaps also injecting a true CSM from an old closed-source UEFI BIOS, before they started removing it, is worth doing as in my limited experience SeaBIOS isn't as quite compatible as the closed-source ones for some edge-cases.
But, as okanat says, if the goal is to run legacy operating systems, then modern hardware is going to be challenging in other ways too. IME the biggest thing I want PC BIOS back for is the ability to use non-GPT disk layouts, which this doesn't accomplish as, as to use it you put it on the EFI partition on your GPT disk.
Meanwhile, other implementations will not consider the disk bootable in BIOS mode if the partition in the pMBR is not marked bootable.
For stuff that needs to be bootable by both BIOS and UEFI the only portable solution is to use MBR, not GPT. That means all legacy BIOS systems will boot it, and so will all UEFI systems since UEFI must support MBR.
For ISOs that need to additionally be booted off of optical media (aka ISOHYBRIDs) the story gets more complicated, but ultimately what you need to take away from that is the same: avoid GPT at all cost.
For instance, whole-disk btrfs. Or old BSD partition schemes.
In any case that is far beyond the original scope of booting old PC OSes, which MBR support alone serves really well (99.9% of the way there, really), which is why I assumed by default you were thinking of MBR, not some other weird scheme.
Additionally, it was just 3 years ago that memtest86plus finally got a UEFI version. That was painful for a few years there. (Though the 4GB RAM limit would have made this not an ideal solution.)
I'm sure there are other such self-hosting utilities that haven't been and may not be ported/rewritten to work under UEFI.