The History of MS

Jeff Bailey writes about the last 26 years of Microsoft [1]. He gives Microsoft credit for “saving us from the TRS 80”, however CP/M-86 was also an option for the OS on the IBM PC [2]. If MS hadn’t produced MS-DOS for a lower price then CP/M would have been used (in those days CP/M and MS-DOS had the same features and essentially the same design). He notes the use of the Terminate and Stay Resident (TSR) [3] programs. As far as I recall the TSR operation was undocumented and was discovered by disassembling DOS (something that the modern MS EULAs forbid).

Intel designed the 8086 and 80286 CPUs to permit code written for an 8086 to run unchanged in “protected mode” on an 80286 (as noted in the Wikipedia page about the 80286 [4]). Basically all that you needed to do to write a DOS program with the potential of being run directly in protected mode (or easily ported) was to allocate memory by requesting it from the OS (not just assuming that every address above your heap was available to write on) and by addressing memory only by the segment register returned from the OS when allocating memory (IE not assuming that incrementing a segment register is equivalent to adding 16 to the offset). There were some programs written in such a manner which could run on both DOS and text-mode OS/2 (both 1.x and 2.x), I believe that such programs were linked differently. The term Fat Binary [5] is often used to refer to an executable which has binary code for multiple CPUs (EG PPC and M68K CPUs on the Macintosh), I believe that a similar concept was used for DOS / OS/2 programs but the main code of the application was shared. Also compilers which produce object code which doesn’t do nasty things could have their object code linked to run in protected mode. Some people produced a set of libraries that allowed linking Borland Turbo Pascal code to run as OS/2 16bit text-mode applications.

The fact that OS/2 (the protected-mode preemptively multi-tasking DOS) didn’t succeed in the market was largely due to MS. I never used Windows/386 (a version of Windows 2.x) but used Windows 3.0 a lot. Windows 3.0 ran in three modes, “Real Mode” (8086), “Standard Mode” (80286), and “Enhanced Mode” (80386). Real Mode was used for 8086 and 8088 CPUs, for 80286 systems if you needed to run one DOS program (there was no memory for running more than one), and for creating or adjusting the swap-file size for an 80386 system (if your 80386 system didn’t have enough swap you had to shut everything down, start Real Mode, adjust the swap file, and then start it again in Enhanced Mode). Standard Mode was the best mode for running Windows programs (apart from the badly written ones which only ran on Real Mode), but due to the bad practices implemented by almost everyone who wrote DOS programs MS didn’t even try to run DOS programs in 286 protected mode and thus Standard Mode didn’t support DOS programs. Enhanced Mode allowed multitasking DOS programs but as hardly anyone had an 80386 class system at that time it didn’t get much use.

It was just before the release of Windows 3.1 that I decided to never again use Windows unless I was paid to do so. I was at a MS presentation about Windows 3.1 and after the marketing stuff they had a technical Q/A session. The questions were generally about how to work around bugs in MS software (mainly Windows 3.0) and the MS people had a very detailed list of work-arounds. Someone asked “why don’t you just fix those bugs” and we were told “it’s easier to teach you how to work around them than to fix them“. I left the presentation before it finished, went straight home and deleted Windows from my computer. I am not going to use software written by people with such a poor attitude if given a choice.

After that I ran the DOS multi-tasker DesqView [6] until OS/2 2.0 was released. Desqview allowed multitasking well written DOS programs in real mode, Quarterdeck was the first company to discover that almost 64K of address space could be used above the 1MB boundary from real-mode on a 80286 (a significant benefit when you were limited to 640K of RAM), as well as multitasking less well behaved DOS programs with more memory use on an 80386 or better CPU.

OS/2 [7] 2.x was described as “A Better DOS than DOS, a Better Windows than Windows”. That claim seemed accurate to me. I could run DOS VM86 sessions under OS/2 which could do things that even Desqview couldn’t manage (such as having a non-graphical DOS session with 716K of base memory in one window and a graphical DOS session in another). I could also run combinations of Windows programs that could not run under MS Windows (such as badly written windows programs that needed Real Mode as well as programs that needed the amount of memory that only Standard or Enhanced mode could provide).

