Тёмный

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

NCommander
Подписаться 41 тыс.
Просмотров 234 тыс.
50% 1

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

Наука

Опубликовано:

 

30 июн 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 436   
@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.
@Ufgbja
@Ufgbja 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.
@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 Год назад
​@@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 Год назад
@@NCommander We need that cardfile port! I'd certainly love to watch another video.
@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
@Stoyon
@Stoyon 2 года назад
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.
@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.
@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.
@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
@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! 😺
@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.
@paullee107
@paullee107 2 года назад
Earned another sub - great content, I look forward to watching you do all the geeky things. Woohoo!!
@skeilnet
@skeilnet 2 года назад
Love the attention to details. Great video.
@NomadicDmitry
@NomadicDmitry Год назад
What a great content! Thank you. So much enthusiasm right here. Very interesting.
@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.
@afrenchcocorico164
@afrenchcocorico164 2 года назад
A second part would be cool ! Great video
@JanusDuo
@JanusDuo 2 года назад
Amazing! You've earned my sub sir. Can't wait for a sequel!
@andycristea
@andycristea 2 года назад
Very interesting and unique videos! Great channel!
@randykitchleburger2780
@randykitchleburger2780 Год назад
Crazy dedication. Nice job
@davidtaylor6124
@davidtaylor6124 Год назад
Well done, that was an interesting watch :) You seem to have a great deal old software on original media!
@asadava
@asadava 2 года назад
The commitment amazes me. This should be more popular.
@tassaron
@tassaron 2 года назад
I really appreciate that you edited the livestream into its own video instead of just cutting it up into a montage
@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.
@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.
@silviocesarsilvaoliveira
@silviocesarsilvaoliveira 2 года назад
Fantastic video!!! 👏👏👏👏
@Comm0ut
@Comm0ut 7 месяцев назад
Virtual machines are huge fun and hugely educational. Thanks for your work. Subscribed!
@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.
@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.
@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
@georgecooke9010
@georgecooke9010 3 месяца назад
DUDE, YOU'RE A GENIUS!
@z3my4l
@z3my4l Год назад
You paid so much effort that I just had to subscibe.
@dirtydemon9723
@dirtydemon9723 2 года назад
Love your channel +1 sub
@whiterose7055
@whiterose7055 2 года назад
Kudos Sir, you have my sincere respect!
@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
@adancalderon8915
@adancalderon8915 2 года назад
very cool work
@somedude5414
@somedude5414 2 года назад
Kudos on the well balanced background music.
@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.
@piecaruso97
@piecaruso97 2 года назад
You should get that ex Microsoft engineer that has a RU-vid 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
@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.
@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 3 месяца назад
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!"
@bettyswunghole3310
@bettyswunghole3310 2 года назад
I understood about 10% of this video...which I'm actually quite pleased about!
@HarhaMedia
@HarhaMedia 2 года назад
Very interesting. And that's quite productive for "just" 8 hours I think!
@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.
@mkulak0
@mkulak0 2 года назад
Omg, you're awesome but live chat was sadistic :D
@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).
@hedw1gP
@hedw1gP 2 года назад
Loving the classic music backgrounds.
@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 Год назад
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 Год назад
@@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.
@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!
@le9038
@le9038 2 года назад
ok, that. was. beautiful!
@GeorgeValkov
@GeorgeValkov 2 года назад
Windows 2003 supports Visual Studio 2010. I also wrote a tool for converting projects between 2010 2015 2017 2019.
@BJNFNE
@BJNFNE Месяц назад
can you may send me the Link to the Tool?
@GeorgeValkov
@GeorgeValkov Месяц назад
@@BJNFNE search vs-convert httpstorm
@GeorgeValkov
@GeorgeValkov Месяц назад
@@BJNFNE even the hints get filtered here
@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.
@sk.sourov
@sk.sourov Год назад
You are a hardcore programmer! Awesome!
@quackduckface
@quackduckface 2 года назад
Fonally a video about this, ive actually been wondering what it would take
@p2p104
@p2p104 2 года назад
Wow. Big respect!
@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
@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 11 месяцев назад
Name of the program?
@inachu
@inachu 11 месяцев назад
@@serraramayfield9230 No idea so long ago. sorry
@manashejmadi
@manashejmadi 2 года назад
amazing!
@whamer100
@whamer100 2 года назад
that livestream was 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
@strule
@strule 2 года назад
awesome stream
@JanWestin
@JanWestin 2 года назад
Bravo!
@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 Год назад
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 Год назад
@@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.
@Fox_Mulder350
@Fox_Mulder350 2 года назад
That was pretty cool
@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.
@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.
@laurdy
@laurdy 2 года назад
I actually disassembled a (very) simple windows 1.0 program, converted it to C and recompiled it to 32 bits
@BJNFNE
@BJNFNE 21 день назад
Which program you ported to 32 bit?
@laurdy
@laurdy 15 дней назад
@@BJNFNE Clock, unfortunatly I've since lost it in a disk crash
@muvidz
@muvidz Год назад
very cool
@sigourneyhacks
@sigourneyhacks 2 года назад
This is a massive achievement. Hats off!
@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.
@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.
@MuffinHop
@MuffinHop 2 года назад
Cool project.
@softwave1662
@softwave1662 Год назад
Honestly that this can be done at all is amazing to me.
@ALurkingGrue
@ALurkingGrue Год назад
Back in the 90s I ran a render farm on Windows NT on Dec Alphas.... Oh man was that all the pain.
@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.
@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.
@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.
@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!)
@Gui2226
@Gui2226 Год назад
i can never feel bored on the classic window interface on windows
@synthesoul
@synthesoul 2 года назад
This actually serves as a good template for programming your own applications.
@tookitogo
@tookitogo 2 года назад
This was great! (Though I don’t think I’ve ever heard anyone who pronounces “DOS” as “dahz”!)
@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.
@magicalruin
@magicalruin 2 года назад
Didnt understand anything, but found it very entertaining ;)
@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.
@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)
@97Giorgos97
@97Giorgos97 2 года назад
Madlad.
@holderbee7811
@holderbee7811 2 года назад
Very neat.. you may get a lot of mileage out of covering TempleOS.. its existence still amazes me
@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)
@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
@starfrost6816
@starfrost6816 Год назад
btw, that nov 1983 demo build is from september. someone found a disk of it, but it was ended via magnet
@GeoStreber
@GeoStreber 2 года назад
You should also try it on the PowerPC versions of NT 3.5 and 4.0
@nightowl_ap
@nightowl_ap 2 года назад
The absolute madman
@NCommander
@NCommander 2 года назад
Guilty as charged.
@deefdelic
@deefdelic Год назад
wow.. You would be the perfect man to fix the program "pinnacle game profiler".. That would be so awesome. ;)
@Lugamo94
@Lugamo94 2 года назад
Out of curiousity, have you considered doing the same for ancient Linux and Mac OS software?
@ssl3546
@ssl3546 10 месяцев назад
Lol Linux requires no changes, you can literally bring a statically compiled executable from the earliest version to today and it will run fine. Linus has committed to never breaking userspace. Generally tools to build software are backward compatible as well.
@Algeriawindows69
@Algeriawindows69 Месяц назад
xclock from the 80's still runs perfectly fine in modern day x11 (maybe xwayland too but haven't tried)
@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
@JdeBP
@JdeBP Год назад
You missed a trick. There was actually a library that mapped the Win16 API onto 16-bit Presentation Manager, Micrografx Mirrors. You could have used that and built an actual (16-bit) OS/2 program.
@BarronKane
@BarronKane 2 года назад
You should backport something from Windows 10 to windows 1.0-3.0.
@synthesoul
@synthesoul 2 года назад
oof anticringe
@MykolaTheVaultDweller
@MykolaTheVaultDweller Год назад
Where did you find old visual studio 2005? Because it is hard nowadays to find older visual studios
@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
Далее
ШАР СКВОЗЬ БУТЫЛКУ (СКЕРЕТ)
00:46
Crazy Girl destroy RC CARS 👩🤪🚘🚨
00:20
Просмотров 4,4 млн
THINGS THAT SHOULDN'T EXIST: Internet Explorer for UNIX
21:08
Compiling Word for Windows from OS/2 1.2
17:37
Просмотров 115 тыс.
Why Windows Phone Failed
10:32
Просмотров 740 тыс.
CONCURRENCY IS NOT WHAT YOU THINK
16:59
Просмотров 88 тыс.
Exploring Sun Solaris 7 for SPARC
23:21
Просмотров 112 тыс.
Самый СТРАННЫЙ смартфон!
0:57
Просмотров 35 тыс.