Live data from Hacker News

Windows 1.0 and the WinAPI, 40 Years Later

medium.com

21–30 of 55 posts

Re: Windows 1.0 and the WinAPI, 40 Years Later

#21
post #8

While I haven't daily driven Windows in years and am usually the first to criticize Microsoft. You have to give credit where credit is due; Windows backwards compatibility is simply nuts. I had never run into compatibility issues with programs or games built for older Windows version, nor have I heard of anyone who did.

Some games that ran on Vista, can run under Wine, but not on Windows 11. The backwards compatibility story has changed in the last few years.

Games for Windows, can’t play any of those anymore without cracking them since the severs got turned off.

Re: Windows 1.0 and the WinAPI, 40 Years Later

#22
post #15

> That was probably the most surprising part of the entire experiment: internally, Windows has changed enormously over the decades, yet the application interface has stayed so stable that code written in the mid-1980s still looks completely familiar. Imagine if Linux stuck to that same level of interface compatibility. Think of the thousands of man-hours lost to rewriting perfectly good code just chasing the new shin…

[deleted]

Re: Windows 1.0 and the WinAPI, 40 Years Later

#24
post #12
post #6

Winapi has exploded the last years in terms of functionality, still it was never sanitized to follow any C standard in terms of types.

To be fair, the C standard for types is pretty dreadful. How big is an int? A long? Want an integer type that matches the size of a pointer? did fix a lot of the issues, but people targeting an early C version don't have this header available. Windows type names have stayed mostly stable since Win32, but some of them are still misleading. DWORD, UINT and ULONG are all 32-bit unsigned integer types. But in C#, "ulong"…

It make sense.

Re: Windows 1.0 and the WinAPI, 40 Years Later

#25
post #5

While I haven't daily driven Windows in years and am usually the first to criticize Microsoft. You have to give credit where credit is due; Windows backwards compatibility is simply nuts. I had never run into compatibility issues with programs or games built for older Windows version, nor have I heard of anyone who did.

> I had never run into compatibility issues with programs or games built for older Windows version Try running a real-mode Windows program on a modern version of Windows.

For sure.

Not building NTVDM for 64-bit Windows was a major departure from previous strategy and marks a clear regression in Microsoft's attitudes toward backwards compatibility.

Re: Windows 1.0 and the WinAPI, 40 Years Later

#26
post #8

While I haven't daily driven Windows in years and am usually the first to criticize Microsoft. You have to give credit where credit is due; Windows backwards compatibility is simply nuts. I had never run into compatibility issues with programs or games built for older Windows version, nor have I heard of anyone who did.

Some games that ran on Vista, can run under Wine, but not on Windows 11. The backwards compatibility story has changed in the last few years.

I'd like to know which ones you've had issues with. I've compiled a collection of hundreds of Windows games from ~96-2006 and I've only run into one that's required an appcompat flag (carmageddon 2).

Re: Windows 1.0 and the WinAPI, 40 Years Later

#27
post #10

16-bit windows applications aren't supported natively by 64-bit windows, but OTVDM (based on Wine code) will run most of them fine.

I've been using otvdm (aka winevdm) and it is very good. It works like the original ntvdm did when running on non-x86 platforms. It emulates the processor and translates 16-bit api calls into 32-bit api calls so things work as you'd expect.

https://github.com/otya128/winevdm

Re: Windows 1.0 and the WinAPI, 40 Years Later

#28
post #6

Winapi has exploded the last years in terms of functionality, still it was never sanitized to follow any C standard in terms of types.

Use Windows Implementation Library to clean things up and get some RAII on handle types: https://github.com/microsoft/wil

Re: Windows 1.0 and the WinAPI, 40 Years Later

#29
post #6

Winapi has exploded the last years in terms of functionality, still it was never sanitized to follow any C standard in terms of types.

It's not (reasonably) possible to do so though, because it would break so, so much legacy code. The only thing you can do is to add new functionality (e.g. the difference between A and W APIs - A is ASCII, W is UTF-16) or to shoehorn crap onto existing interfaces (again, A APIs to which you pass UTF-8 and pray for the best), but you cannot delete any publicly exposed API or modify existing types.

Re: Windows 1.0 and the WinAPI, 40 Years Later

#30
post #8

Earlier quoted context omitted.

Some games that ran on Vista, can run under Wine, but not on Windows 11. The backwards compatibility story has changed in the last few years.

I'd like to know which ones you've had issues with. I've compiled a collection of hundreds of Windows games from ~96-2006 and I've only run into one that's required an appcompat flag (carmageddon 2).

Heroes of Might and Magic 3
Post reply on HN