The original version of Sim City was written for windows 3.x and included a bug that read memory that had been freed to the system. It worked in windows 3.x, even though it shouldn't, because that particular range of memory wasn't being used for anything else until the program was terminated.
In beta versions of windows 95 Sim City didn't work because the operating system allocated memory differently, and Sim City would crash as expected because of the bug in the program. Amazingly, in the final version of Win95 the original Sim City worked. Microsoft engineers had actually tested backwards compatibility with Sim city, located the bug, and worked around it in their sourcecode.
Now that's serious dedication to backwards compatibility.
There's a blog run by Raymond Chen, one of the engineers on the backwards compat team, which is about backwards compat and other arcane aspects of Windows:
The part about millions of people sending millions of checks to companies really hit me. Why are Americans still using checks? I haven't seen one in more than a decade.
Backward-compatibility for cases such as this can lead to arcane and more complex code within the OS, to difficulty with adding enhancements and creating fixes in the future, and creates larger target areas for folks that are attempting security attacks, and more complex testing.
Bug-for-bug application compatibility is not without costs.
I also remember that there was a version of <unnamed product> that rather than sending LVM_GETITEMTEXT would just read the ansi characters corresponding to the selected item during LVN_ITEMCHANGED off of a random location in the stack frame that they had "noticed" held the value. Of course, this eventually changed to a unicode string internally and broke WinZip... so the code that fired off this event would convert the unicode string to ansi and store a pointer in the stack.
I recall being very confused when I encountered this code many years after it had been implemented and had to spend a lot of time tracking through bug databases before discovering why the listview implementation was doing that.
I found it amusing how you avoided to mention the name initially only to lapse (I'm assuming it wasn't intentional) and inadvertently say it was WinZip later on.
Whoops! Yeah, I'd had WinZip in there originally, then I couldn't remember if this particular story had already come out. I've been gone from MSFT for a long time, but it was generally considered bad form when I was there to call out specific products publicly for their bad code.
but it was generally considered bad form when I was there to call out specific products publicly for their bad code
In a way, don't you think that by not allowing customers to know just how bad the code in the software they buy is, you're encouraging more of it?
If there are advantages to producing quick-and-dirty code that violates platform programming guidelines (some would call this sort of sloppy programming "Getting Work Done"), and there are no consequences (Microsoft knows how bad the code is but Winzip's customers don't), doesn't this exert a subtle market pressure that works against good developers who take the time and make the effort to do things right?
Similar issues came up for a lot of apps in the move to XP, and they wound up implementing a 'shimming engine' that would modify behavior of system calls for different apps to provied bug-for-bug compatibility.
Nitpick: the original version of SimCity was released for DOS before Windows 3.0 came out.
I never knew that MS went so far out of their way to fix a bug for a single game though - it seems that they were much more dedicated to backward-compatibility then than they are now.
You can take a G3 from Mac OS 7.1.2 (version which added PowerPC support) all the way to 10.4, which would take you from 1997 to 2005. I haven't done it, but I've read that getting 10.4 requires some finagling to achieve, so the last supported install you could do would be 10.3.9
Wonder if you could upgrade them, and then just rip out the hard drive and move it to another box. Wondering if 10.4 would be ok with one moment having a PPC and another moment having an intel processor.
If at OS X you take your previous computer and attach it in target disk mode or something (I'm not a Mac person) will it do anything with the old OS, perhaps use settings or allow apps to run under emulation or such.
Such quirks are partly what would make such things interesting.
Not in itself. The interesting bit would be playing with different UI's and testing backwards compatibility of settings and apps. Such as the OP video does between upgrades.
I wouldn't mind seeing the same video idea with Ubuntu. Somehow I don't think it will be long before a copycat does this :)
I never used the upgrade option. I'd always get a new hard drive with my upgrade (to get OEM price) and install clean, usually using the original hard drive as a slave. The next cycle that hard drive would become an archive on the new slave.
I have backed up files from 1996 on my home desktop.
I tried the upgrade-option exactly once. I can't remember whether it preserved my background color. But I do remember that all sorts of drivers got screwed, software installs would fail with obscure error messages, and it generally was nothing but problems until I finally wiped and re-installed.
I upgraded from NT4 -> 2000 -> XP without any major issues. AFAICT it was mostly just a file replacement process.
The DOSWin to NT upgrade path always seemed pretty flaky though. The demonstration cheated a bit by using a vanilla VMWare config; an actual PC would be loaded with crappy vendor drivers and startup software which complicated any upgrade.
Upgrading from the NT line to further along the NT line wasn't much of a problem IIRC. Upgrading from '95 to '98 to 2000 probably would be, if you'd actually used the machine. Registry rot from years of use would hinder this process.
The idea of a well-used registry from Win95 being still used in a 2000 or XP machine makes me shiver in horror.
I always did the upgrades once to see how they worked out but I would usually just go fresh install shortly after. (It's what I do now with Ubuntu upgrades). With the exception of Windows XP, and only because I had one of those disks that would only do an upgrade.
There might have been a way around that at the time but a fresh 98 install with XP on top was clean enough for the one or two times I did it.
Impressive, but I have to wonder how many compromises had to be made, and advancements abandoned, to keep apps like Reversi and Dosshell all the way up through Win7...
It's what their client base demands. It's part of their success. Think how many internal tools are relying on compatibility since they would be too expensive to rewrite. (I'm looking at you VB6)
A lot I imagine, which I think makes their decisions around WP7 and breaking backwards compatibility even more surprising (although I do agree with it).
I think it's one of those decisions where no matter what choice is made someone will complain about it.
There is a lot of people with the "if it works, don't touch it" mentality. MS would have sold a lot less if they had broke backwards compatibility.
It took me some years to internalize the benefits of "if it works, don't touch it", and I currently apply to a lot of home maintenance problems, which are outside my area of expertise.
* He mentions there is no multi tasking in dosshell. I'm not 100% sure about MS-DOS 5.0, but in ver 6.0 you could switch between tasks in dosshell [EDIT: this is also true for version 5.0, you can see the option at 1:13 in his video]. To switch tasks you need to first enable it through the "Options" menu ("Enable Task Swapper") and then you can either switch tasks by the all too familiar Alt+Tab or pressing Ctrl+Esc to bring up an ancient Task Manager (then titled "Active Task List").
* I may be mistaken, but in later service packs Win2000 had much better DOS emulation... Just mentioning it because he did test XP SP2 and later versions of Win2000 may have handled Doom2 better.
This video got me to dig out my old DOS book to make sure I remember correctly... ah, the memories :) Very interesting to see many dialogs we all know from Windows even in DOS (i.e. the Run and Associate File extension dialogs in dosshell)
In MS-DOS you could terminate a program, but make 64K of its memory resident. And then you could program a time interrupt handler to wake it up and do stuff periodically.
Weirdly enough my uncle actually knew the guy who wrote Trumpet Winsock.
He says he got burnt by piracy fairly badly: computer magazines were including the full version of his app on their cover disks all over the world, ISPs were handing his app to their customers, and his company was too small to stop them.
I contacted Peter and he got back to me. He seems to have settled well with how the cards fell and didn't seem worried about being compensated for things long past.
However, if any of you figure out some grand gesture to show appreciation please count me in. To me, he helped the web get started... An unsung hero. :)
yep. I'm still around. I live a quiet existence in not so sunny Hobart, Tasmania. Most unusual request - still thinking about it. Donations willingly accepted - just trying to think what kind of cool thing to provide in return for the generous donations.
When I was studying Computing at Tas Uni back in the mid 00s, they still mentioned Trumpet Winsock as their big success story. You should be proud of the impression you've left.
(Though now I think about it, were they annoyed at the commercialisation of a piece of research? Being a Uni, probably. Either way, you've left an impression!)
> just trying to think what kind of cool thing to provide in return for the generous donations.
It seems to me that people are donating because you've earned it. If you really feel a need to give back, perhaps the gift of education would be better. W. Richard Stephen's TCP/IP Illustrated is a great book, but looking long in the tooth these days. I'm sure you've forgotten more about TCP/IP than most of us have learned, but perhaps a book on TCP/IP by a guy that wrote a stack would be a good start?
I had Ethernet in my dorm room for a year with Windows 3.11 for Workgroups and never did get it to connect to the interweb. (I had some pretty clever helpers from the Harvard Computer Society, too. Nobody could figure it out.) One of my greatest days as a computer user was the day I installed Windows 95 and got Internet Explorer to load playboy.com—oh, and also fas.harvard.edu. :-)
(Of course, all good things must come to and end, and after Windows 98 was through I switched to Linux/Firefox and then to OS X/Firefox/Chrome.)
Well there was a fantastic feature of trumpet that windows lacked: If you had to reboot your computer (lol windows), the modem would remain connected, and trumpet could be re-enabled when the computer launched, you would be back up and running with internet, having not had to re-dial. Windows never did that, if you rebooted it was another phone call.
As far as Peter and Trumpet Software, they were based out of Hobart - After Windows implemented a default TCP/IP stack, much of his core business disappeared, they mucked around with building their own operating system for a while, turned Trumpet into an ISP, and in the end, his wife took him for most of what he had. Messy divorce/bankruptcy. Poor guy, he created a piece of software that I used for many years. For a long time, the trumpet implementation was better than the MS implementation, I still used it even when windows had built in PPP facilities.
Bought my first PC, an IBM 486DX-100. Preloaded Win95 display drivers were failing, so after a quick call to IBM I was instructed to download the newer drivers from the IBM Support BBS. After installing the drivers and a reboot, "Starting Windows95 For The First Time..." became my vision of terror. I remember watching the sliding bar on the bottom hoping that it wouldn't stop moving for too long.
The support tech I dealt with was super helpful but was confused by the mounting calls on the issue so after a few days he investigated and found that the BBS files were infected with the Monkey.3 MBR virus. The cool thing was that he called me directly and let me know the source of the problem and apologized on behalf of IBM.
> Try running a 16-bit application on Windows x64...
There's no reason for this to fail: dosemu runs 16-bit code on 64-bit Linux systems just fine. You just need to do full hardware emulation which, at this point, is neither difficult nor prohibitively resource-intensive.
There's actually a very specific reason for it to fail. There's an unfixable bug in the way that the Windows emulates 16-bit BIOS calls in the 8086 mode monitor. This is specific to Microsoft's implementation and is (if I remember correctly) an architectural issue (and not the only one). The options are rewrite an emulator or ditch 16-bit support in 64-bit.
I'm not saying that this is the only reason, but it is one. Emulation/Virtualisation is different, but gets the support requirement off Microsoft's books.
There's an even more specific reason. There is no 16bit support in 64bit Windows. It's probably the biggest backwards compat kill they did for 64bit Windows.
He applauds MS for continually supporting their legacy software... my opinion is that such legacy support is what continually hampers their rapid development
When it comes to viability as an infrastructure for business, downwards compatibility clearly trumps rapid development. The same can be seen with Java: having all the shiny, fashionable features the tech geek blogs are abuzz with may be nice... but having old, boring, clunky, uncool software that your business depends on continue to work is far, far more valuable.
I think this is an important point that most people forget. Most developers may be interested in doing the latest and greatest thing, but unless it can add value to an organization, then it is worthless.
Yes, but in the case of IBM mainframes, my grandmother (to use the oft-cited example) also doesn't have to deal with the inevitable issues that arise from this kind of rabid attachment to the idea of backward compatibility.
Granted, she also doesn't have to worry about whether or not her 12-year-old copy of freeware Whist software will work either.
Still, I think there is a big difference between a mainframe manufacturer taking on the burden and selling it to corporate customers and Microsoft forcing that burden onto millions of "normal" people
Me was not that much of an upgrade. It got rid of the MS-DOS mode. While it did change a few stuff and added a few features (new shell derived from Win2000, better ACPI/WDM/USB support, System Restore, etc...), it was still based on the 9x codebase which was unreliable and had many limitations.
Website wholesale various fashion shoes, such as Nike, Jordan, prada, also includes the jeans, shirt, bags, hats and decoration.
Personality manufacturing execution systems (Mes) clothing,
Grab an eye bag coat + tide bag
I'd actually have liked to see him to install more applications, perhaps Microsoft Office (circa 1990) and upgraded them as he went along too. I wonder if you can do Office for Windows -> Office 2010 as well.
130 comments
[ 3.6 ms ] story [ 166 ms ] threadI wonder whether malware from those early days would continue to run, or if newer versions of the OS would block it.
The original version of Sim City was written for windows 3.x and included a bug that read memory that had been freed to the system. It worked in windows 3.x, even though it shouldn't, because that particular range of memory wasn't being used for anything else until the program was terminated.
In beta versions of windows 95 Sim City didn't work because the operating system allocated memory differently, and Sim City would crash as expected because of the bug in the program. Amazingly, in the final version of Win95 the original Sim City worked. Microsoft engineers had actually tested backwards compatibility with Sim city, located the bug, and worked around it in their sourcecode.
Now that's serious dedication to backwards compatibility.
Joel Spolsky talks about it in this old article: http://www.joelonsoftware.com/articles/fog0000000054.html
http://blogs.msdn.com/b/oldnewthing/
Backward-compatibility for cases such as this can lead to arcane and more complex code within the OS, to difficulty with adding enhancements and creating fixes in the future, and creates larger target areas for folks that are attempting security attacks, and more complex testing.
Bug-for-bug application compatibility is not without costs.
I recall being very confused when I encountered this code many years after it had been implemented and had to spend a lot of time tracking through bug databases before discovering why the listview implementation was doing that.
In a way, don't you think that by not allowing customers to know just how bad the code in the software they buy is, you're encouraging more of it?
If there are advantages to producing quick-and-dirty code that violates platform programming guidelines (some would call this sort of sloppy programming "Getting Work Done"), and there are no consequences (Microsoft knows how bad the code is but Winzip's customers don't), doesn't this exert a subtle market pressure that works against good developers who take the time and make the effort to do things right?
I never knew that MS went so far out of their way to fix a bug for a single game though - it seems that they were much more dedicated to backward-compatibility then than they are now.
Like other commenter said, Windows/MS really goes all the way for backwards compatibility.
Also the settings would have only been preserved in Classic, but that's to be expected I guess.
Such quirks are partly what would make such things interesting.
Slackware goes back to 1993, is there an earlier Linux distro still in major use? (looks like there isn't - http://upload.wikimedia.org/wikipedia/commons/8/8c/Gldt.svg).
It might be more interesting with Linux to follow a WM?
I wouldn't mind seeing the same video idea with Ubuntu. Somehow I don't think it will be long before a copycat does this :)
I have backed up files from 1996 on my home desktop.
I tried the upgrade-option exactly once. I can't remember whether it preserved my background color. But I do remember that all sorts of drivers got screwed, software installs would fail with obscure error messages, and it generally was nothing but problems until I finally wiped and re-installed.
The DOSWin to NT upgrade path always seemed pretty flaky though. The demonstration cheated a bit by using a vanilla VMWare config; an actual PC would be loaded with crappy vendor drivers and startup software which complicated any upgrade.
The idea of a well-used registry from Win95 being still used in a 2000 or XP machine makes me shiver in horror.
There might have been a way around that at the time but a fresh 98 install with XP on top was clean enough for the one or two times I did it.
You may be interested in this technet article on the concept of Shims http://technet.microsoft.com/en-us/library/dd837644(WS.10).a...
Not only can you make your own, Windows ships shims with each release to provide compatibility support with popular user applications.
Edit: fixed some grammar.
I think it's one of those decisions where no matter what choice is made someone will complain about it.
It took me some years to internalize the benefits of "if it works, don't touch it", and I currently apply to a lot of home maintenance problems, which are outside my area of expertise.
A number of comments:
* He mentions there is no multi tasking in dosshell. I'm not 100% sure about MS-DOS 5.0, but in ver 6.0 you could switch between tasks in dosshell [EDIT: this is also true for version 5.0, you can see the option at 1:13 in his video]. To switch tasks you need to first enable it through the "Options" menu ("Enable Task Swapper") and then you can either switch tasks by the all too familiar Alt+Tab or pressing Ctrl+Esc to bring up an ancient Task Manager (then titled "Active Task List").
* I may be mistaken, but in later service packs Win2000 had much better DOS emulation... Just mentioning it because he did test XP SP2 and later versions of Win2000 may have handled Doom2 better.
This video got me to dig out my old DOS book to make sure I remember correctly... ah, the memories :) Very interesting to see many dialogs we all know from Windows even in DOS (i.e. the Run and Associate File extension dialogs in dosshell)
That was task swapping, not multitasking. All but the currently-executing task were interrupted, written out to disk, and expunged from memory.
In MS-DOS you could terminate a program, but make 64K of its memory resident. And then you could program a time interrupt handler to wake it up and do stuff periodically.
That's how some viruses worked btw :-)
http://en.wikipedia.org/wiki/Borland_Sidekick
Plus -- and this is the important thing -- PPP worked much, much better than 3.1 + trumpet winsock.
Some time around 98SE I was dual booting into BeOS, which was so damn fast it wasn't funny. But it wasn't to be.
And I remember browbeating Red Hat 3 into connecting to the internet as well.
He says he got burnt by piracy fairly badly: computer magazines were including the full version of his app on their cover disks all over the world, ISPs were handing his app to their customers, and his company was too small to stop them.
edit: I was not being sarcastic. I wouldn't mind chipping a few bucks if a hat is going around.
I found his name via a report at http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.40....
If this is the guy, what should we do? Should somebody ask him what he would like?
I'm going to suggest that he sets up a paypal account we can contribute to. I will also set up a website at lunch time, I think.
He's a bit surprised by the sudden attention and says he will be commenting on the thread soon.
However, if any of you figure out some grand gesture to show appreciation please count me in. To me, he helped the web get started... An unsung hero. :)
(Though now I think about it, were they annoyed at the commercialisation of a piece of research? Being a Uni, probably. Either way, you've left an impression!)
Welcome!
It seems to me that people are donating because you've earned it. If you really feel a need to give back, perhaps the gift of education would be better. W. Richard Stephen's TCP/IP Illustrated is a great book, but looking long in the tooth these days. I'm sure you've forgotten more about TCP/IP than most of us have learned, but perhaps a book on TCP/IP by a guy that wrote a stack would be a good start?
I've posted a HN ditty:
http://news.ycombinator.com/item?id=2282875
(Of course, all good things must come to and end, and after Windows 98 was through I switched to Linux/Firefox and then to OS X/Firefox/Chrome.)
As far as Peter and Trumpet Software, they were based out of Hobart - After Windows implemented a default TCP/IP stack, much of his core business disappeared, they mucked around with building their own operating system for a while, turned Trumpet into an ISP, and in the end, his wife took him for most of what he had. Messy divorce/bankruptcy. Poor guy, he created a piece of software that I used for many years. For a long time, the trumpet implementation was better than the MS implementation, I still used it even when windows had built in PPP facilities.
I see what you did there.
The support tech I dealt with was super helpful but was confused by the mounting calls on the issue so after a few days he investigated and found that the BBS files were infected with the Monkey.3 MBR virus. The cool thing was that he called me directly and let me know the source of the problem and apologized on behalf of IBM.
There's no reason for this to fail: dosemu runs 16-bit code on 64-bit Linux systems just fine. You just need to do full hardware emulation which, at this point, is neither difficult nor prohibitively resource-intensive.
I'm not saying that this is the only reason, but it is one. Emulation/Virtualisation is different, but gets the support requirement off Microsoft's books.
I may be a nerd, but by gosh, I do NOT watch Windows installation retrospectives for entertainment! :)
Isn't there a conference somewhere that specializes in boring topics?
Granted, she also doesn't have to worry about whether or not her 12-year-old copy of freeware Whist software will work either.
Still, I think there is a big difference between a mainframe manufacturer taking on the burden and selling it to corporate customers and Microsoft forcing that burden onto millions of "normal" people
EDIT: Clarification in opening sentence.
http://www.youtube.com/watch?v=vPnehDhGa14
I wonder if it's just luck or timing or this guy using spambots to upvote his submission.
This would have been the proper predecessor for Windows 2000 Professional.
Windows 2000 Professional was not part of consumer upgrade path - ME was.
Of course XP was was the successor to both.
╭══════════════╮ http://simurl.com/voblec ╰══════════════╯
╭══════════════╮ http://simurl.com/voblec ╰══════════════╯
Website wholesale various fashion shoes, such as Nike, Jordan, prada, also includes the jeans, shirt, bags, hats and decoration. Personality manufacturing execution systems (Mes) clothing, Grab an eye bag coat + tide bag
Air jordan(1-24)shoes $30
Handbags(Coach l v f e n d i d&g) $35
Tshirts (Polo ,ed hardy,lacoste) $15
Jean(True Religion,ed hardy,coogi) $30
Sunglasses(Oakey,coach,gucci,A r m a i n i) $15
New era cap $12
Bikini (Ed hardy,polo) $20
accept paypal and free shipping
╭══════════════╮ http://simurl.com/voblec ╰══════════════╯
╭══════════════╮ http://simurl.com/voblec ╰══════════════╯
╭══════════════╮ http://simurl.com/voblec ╰══════════════╯
╭══════════════╮ http://simurl.com/voblec ╰══════════════
╭══════════════╮ http://simurl.com/voblec ╰══════════════╯
╭══════════════╮ http://simurl.com/voblec ╰══════════════╯
╭══════════════╮ http://simurl.com/voblec ╰══════════════╯
╭══════════════╮ http://simurl.com/voblec ╰══════════════╯
Fascinating.
I'm glad the XP team fixed Doom 2.