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

  Рет қаралды 232,034

NCommander

NCommander

Күн бұрын

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: / ncommander
Twitter: / fossfirefighter
Discord: / discord
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

Пікірлер: 434
@NCommander
@NCommander 2 жыл бұрын
The project files for this have been uploaded here: github.com/NCommander/windows-1-apps-to-64-bit
@dr.shuppet5452
@dr.shuppet5452 2 жыл бұрын
Cool, I'll try porting to Itanium once I get a hard drive replacement.
@bennydreamly
@bennydreamly 2 жыл бұрын
Cool!
@tuckster27
@tuckster27 2 жыл бұрын
You should try and port a director game to 64 bit. It would be an interesting challenge.
@arq1es
@arq1es 2 жыл бұрын
rather rewrite the program then this, it will be easier
@pifatech
@pifatech 2 жыл бұрын
I was gonna ask that
@tubeincompetence
@tubeincompetence 2 жыл бұрын
"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 :)
@lenni-builder
@lenni-builder 2 жыл бұрын
I wondered that some time ago. When I tried the Windows 3.1 file manager on Windows 10 (Microsoft recompiled it.)
@savagesarethebest7251
@savagesarethebest7251 2 жыл бұрын
Like how every ATM in Sweden seems to run on either OS/2 or NT 3.51.. 🤔
@lenni-builder
@lenni-builder 2 жыл бұрын
@@savagesarethebest7251 Really? I think they mostly run on XP/POSReady 2009 here in Germany.
@TremereTT
@TremereTT 2 жыл бұрын
Well my employers Programm started as DOS programm(Charakterbased WIMP) and became a Windows 95 Programm (Windows API based) and then an NT4 Programm It's not so difficult...It currently doesn't run below Windows2000 , yet we still have some technical debt ...like Unicode is about to be done...while it is should have been done since 2009....
@chasejones8302
@chasejones8302 2 жыл бұрын
It's Autism awareness month
@UncleKennysPlace
@UncleKennysPlace 2 жыл бұрын
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!
@davidtaylor6124
@davidtaylor6124 Жыл бұрын
As recently as about 2010 I found a 32/64 bit pointer bug in a 3rd party UI library we were using. I reported the bug to the vendor and then because I was the only real email address they had I started getting invoices :-\ Being a very large company it took me months of emailing various people to get someone else to take responsibility for them.
@ruler255
@ruler255 2 жыл бұрын
If you replace “Windows” with “Interface Manager” in “Windows 11”, it becomes “Interface Manager 11” Which ironically has a nice ring to it
@windestruct
@windestruct 2 жыл бұрын
Interface Manager XP
@lukemeissner1741
@lukemeissner1741 Жыл бұрын
@@windestruct Interface Manager Millennium Edition
@everythingtube172
@everythingtube172 Жыл бұрын
@@lukemeissner1741 *mistake edition
@tauon_
@tauon_ Жыл бұрын
Interface Manager NT 3.51
@DanTDMJace
@DanTDMJace Жыл бұрын
Interface Manager 98
@Stoyon
@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....
@raspberry1440kb
@raspberry1440kb Жыл бұрын
See if that application works with OTVDM (be sure to enable virtualization-based hardware accelration since by default it uses the 386 emulation core from MAME)
@TheSimoc
@TheSimoc Жыл бұрын
Yeah, software industry simply has not enough professionality anymore to make early as good quality software as back then. I refuse to even install Windows 10, but good that you are finding a way to run old good quality software on it.
@themightiness
@themightiness Жыл бұрын
That's really funny, my dad used to use a billing program for his medical practice that only worked with Windows XP back when I built him a new Windows 8 PC for his office. I ended up using a winXP VM for him and it worked really well for him while he needed that solution still.
@lawrencedoliveiro9104
@lawrencedoliveiro9104 Жыл бұрын
Or you could try running it on a modern system under WINE.
@sl-mb4rb
@sl-mb4rb 2 жыл бұрын
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.
@NCommander
@NCommander 2 жыл бұрын
Good catch. There's actually a few other places where it uses assembly for some string manipulation functions. It would be straightforward to rip the ASM for C code, but it would still probably be 1-2 hours of fiddling.
@johndododoe1411
@johndododoe1411 11 ай бұрын
​@@NCommanderIf you search deep enough on old SDK and DDK discs you are likely to find the last version of MASM to support 16 bit x86 assembly . Many MS DDKs over the past 23 years included the exact compilers used for building the OS itself .
@0xbenedikt
@0xbenedikt 10 ай бұрын
@@NCommander We need that cardfile port! I'd certainly love to watch another video.
@AnonymousFreakYT
@AnonymousFreakYT 2 жыл бұрын
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.
@NCommander
@NCommander 2 жыл бұрын
I've always been surprised they *didn't* do that for Portable Executable; they were very clearly planning multiple ports from day 1.
@etopowertwon
@etopowertwon 2 жыл бұрын
@@NCommander PE have MS-DOS stub which is a valid dos application. So at least you can do is to have application that works in both Windows and DOS. And I definitely remember seeing such apps in the wild.
@greggv8
@greggv8 2 жыл бұрын
@@etopowertwon IIRC those were limited to text only ones that could run in DOS as DOS apps but when launched within Windows were Windows apps despite looking like a DOS text app in a window. Probably have seen some running on point of sale systems during the years when POS was transitioning from DOS to Windows. If the cashier user software could be written and compiled once to run on both older DOS POS systems and newer Windows POS systems, it would reduce support headaches by having a single code base. That would also help with customer retention by supporting older hardware until the demands of retail stores outstripped the capabilities of older POS systems.
@KookoCraft
@KookoCraft 2 жыл бұрын
wouldnt that increase binary size
@samljer
@samljer 2 жыл бұрын
@@KookoCraft to an amount that is absurd for the .001% that wants it or would be affected by it. Microsoft did it right by supporting it OS side... the problem is they dropped that support. because again... .001% better to inflate the os 100mb, then every executable by 10mb.
@AnonymousFreakYT
@AnonymousFreakYT 2 жыл бұрын
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.
@null8507
@null8507 2 жыл бұрын
Linux is the answer
@subg9165
@subg9165 2 жыл бұрын
@@null8507 it may be an answer, but it's a boring one
@subg9165
@subg9165 2 жыл бұрын
@@AgeofReason well, ubuntu is bloated, and windows 8.1 is just a weird hybrid child of 7 and 10. arch can probably be decent if you manage to get everything set up completely perfect, and i'd say debian is an alright distro. but in this case, i was referring more to the usage of a less-commonly-used built of windows nt 4.0
@homemadejesus
@homemadejesus 2 жыл бұрын
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
@Alucard-gt1zf
@Alucard-gt1zf 2 жыл бұрын
Microsoft is very good with backwards compatibility They just don't want to waste the hours so 2 people are able to use this
@kidsarebadcheckmychannel949
@kidsarebadcheckmychannel949 2 жыл бұрын
with modern programs, many dynamic and static libraries would also need to be fixed as well, also the microsoft win32 api is extremely different now and many guis are also built with things like wxwidgets, and c++ standards are slightly different as well
@Maric18
@Maric18 2 жыл бұрын
its not that it cannot be done technically, it cannot be done profitably i havent watched the whole video yet, but if its 8 hours for a hello world, it would probably be thousands of hours for a game sized project lets assume its a rather optimistic 5000 hours and the cost of development is 50 bucks per hour thats at least 50k in expenditures for barely any gain
@Flashcardsinfo
@Flashcardsinfo 2 жыл бұрын
There are re3 and re3-vc to run GTA 3 and Vice City on modern systems. Of course it's possible.
@SimonBuchanNz
@SimonBuchanNz 2 жыл бұрын
That's game consoles, where, historically, the software is directly driving the hardware and each version of the hardware is commonly not even the same CPU instruction set, let alone memory model, graphical features, etc. Microsoft did the work and had a team working for years on getting old games running correctly on new systems at no additional cost to the user, while Sony and Nintendo instead required the developer to do the work to create (and sell) the port. The latter certainly makes more sense to investors, so I can hardly fault them for that, especially when it was never an expected feature before Microsoft.
@KurtWoloch
@KurtWoloch 2 жыл бұрын
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.
@SimonBuchanNz
@SimonBuchanNz 2 жыл бұрын
Well it's called the standard library for a reason 😉
@davidtaylor6124
@davidtaylor6124 Жыл бұрын
@@SimonBuchanNz Even so, that's definitely a win!
@SimonBuchanNz
@SimonBuchanNz Жыл бұрын
@@davidtaylor6124 yeah, though I have mixed feelings about the small size of the standard C library, it's certainly been very effective over the decades. Security issues (strcpy, scanf, etc) aside.
@stathissim
@stathissim 2 жыл бұрын
This video is really a job application for a senior software engineer
@NCommander
@NCommander 2 жыл бұрын
You know, I've spent the last five minutes trying to if you called me old in the most subtle way possible. Bravo :)
@stathissim
@stathissim 2 жыл бұрын
@@NCommander thank you for the great video
@trwijbenga
@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.
@deepdivedylan
@deepdivedylan 2 жыл бұрын
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! 😺
@GeorgeValkov
@GeorgeValkov 2 жыл бұрын
Windows 2003 supports Visual Studio 2010. I also wrote a tool for converting projects between 2010 2015 2017 2019.
@piecaruso97
@piecaruso97 2 жыл бұрын
You should get that ex Microsoft engineer that has a KZfaq channel to help you with this stuff, he used to develop with windows on risc platforms so he is the right guy for the job.
@alexdev5809
@alexdev5809 2 жыл бұрын
Daves Garage
@paullee107
@paullee107 2 жыл бұрын
Earned another sub - great content, I look forward to watching you do all the geeky things. Woohoo!!
@TheMAZZTer
@TheMAZZTer 2 жыл бұрын
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).
@NCommander
@NCommander 2 жыл бұрын
I didn't actually think about that, but yeah, I could have done that.
@whenindoubt_c4
@whenindoubt_c4 2 жыл бұрын
Great job on the video, it was interesting following the live stream and like a champ you made it through and complied it for so many OS. Definitely look forward to seeing you port more Ancient Windows applications to modern or specialized platforms. MIPS definitely doesn't look like fun.
@tassaron
@tassaron 2 жыл бұрын
I really appreciate that you edited the livestream into its own video instead of just cutting it up into a montage
@JanusDuo
@JanusDuo 2 жыл бұрын
Amazing! You've earned my sub sir. Can't wait for a sequel!
@fredskronk
@fredskronk 2 жыл бұрын
Although Win 11 for ARM can run x64 just fine; wouldn’t it be fun to get a native arm64 build? :)
@iDontProgramInCpp
@iDontProgramInCpp 2 жыл бұрын
I wonder how it performs. Can you run games for x86-64 well on ARM?
@someguy4915
@someguy4915 Жыл бұрын
@@iDontProgramInCpp Nope, either missing DX API or just lack or performance in general.
@leolucas4922
@leolucas4922 Жыл бұрын
@@iDontProgramInCpp yes, some games do run very well.
@afrenchcocorico164
@afrenchcocorico164 2 жыл бұрын
A second part would be cool ! Great video
@davidtaylor6124
@davidtaylor6124 Жыл бұрын
Well done, that was an interesting watch :) You seem to have a great deal old software on original media!
@Comm0ut
@Comm0ut 6 ай бұрын
Virtual machines are huge fun and hugely educational. Thanks for your work. Subscribed!
@jonasdatlas4668
@jonasdatlas4668 2 жыл бұрын
Oooh, is this the summary of the livestream I peeked into recently? Didn’t have the time then, but it sure seemed exciting.
@NomadicDmitry
@NomadicDmitry Жыл бұрын
What a great content! Thank you. So much enthusiasm right here. Very interesting.
@skeilnet
@skeilnet 2 жыл бұрын
Love the attention to details. Great video.
@randykitchleburger2780
@randykitchleburger2780 11 ай бұрын
Crazy dedication. Nice job
@SusanAmberBruce
@SusanAmberBruce 2 жыл бұрын
I think it's very cool what you have done here, I don't understand that well some of the technicalities but I appreciate the concept.
@asadava
@asadava 2 жыл бұрын
The commitment amazes me. This should be more popular.
@NaoPb
@NaoPb 2 жыл бұрын
Thanks for the compilation video. Good job on porting to all those systems. I hope one day my skills will have evolved in a way like that.
@SIG7Pro
@SIG7Pro 2 жыл бұрын
With practice, you can do cool stuff
@SolidSonicTH
@SolidSonicTH 2 жыл бұрын
Sounds like MS isn't making it easy by striking knowledge articles as the years roll by.
@laurdy
@laurdy 2 жыл бұрын
I actually disassembled a (very) simple windows 1.0 program, converted it to C and recompiled it to 32 bits
@andycristea
@andycristea 2 жыл бұрын
Very interesting and unique videos! Great channel!
@HarhaMedia
@HarhaMedia 2 жыл бұрын
Very interesting. And that's quite productive for "just" 8 hours I think!
@marsilies
@marsilies 2 жыл бұрын
Thanks for this condensed recap. I watched some of the live stream, but 8 hours was too much for me. This was much more accessible. For porting WineMine, Could you use the bitmap files from the version meant to run under Wine, instead of the Windows 1.x port?
@NCommander
@NCommander 2 жыл бұрын
I actually considered doing that, but I couldn't find the original Winemine source code when I looked for it. It's appartantly no longer part of WINE, and I was like "yeah, I don't want this to be me googling for 30 minutes"
@marsilies
@marsilies 2 жыл бұрын
@@NCommander I found a project called "Adapted WinMine Source for Teaching Win32 API Programming". The source file includes bmp and ico files. Maybe a follow-up video could include it? Also, from what I could find, the issue with the bitmaps seems to be Windows 1.x/2.x doesn't support DIB bitmaps, so the bitmap formats are different between 1.x/2.x and later versions of Windows.
@GeoNeilUK
@GeoNeilUK 2 ай бұрын
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!"
@whiterose7055
@whiterose7055 2 жыл бұрын
Kudos Sir, you have my sincere respect!
@georgecooke9010
@georgecooke9010 Ай бұрын
DUDE, YOU'RE A GENIUS!
@somedude5414
@somedude5414 Жыл бұрын
Kudos on the well balanced background music.
@silviocesarsilvaoliveira
@silviocesarsilvaoliveira 2 жыл бұрын
Fantastic video!!! 👏👏👏👏
@mkulak0
@mkulak0 2 жыл бұрын
Omg, you're awesome but live chat was sadistic :D
@lordrayven2086
@lordrayven2086 2 жыл бұрын
It's pretty crazy what you put through in this project. I'm very glad that somebody really did it, because i'm tired that windows come with a lot of crap that we don't use. If i had to buy an windows it will be you're windows project :)
@DanTDMJace
@DanTDMJace 2 жыл бұрын
Your
@hedw1gP
@hedw1gP 2 жыл бұрын
Loving the classic music backgrounds.
@billy65bob
@billy65bob 2 жыл бұрын
It might be cool if you could write something for LLVM, wherein it takes the original executable, and outputs a converted appropriate binary for your target platform. I know a few people have tried to do do some 16-bit emulators like this, but ran into issues. namely that the game was writing code into memory and expected to be able to branch to it and run it.
@vincei4252
@vincei4252 2 жыл бұрын
I have a Itanium I HPi2000 server that I bough new some time in the very early 2000's. To this day it is still the most expensive computer I'd ever spent my own money on. Last time I powered it up (10 years ago?) it would boot into NT but shut off after about 10-15 minutes. Most probably an issue in the power supply that may be easy to fix.
@NCommander
@NCommander 2 жыл бұрын
That sounds like thermal overheat production kicking in. You should be getting a BMC log information about it. If the plastic guides in the case aren't properly installed, it gets very toasty, and then shuts down.
@bettyswunghole3310
@bettyswunghole3310 2 жыл бұрын
I understood about 10% of this video...which I'm actually quite pleased about!
@z3my4l
@z3my4l Жыл бұрын
You paid so much effort that I just had to subscibe.
@DrewTNaylor
@DrewTNaylor 2 жыл бұрын
Seeing what the task of porting an app to the newest version of Windows from the oldest version was rather interesting. I do wonder if "every released version of Windows" mentioned at the end includes the mobile/phone versions. That'd be interesting.
@johndododoe1411
@johndododoe1411 11 ай бұрын
Yeah, the CE family of Win32 program file formats are fun to work with, but the debugging tools are sorely lagging . Windows Phony 7 (based on Zune) was a disaster of uselessness. Windows Phone 8 was a version of Desktop Windows artificially locked to running a useless subset of code that would be distributed through Microsoft's app store.
@DrewTNaylor
@DrewTNaylor 11 ай бұрын
@@johndododoe1411 Windows Phone 8 was basically just the NT kernel as far as desktop components go. 10 was more like a locked-down version, particularly with how limited Continuum was.
@TheBypasser
@TheBypasser Жыл бұрын
Pretty smooth it went I'd say! The only thing I don't really like is modifying things for a higher WinAPI version, this can be a source of typos and bugs. Instead I'd go with a wrapper-header approach, say instead of replacing MoveTo() with MoveToEx() everywhere I'd just write an inline MoveTo() calling MoveToEx() itself (won't really work in some other cases though).
@blai5e730
@blai5e730 Жыл бұрын
Late to the party, informative! I had a range of in-house 16-bit monitoring applications I'd developed in Delphi and ported them to 32-bit back in the day. Although Borland had done a fantastic job of allowing you to port existing applications, I'd made extensive use of functions directly calling the Windows subsystem. Suffice to say, it was still a chore to successfully recompile and I also ran into you problem of functions that didn't exist (or were renamed, took different size parameters etc.). One of my _"just for fun"_ projects I made was a Delphi custom control for the Task Dialog (introduced in Windows Vista) for Delphi 7. Besides supporting the underlying native dialog, I built a complete emulation of the dialog for earlier Windows OS's (well, Windows 2000 & XP) that necessitated coding *more* custom controls. Yeah, you could say I got rather carried away.
@morsikpl
@morsikpl 2 жыл бұрын
The only thing I would like to see here additionally is updated GUI to match those versions of Windows you're running those apps on ;) Would be cool to see correct GUI elements (size, fonts, etc.) in NT and 11!
@quackduckface
@quackduckface 2 жыл бұрын
Fonally a video about this, ive actually been wondering what it would take
@douglasrogers4675
@douglasrogers4675 2 жыл бұрын
I wonder if you could port it to windows RT? I also think that messing with Metro/UWP in general might be fun.
@drd2093
@drd2093 Жыл бұрын
I spent months for a company doing this for an industrial controller application. It was made of multiple modules that cooperatively multitasked and shared pointers over DDE. Had to reimplement 16-bit memory model and work around a lot of limitations. Good project though
@inachu
@inachu Жыл бұрын
Love videos on when new tech meets low tech. There used to be a program that was shareware back in the 90's that after installed It could take any of your programs and optimize them to run better with less memory leaks. Sadly they were sent a stop desist legal notice that they are voiding copyright law. lol so sad. great concept though.
@serraramayfield9230
@serraramayfield9230 10 ай бұрын
Name of the program?
@inachu
@inachu 10 ай бұрын
@@serraramayfield9230 No idea so long ago. sorry
@dirtydemon9723
@dirtydemon9723 2 жыл бұрын
Love your channel +1 sub
@le9038
@le9038 2 жыл бұрын
ok, that. was. beautiful!
@synthesoul
@synthesoul 2 жыл бұрын
This actually serves as a good template for programming your own applications.
@whamer100
@whamer100 2 жыл бұрын
that livestream was fun
@jordansean18
@jordansean18 2 жыл бұрын
My office has some applications that have been running on windows ME or XP for 20ish years now, and this video has renewed my confidence that we CAN make those apps run on windows 11!
@NCommander
@NCommander 2 жыл бұрын
If you've got the source code and if they're in a non-properitary programming language, its entirely doable. Best of luck!
@jordansean18
@jordansean18 2 жыл бұрын
@@NCommander in this case I think it's a matter of certain protocols available in older operating systems, but I'm confident I can find a way to accommodate them
@p2p104
@p2p104 2 жыл бұрын
Wow. Big respect!
@Gui2226
@Gui2226 Жыл бұрын
i can never feel bored on the classic window interface on windows
@adancalderon8915
@adancalderon8915 2 жыл бұрын
very cool work
@ALurkingGrue
@ALurkingGrue Жыл бұрын
Back in the 90s I ran a render farm on Windows NT on Dec Alphas.... Oh man was that all the pain.
@jayturner5242
@jayturner5242 Жыл бұрын
Can you do a set of ports where you update the UI elements to use the latest and greatest for each time period? (XP template uses XP style elements etc)
@01001000010101000100
@01001000010101000100 2 жыл бұрын
You don't have to DRAW assets when you just missing a converter. Just copy them from screenshots. I once had a problem with designing a simple Windows UI. I compared my app to a one built in Windows. I forgot which one now. My app looked dull because no icons. So I took the simplest path - I made a screenshots of the native app, moved the icons to GIMP, set transparency with color to alpha tool and bang, my app looked exactly like the native one without a single pixel drawn by hand. As for the timing - if whole process took you about 8 hours, this would probably take you no more than 30 minutes, downloading and installing GIMP included ;) Yes, I like GIMP ;) And I can't draw at all, I just use GIMP to build icons from images.
@sk.sourov
@sk.sourov Жыл бұрын
You are a hardcore programmer! Awesome!
@sigourneyhacks
@sigourneyhacks Жыл бұрын
This is a massive achievement. Hats off!
@helloitismetomato
@helloitismetomato 2 жыл бұрын
I'm gonna make an application for Windows 1.0 now. I used to run that as a kid (on a beautiful monochrome CGA screen) on our 8086.
@Th_RealDirtyDan
@Th_RealDirtyDan 2 жыл бұрын
Awesome video! On a barely related subject, what music did you use in the video? I know I've heard these all somewhere 😅
@NCommander
@NCommander 2 жыл бұрын
Epidemic Sound ... I *usually* include a list of tracks I used, but it seems I failed this time. I'll edit them in when I get a chance.
@JessicaFEREM
@JessicaFEREM 2 жыл бұрын
I love the red of the mips windows it looks devilish almost
@NCommander
@NCommander 2 жыл бұрын
I notably set it by hand, to make it look distinct.
@JessicaFEREM
@JessicaFEREM 2 жыл бұрын
@@NCommander It gives me a Ubuntu Satanic Edition vibe, like it's just normal windows but something's off
@punboleh7081
@punboleh7081 Жыл бұрын
Adding OS/2 to the mix was a nice touch. :) To try more processor architectures, Workplace OS could run 16bit Windows on PowerPC. Assuming you can get your hand on both a PowerPC and one of the few pre-releases of Workplace OS. And I'd love to see the OS/2 port, of course. One of my few regrets about my otherwise not too excessively wasted youth was that I didn't learn OS/2 programming back then.
@johndododoe1411
@johndododoe1411 11 ай бұрын
Pro tip: Get an MSDN documentation CD from before 1999 and use the included guide for porting OS/2 programs to Windows, only in reverse. Also remember that GDI was called GPI (even in Windows XP internals).
@punboleh7081
@punboleh7081 11 ай бұрын
@@johndododoe1411 Oh, that's a good idea. Thanks :) I was looking for information comparing the APIs, but I hadn't thought of looking at Microsoft's porting guides.
@piecaruso97
@piecaruso97 2 жыл бұрын
Now try to do that with an application from the very first next step os up to the latest macOS release, it’s surprising how a lot of the core api hasn’t really changed that much, and I know of people who marinated some applications this long that said they really hadn’t to do substantial changes to their code base
@SimonBuchanNz
@SimonBuchanNz 2 жыл бұрын
I don't think that's true anymore, if it was ever really true? I don't know about NextStep, but Mac OS 1 software was written in Pascal, officially. You should have been able to use C but it would likely not be, and some point you would have to port that to C. But let's say you've gotten to a more popular "classic" Mac OS 7, that would port to the OS X Carbon API pretty easily, since that was the intent (probably about the effort of windows 16 to 32bit at worst). The problem is,regardless of Next or Classic Mac, that the, as far as I know, only UI API of 10.0, Carbon was removed in OS 10.15 Catalina, and Carbon to its replacement Cocoa is *not* an easy port. You could probably also hit things like the permission hardening in various versions. Apple, for better or worse, have not been as backwards compatible as Microsoft.
@kaitlyn__L
@kaitlyn__L 2 жыл бұрын
@@SimonBuchanNz note the capitalisation and spacing, they’re actually only referring to OSX under the new name, not the Classic OS. And even core system UI elements like the colour and font picker are unchanged from NeXT, Quartz is a descendant of Display PostScript (and can still, with the right interpreter software, export the entire screen into a PSD with every window its own layer; just like NeXTSTEP could save and send a PostScript print document of the GUI to a connected printer) so I wouldn’t be surprised if some third party applications can still work with minimal tweaking. OSX has Swift now but last I checked (which was a few years ago) there was nothing stopping you from using legacy Objective-C code.
@SimonBuchanNz
@SimonBuchanNz 2 жыл бұрын
@@kaitlyn__L they said "from the first next step os..." so, no, I don't think they were saying from the first branded as "macOS" (which was only somewhere around 10.12ish, IIRC? Hardly impressive if it was what they meant) Yes, I'm aware of Quartz. It was introduced in OS 10.0, and isn't a common or sufficient API to target: it's a 2d graphics library, not a UI library. (Or you're talking about the compositor, thanks Apple for the overloaded name). You *might* be able to compile a very specific type of application with entirely custom UI components on 10.0 up to 11.x, but I'm very suspicious. On the other hand, it's very likely that many Windows 95 samples compile on current Windows (modulo compiler fixes in practice), and that Windows 1.0 samples need only minor changes. Again, this isn't *intrinsically* a good thing, the API is often quite bad in comparison when ignoring the history (11 parameters to CreateWindow!?), but it's the users that really pay the price: losing access to older software, vs worse quality on average for native apps. Not sure why you're bringing up iOS, it's lineage isn't that relevant or interestingly long here.
@fdmillion
@fdmillion Жыл бұрын
@@kaitlyn__L You see NeXTSTEP's influence all over modern macOS with so many of the APIs starting with "NS". I know Apple is strongly pushing people to Swift, but Obj-C still has its place - I liken it to how even Python programmers sometimes use C-based libraries for performance or compatibility reasons.
@Mario583a
@Mario583a 2 жыл бұрын
NCommander: 16-bit is one helluva code drug.
@NCommander
@NCommander 2 жыл бұрын
It all a matter of segments until someone shoots their eye out.
@ProgrammerMichaelAgarkov
@ProgrammerMichaelAgarkov Жыл бұрын
So awesome to see these decade old programs rewritten and compiled as native 64-bit programs!
@kevinlkoehler
@kevinlkoehler 2 жыл бұрын
What about starting from Visual Basic for DOS, another part of ms history I like is how the help file formats changed.
@softwave1662
@softwave1662 Жыл бұрын
Honestly that this can be done at all is amazing to me.
@CraigAB69
@CraigAB69 Жыл бұрын
I suppose you knew about the "Microsoft Developer Network" CDs over on Internet Archive? I use the January 1995 CD for API etc
@hikaru-live
@hikaru-live Жыл бұрын
For that MoveTo to MoveToEx migration et al, I would likely create a library reimplementing those removed functions using their counterparts.
@holderbee7811
@holderbee7811 2 жыл бұрын
Very neat.. you may get a lot of mileage out of covering TempleOS.. its existence still amazes me
@MarkHyde
@MarkHyde 2 жыл бұрын
This is just amazing - This summary video highlights reel is too much fun - even if YOU didn't have much of it making it. lol The vagaries of inter-generational backwards and cross platform support is interesting.
@NCommander
@NCommander 2 жыл бұрын
Actually about a third is new footage, and the remainder is heavily edited.
@RetroSwim
@RetroSwim 2 жыл бұрын
8:05 System.fon is a variable-width raster font, sadly. When you installed high-resolution video drivers on Win3x, they would often have a "Large Font" variant of the driver, which swapped system.fon for an equivalent with larger glyphs. Pretty sure 3.x, 9x , NT, 2K and even XP used raster fonts for all UI widgets, ClearType on XP notwithstanding. What a shamozzle! :D
@NCommander
@NCommander 2 жыл бұрын
You're supposed to make sure you have sizing to work regardless of fonts (this is one of the main reasons why German was one of the first languages that Microsoft releases betas for since statistically, it's one of the more verbose languages by character count.
@RetroSwim
@RetroSwim 2 жыл бұрын
@@NCommander For sure! I was mostly just surprised that they used a bitmap font by default for so long. (Although given what you covered in the video, maybe less surprised!)
@starfrost6816
@starfrost6816 Жыл бұрын
btw, that nov 1983 demo build is from september. someone found a disk of it, but it was ended via magnet
@N....
@N.... 2 жыл бұрын
I'm interested in what those ARMv4 target architectures were for, surely there wasn't a Windows Phone all the way back then?
@tigerstein
@tigerstein 2 жыл бұрын
Windows CE ran on Arm
@nonci6
@nonci6 2 жыл бұрын
Windows CE and Windows Mobile. Windows phones did exist and were completely different from the Windows Phone disaster.
@NCommander
@NCommander 2 жыл бұрын
Windows CE, aka the original Windows Mobile. I did a video about Windows CE (the HP Jornada) abliet with a SUperH vs. ARM processor.
2 жыл бұрын
@@nonci6 I wouldn’t call Windows Phone a disaster.
@greggv8
@greggv8 2 жыл бұрын
@@NCommander WinCE was an unfortunate contraction, which is likely why Microsoft soon changed the name to Pocket PC. WinCE 5 was still holding out as the OS on many GPS receivers, mainly running CoPilot or iGO or some proprietary navigation software. I managed to accidentally erase the software on a RightWay RW200. I figured out how to bypass the built in nav software by using the unit's built in option to change the navigation executable to launch the WinCE GUI instead. Got something with Chinese and poked the wrong button. Oops! Then I figured out how to install a version of iGO to the internal storage, which was good because the CoPilot it came with was terrible.
@GeoStreber
@GeoStreber 2 жыл бұрын
You should also try it on the PowerPC versions of NT 3.5 and 4.0
@strule
@strule 2 жыл бұрын
awesome stream
@manashejmadi
@manashejmadi 2 жыл бұрын
amazing!
@Fox_Mulder350
@Fox_Mulder350 2 жыл бұрын
That was pretty cool
@gregorymorse8423
@gregorymorse8423 2 жыл бұрын
Why not use #define macros to generalize all the porting, and make via conditional compilation a way to compile any source files on any compiler version and target bitsize. Even resource files and assembly files have support for it possibly at least in the more modern tools. But the macro approach makes your translation procedure much more well documented, generalized and faster, less mistake prone and flexible. Porting the interupt calls sounds like a by hand procedure when moving to 32bit. MASM is abandonware and I think you can safely find it as such. Using Borland for the visual assets is a great idea or even writing a tool to parse the old files and translate them yourself, given graphics files are not too complex. Anyway cool project, well done
@arunraman6630
@arunraman6630 2 жыл бұрын
Had the same exact idea regarding using macros
@bigalejoshileno
@bigalejoshileno 2 жыл бұрын
MASM is not "abandoned", but the old linker it is. Strictly speaking, all interrupt stuff can be moved just from binaries and linked executables, but no one knows enough about microsoft obscure win16/32 apps. One of the most annoying things are the timer calls from old apps, most are only delays and modern cpu's heat a lot wasting time in those loops.
@NCommander
@NCommander 2 жыл бұрын
Honestly, the main reason I didn't was because this topic was virtually undocumented. There are some pointers in the VC++4/6 documentation, but it wasn't compherensive so I had no idea how complex this would be. Also, for comparsion sake, its easier to see how each one is different on Git.
@gregorymorse8423
@gregorymorse8423 2 жыл бұрын
@@NCommander it's sad microsoft has not preserved the old MSDN documentation. I remember CDs and DVDs full of it years in the past. Now that the job is done, you are right, some diffing could easily convert the work you already did to macros and conditional compilation. In a way, unless still needing to support old Windows, it just muddies up the code. But just for the fun of having portable source, might be worth it, as well as to aid future projects
@gregorymorse8423
@gregorymorse8423 2 жыл бұрын
@@bigalejoshileno the old ml.exe is indeed what I meant. There are a bandonware sites with downloads of the latest ML supporting 16bit. Legal gray area but its not considered IP that microsoft is interested in at all anymore
@Alex-qf1pm
@Alex-qf1pm Жыл бұрын
Question: why not just create a new source/header combo with a bunch of ifdefs and write your own definitions, function wrappers etc? That way you could literally take original Win1.0 source code (as it was written back then), add a couple of files (or statically link to a prepaid porter) and compile for any platform you want? Seems doable. I might try it.
@JanWestin
@JanWestin 2 жыл бұрын
Bravo!
@magicalruin
@magicalruin 2 жыл бұрын
Didnt understand anything, but found it very entertaining ;)
@syscruncher
@syscruncher 2 жыл бұрын
Card file reminds me of an application from the IBM PCJr. I wish I remembered the name of it. Could be a clue as to why it’s written the way it is.
@MuffinHop
@MuffinHop 2 жыл бұрын
Cool project.
@deefdelic
@deefdelic Жыл бұрын
wow.. You would be the perfect man to fix the program "pinnacle game profiler".. That would be so awesome. ;)
@Daniel15au
@Daniel15au 2 жыл бұрын
Did you try running the executables as-is on Windows 10 32-bit? I seem to remember that someone got them working somehow.
@NCommander
@NCommander 2 жыл бұрын
Yeah, I did the original video on getting them working as it ;) (first retrotech video on this channel)
@Spongman
@Spongman 2 жыл бұрын
What?! You didn't cross compile to the mac using Visual C++ 4.0 for Macintosh?
@BarronKane
@BarronKane 2 жыл бұрын
You should backport something from Windows 10 to windows 1.0-3.0.
@synthesoul
@synthesoul 2 жыл бұрын
oof anticringe
@Bleats_Sinodai
@Bleats_Sinodai Жыл бұрын
Wish I had the big brain needed for this, I'd love to convert the software and drivers for my Tony Hawk's helmetcam to work in Win10/11. Funny enough, despite being horrible as a helmet cam, it works pretty decently as a webcam. But it was made for WinXP
@andersonklein3587
@andersonklein3587 Жыл бұрын
What's interesting about coding is how there's 1000 ways to do the same thing. This really shows how amazing Windows is, there are games and programs from Windows 95 that I can literally just double click and run, and it runs. Somehow, it just works. Whereas there's other programs made for just a different version of the same windows that will throw a fit if anything changed.
The Forgotten Secrets of the First Linux LiveCD (Yggdrasil Linux)
31:18
Эта Мама Испортила Гендер-Пати 😂
00:40
Глеб Рандалайнен
Рет қаралды 10 МЛН
Python for Beginners || Part-1 || History || English ||
59:34
Prakash talks
Рет қаралды 125
SLS Linux - Bringing a Softlanding from DOS in 1994 (Part 1)
15:31
Compiling Word for Windows from OS/2 1.2
17:37
NCommander
Рет қаралды 114 М.
Exploring A Bunch of Retro Programming Tools (Mailcall #1)
18:36
The Novell NetWare Experience
13:47
NCommander
Рет қаралды 46 М.
Installing Debian Linux 2.1 From 1999 Was A Painful Experience ...
22:41
Running DOS and Windows Without a Hard Drive From NetWare
17:40
NCommander
Рет қаралды 41 М.
The Mysterious Dutch Railways HP Jornada 680e
24:23
NCommander
Рет қаралды 37 М.
Распаковка айфона в воде😱 #shorts
0:25
Mevaza
Рет қаралды 1,2 МЛН
M4 iPad Pro Impressions: Well This is Awkward
12:51
Marques Brownlee
Рет қаралды 6 МЛН
Рекламная уловка Apple 😏
0:59
Яблык
Рет қаралды 807 М.
Я Создал Новый Айфон!
0:59
FLV
Рет қаралды 3 МЛН
СЛОМАЛСЯ ПК ЗА 2000$🤬
0:59
Корнеич
Рет қаралды 2,3 МЛН