What Does It Take To Port 16-Bit Windows 1.0 Applications Into Native Windows 11 Programs?

255,150
0
Published 2021-11-26
Windows has been around for 36 years now, and it's changed a lot since it's early days. However, one question I had to wonder is: what does it take to port a legacy Windows 1.0 application to the modern day. After all, computers in 1985 were 16-bit, while modern computers are now 64-bit. For those of us who lived through the 90s, you'll remember that upgrading to then new Windows 95, and NT 4 were very much a big deal.

My socials:
Patreon: www.patreon.com/ncommander
Twitter: twitter.com/FOSSfirefighter
Discord: discord.gg/V8esNah
Blog: casadevall.pro/

For the sake of my curiosity, I decided to find out. Starting with the example applications from the Windows 1.0 SDK, i started by porting them forward to Windows 3.1 and modifying them to compile under Microsoft Visual C++ 1.52. After ensuring I had working project files, I then ported then to Visual C++ 6 under Windows NT 4. This provided a 32-bit baseline, and let me resolve API issues such as changed to hPrevInstance, and the removal of certain non-Ex variants of functions from 16 to 32 bits.

This then extended to porting to Server 2005 and Visual Studio 2005, where I did an initial x64 port, and tried to create an Itanium based ported, but failed, due to Microsoft's annoying policies of gating off developer tools behind an absurd paywall.

After gnashing my heath, we hopped ahead to Windows 11, and Visual Studio 11, where, after importing the project files, we had everything running just fine on 64-bit platforms. This of course encouraged chat to make me take it further. First I ended getting the applications running on WINE, then we hopped into ReactOS, OS/2, and well, we transcended the world of x86 programming entirely, and ended up on NT4 on MIPS, which involved using a special edition of Visual C++ 4 to compile the binaries for the never realized non-x86 world.

Afterwords, we wrapped itup, and I decided to re-edit this stream into a full fledged video, with the third NCommander in Realtime event.
#ncommander #retrocomputing #window1 #16bit

All Comments (21)
  • "Have you ever wondered what it takes to convert a 16 bit application from the very first version of Windows, release in 1985, to run as a native 64 bit application in 2021".. well.. I definately never wondered that.. but that won't stop me from enjoying this :)
  • I did so much of this crap back in the day, from 16 to 32, that I knew what had to change by heart. I recently ported a 32-bit oldie (originally 16-bit) to 64, and it was painless. I'm so happy I retired from coding for a living; it's a much better hobby!
  • It's too bad Microsoft doesn't have a "fat binary" (or "universal binary") system like Apple to allow one executable to run on multiple architectures. It would be fun to have one .exe that runs natively on 16-bit Intel, 32-bit Intel, PowerPC, Alpha, MIPS, 64-bit Intel, 64-bit Itanium, etc.
  • @sl-mb4rb
    I believe this is why Cardfile had custom assembler disk DOS routines: "createbitmap may have caused disk swap, make user reinsert disk" -- it relied on the functionality to simulate a two-floppy system on a single-floppy system. Cardfile was not written to read the entire file into memory because it ran in real mode and each card could have a bitmap up to 64k in size. You could have replaced with stdio C calls easily.
  • @ruler255
    If you replace “Windows” with “Interface Manager” in “Windows 11”, it becomes “Interface Manager 11” Which ironically has a nice ring to it
  • @Stoyon
    This is interesting, my dad uses a vector drawing program built for Windows 3.1, Macrografx Designer 3.1, to manage the blueprints for his house, he is constantly using it, with his new machine, running Windows 10 64 bit, I noted that MS has dropped support for running 16-bit programs, I had to set up a Win7 32-bit VM and have him run it in that environment, it works good enough for him. He has tried to switch to other programs, but this is the only drawing program he has been able to use effectively, and now it is a bit late to change....
  • 18:50 - The 16-bit Intel compatibility is how I run a web browser on my PowerPC NT 4.0 system. The latest version of IE for PowerPC was 3.x, which is terrible. IE5 was available for Windows 3.1 16-bit, and it runs just fine on NT 4.0 PowerPC.
  • @GeoNeilUK
    This does kind of make me wish that Olivetti had capitalised on the Archimedes to make them ARM-based Unix workstations. I can imagine it now. "Windows on ARM goes way back further than you'd imagine, with Windows NT4 being released for ARM for the Olivetti Phoebe workstations. Libraries released by Acorn and Olivetti and now hosted by ARM made compiling these 16 bit X86 applications for 64 bit ARM way easier than I thought it would be!"
  • @homemadejesus
    This in combination with the recent GTA debacle means that when I hear a company say we can't make systems backwards compatible they either don't currently have staff with the knowledge/ don't want to hire one, or it means that someone will actually have to put in the effort. And before you say well they lose money to the resellers.... They have the money to start their own used stores
  • @tassaron
    I really appreciate that you edited the livestream into its own video instead of just cutting it up into a montage
  • @KurtWoloch
    This reminds me of a utility I needed which was available on the Internet only as a C source file. On double-clicking the source file, it opened in Visual C++ 6.0 (which I had installed on my XP PC), and it compiled and ran just fine after changing just one line. After the fact I realized that the source file was actually written on and for the Amiga. It still ran happily on Windows XP. However, it was a command line application with no GUI which, as far as I remember, only served to convert one file format to another.
  • @trwijbenga
    This video was in my recommendations and actually I've wondered before why it's not so easy to run older programs on newer OS'es. I lack the skills to find this out myself, so I like you investigating the problem. I also like your approach, you just start and patiently tackle every hurdle that you come across. On top of that, you have a great relaxing voice to listen to and do a great job explaining. Although this is not my main area of interest, this is real quality content. Keep it up man.
  • @asadava
    The commitment amazes me. This should be more popular.
  • @deepdivedylan
    Great recap. I always love your videos! Maybe one of these days, the scheduling planets will align so I can attend a live stream for reals. Good job, man! 😺
  • @TheMAZZTer
    There is one more step I can see you could go, which is to have the XP+ versions opt-in to themed controls (that always bugs me about older apps that never got updated to do so).
  • @jp46614
    You're not finished you didn't do the minesweeper one.
  • @stathissim
    This video is really a job application for a senior software engineer
  • @fredskronk
    Although Win 11 for ARM can run x64 just fine; wouldn’t it be fun to get a native arm64 build? :)
  • @mkulak0
    Omg, you're awesome but live chat was sadistic :D