Examining Windows 1.0 Hello.c
virtuallyfun.com
virtuallyfun.com
I wish desktop Linux had even a fraction of that level of backwards compatibility.
I've been down that road, there's nothing good to say about it.
Which is nice in that most every distro carries around a gazillion packages of obscure old code that still builds, but it also means that binaries are heavily disrespected, and the development environment is and forever remains centered around the GNU toolchain.
What's a weird ALSA or OSS feature? What do you expect in its place?
OSS as an API was really dead simple. open, ioctl, read or write... That interface is still working fine on FreeBSD.
There is an OSS to ALSA compatibility driver.
I'm sure whatever you're expecting (pulseaudio? yech.) can fake being an ALSA device enough to fool anyone.
Then, the last time I tried to run a binary from the 90s, it required libc5, from the days before distros switched to glibc.
Yes, and having an a.out interpreter is just another dependency.
> Then, the last time I tried to run a binary from the 90s, it required libc5, from the days before distros switched to glibc.
It's a library. libc is versioned like everything else.
I would think that the kernel would have dropped binfmt_aout by now, but I just looked and it's still there. Wonder if any distros build it.
There exist plenty of archives of old Linux distributions. "Nobody" turns out to be quite a lot of people/servers.
> Whereas an equivalently aged binary on Windows will load today without extra dependencies.
I wouldn't go so far. The 64-bit port of Windows dropped support for all 16-bit applications, whereas they still run flawlessly through Wine.
I wonder if it would be a good idea for them to remove a lot of the old APIs and instead provide a seamless virtualization mechanism for running the old binaries.
1) It specifically needs the 32-bit version of Windows.
2) It won't run on 32-bit Windows 10 without an additional installation (NTVDM).
I don't see any "baggage" which limits anything, for any "normal" user.
Try on Mac!
The compatibility is mostly at the level of the source code. You can compile linux programs from 20 years ago and run them. The only friction is that the compiler may print a few warnings. Binary compatibility is a moot point when you can recompile stuff so easily.
https://news.ycombinator.com/item?id=23237045
Could you please refer to the original article below and credit the original site it was published on:
Interestingly, even Windows 1.0's notepad had "Insert Time/Date (F5)". I always wondered where that came from, but apparently it's backward compatibility to Windows 1.0.
Source: https://devblogs.microsoft.com/oldnewthing/20200317-00/?p=10...
> The history of defect tracking in the Windows team goes back to Windows 1.0, which used a text file.
Should that have been "125k line"? Not to get too pedantic, but the units seem needful for "behemoth".
It just took me a few years (or maybe decades) from reading about it to actually try it.
Edit: In the decades since nothing has changed in my mind. The messy Windows boilerplate code that made up the other 120 lines or so should have been refactored architecturally and hidden by a framework, API call, something, anything.
#include <SDL/SDL.h>
int main(int argc, char *argv[]) {
int gogogo = 1;
SDL_Event event;
SDL_Init(SDL_INIT_EVERYTHING);
SDL_WM_SetCaption("Hello World! :D", NULL);
SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);
while (gogogo) {
SDL_WaitEvent(&event);
if (event.type == SDL_QUIT)
gogogo = 0;
}
SDL_Quit();
return 0;
}https://www.badprog.com/c-sdl-simple-directmedia-layer-hello...
As I remember, and if I'm wrong, I'll correct it, the different on 32-bit was that stdcall and pascal change the order of how arguments are injected.
The 16-bit Windows SDK does not define PASCAL as stdcall.
PASCAL pushes arguments left to right. stdcall pushes arguments right to left.