Back to Bill Gates, I recently read a blog post Eight Years of Wrongness [5] which described how Steve Ballmer has failed MS stockholders by his poor management. It seems that he paid more attention to fighting Linux, implementing Digital Restrictions Management (DRM), and generally trying to avoid compatibility with other software than to actually making money. While this could be seen as a tribute to Bill Gates (Steve Ballmer couldn’t do the job as well), I think that Bill would have made the same mistakes for the same reasons. MS has always had a history of treating it’s customers as the enemy.

Jeff suggests that we should learn from MS that the freedom to tinker is important as is access to our data. These are good points but another important point is that we need to develop software that does what users want and acts primarily in the best interests of the users. Overall I think that free software is quite well written in regard to acting on behalf of the users. The issue we have is in determining who the “user” is, whether it’s a developer, sys-admin, or someone who wants to just play games and do some word-processing.

7 comments to The History of MS

  • etbe

    As you will have gathered from this post I strongly disagree with most of Jeff’s comments about MS.

    But I don’t plan to bash Jeff, merely to disagree with him strongly and publish the reasons for disagreeing. So I have decided to reject a comment on this post which I think goes too far in criticising Jeff.

    The person who wrote the overly critical post about Jeff drew my attention to Jeff’s comment (on the blog post I reference) where he says “Luckily, when he dies from his cancer” about Steve Jobs. I agree that such comments are in poor taste.

  • Felipe Sateler

    I am not going to use software written by people with such a poor attitude if given a choice.
    While this is certainly a good idea, I’m not really sure it fits the current situation of MS. I am no insider, but as I gather from a person I knew from MS, things have changed internally quite a bit in the last decade. As an example, this guy told me that 8 or 10 years ago the _only_ functional requirement for MS software was to be easy to use. Today the situation has changed, as MS has actively changed development policies to create better software (in particular, this guy was commenting wrt to security).
    I’d say that in general MS software is really much better now than it was 10 or more years ago, maybe because they are no longer given that choice.

  • MSFT at its best has been on the side of the non-user or the novice user against the IT establishment — offering not-quite-good but disruptive tools such as Microsoft Access to make the application you couldn’t get from your IT department or vendor. They’ve been floundering now that they are the establishment.

    (The DRM problem is that they designed the Vista product when the CBDTPA DRM mandate was looming over the USA. If it had passed, the investment in cycle-sucking restrictions would have looked prescient.)

  • AlphaG

    The fact that OS/2 (the protected-mode preemptively multi-tasking DOS) didn’t succeed in the market was largely due to MS.

    Interestingly I would disagree and agree with this. MS wrote the first version and its dot releases for IBM. At some time MS and IBM had a falling out with strategy and other relationship itesm. At this time Windows NT was then started on, and as I understand it MS developers were not able to review/reuse the code they had written for OS/2. This was about the time Cutler came on board.

  • etbe

    Felipe: The entire ISO standardisation of document formats issue shows that MS has not changed. They have utter contempt for anyone who is unfortunate enough to buy their software.

    Don: Interesting idea that MS are floundering now that they are the establishment. Although I think it should be noted that they have been “the establishment” since about 1996 (when IBM gave up on OS/2) and that for a while after that time they did quite well. As for the DRM stuff, I find it difficult to imagine that selling products that customers don’t want would succeed long-term regardless of what Congress might do.

    AlphaG: I believe that the 1.x versions of OS/2 were all jointly written by MS and IBM right from the start and that they both had rights to use the code base. It was an interesting coincidence that some of the suckiest areas of code in OS/2 matched the sucky areas of NT. For example I was told that the OS/2 named pipe code was regarded as being too horrible to touch (it worked and no-one wanted to risk changing anything) and the NT 3.1 and 3.51 named pipe code was buggy (debug a process using named pipes and the machine would lock up).

    After the split IBM had access to Windows source code, they used modified Windows 3.1 source in developing OS/2. There was a reciprocal agreement with MS, I’m not sure of the scope but suspect that MS had some rights to use OS/2 2.0 source.

  • Felipe Sateler

    etbe: I was talking about their development process.

  • etbe — sure, but the basic Windows NT/MSFT Office cash cow was fundamentally done in 1996. The main successful technical project they have pulled off since then was Windows XP–finally getting the WNT underpinnings into the Windows 95 market. On DRM, there has always been an assumption in the PC industry that faster and faster hardware would make any software dumbassitude invisible, like supply-side economists saying you can grow your way out of any national debt.