Way back in 1985 I was busy working on MS-DOS 4.0. MS-DOS 4.0 was a multitasking derivative of MS-DOS 2.0 (during 1985 we integrated the changes for MS-DOS 3.1 to MS-DOS 4.1).
It’s important to remember the difference between MS-DOS and PC-DOS. PC-DOS was an IBM OS offering which was largely written by Microsoft. MS-DOS was Microsoft OEM version of PC-DOS (sold to companies like Compaq and DEC). The MS-DOS releases always lagged behind the PC-DOS releases.
Back in the mid 1980s IBM called the shots in the development of DOS – DOS releases were directly tied to IBM hardware offerings because IBM wanted a new version of PC-DOS for each new piece of hardware they shipped. For example, when IBM shipped the PC/XT, they added a hard disk (with a whopping 10M storage capacity) and they asked Microsoft to add support for hard disks. The MS-DOS team decided that the best way to support a hard disk wasto add a *nix style hierarchical filesystem with PC-DOS 2.0. When IBM created the PC/AT, they also delivered PC-DOS 3.1 which added support for the IBM PC Lan Adapter, a broadband networking adapter that IBM shipped at the same time as the PC/AT. It’s also important to remember that MS-DOS wasn’t a complete PC OS experience. Instead Microsoft provided the core OS and the command interpreter and a couple of utilities. Other utilities (like mode.com) were provided by the OEM. This changed with MS-DOS 3.2 which included a full set of the utilities that were provided by IBM. For MS-DOS 3.3, we were working with IBM under the Joint Development Agreement and as such we were finally able to ship the actual binaries that shipped with PC-DOS thus making MS-DOS identical to PC-DOS in functionality – but that didn’t happen until 1987.
MS-DOS 4.0 was unique because it was developed “on spec” – IBM didn’t see a need for a multitasking version MS-DOS and didn’t have a new hardware offering on which to attach the product. But IBM did have the PC/AT which was an 80286 based processor and it didn’t have an OS that took advantage of that hardware. So IBM and Microsoft started negotiations to take the MS-DOS 4.0 code base and turn it into what eventually turned into OS/2. I ended up not working on the OS/2 effort, instead I worked on finishing up MS-DOS 4.0 for the OEM partners who had licensed MS-DOS 4.0.
For MS-DOS 4.0 I worked on the BIOS (IO.SYS or IBMBIO.COM on PC-DOS). In MS-DOS terms the BIOS was basically the binary which contained all the built-in drivers – keyboard, screen, printer, serial port.
Edit: Removed extra "Z" introduced because I wrote this with my laptop balanced on my knee and the "Z" kept creeping in especially when typing IZBM.
Over the summer of 1985, Valorie came out to visit me for an extended summer – she worked as a tester on the Windows and Word team testing printer drivers until she left in December. And in December I proposed to her and she accepted my proposal, we got married in January 1987 (cue violins at this point :)).
"it didn’t have an OZS"
Larry, please excuse a stupid question: What does the acronym "OZS" stand for? From my cultural background I have no idea what it might mean...
I really do like your "xx years s ago today" series of blogposts.
Best decision I ever made :-)
Definitely violin time...
You proposed in December 1985 and didn't get married until January 1987? That's a pretty long beta test.
Dave: It was a smidge over a year - if you've ever planned a wedding, that's not that long.
Not sure if it's relevant to this story, but I'm curious if you know... Why did DOS end up using "\" as the path separator instead of "/" like Unix did?
Thanks Larry. Now that I read that, it sounds familiar. I must have read it before and forgotten! Sorry for the redundancy ;-)
I wonder what if Multitasking MS-DOS 4.0 was designed from the beginning for the 286's protected mode? And when did the development of it start? I thought it was in 1982, when most MS-DOS applications was little more than ports of CP/M applications. And most CP/M applications did not do much direct hardware access (the most common was to the video). Michal Necasek was arguing there would be little market for an 286 version of MS-DOS back in 1985.
Yuhong: I wonder what if we designed MS-DOS for Pentiums sometime. But it's kinda pointless since the Pentium didn't exist when MS-DOS was implemented.
It wouldn't have mattered either - we couldn't use protected mode in MS-DOS because it would break too many applications. You're too young to remember OS/2 1.0 which attempted (badly) to implement a virtual machine on a processor which had no virtualization support.
"You're too young to remember OS/2 1.0 which attempted (badly) to implement a virtual machine on a processor which had no virtualization support."
Yes, I know about OS/2 1.x. In fact when I playing with a MS OS/2 1.3 VM, while trying to find and step through the code that execute on an interrupt that switches the processor into protected mode using FreeDOS debug that supported 386 instructions, I was able to hang and crash OS/2 several times, all of which required a reboot. I was later also able to also find and disassemble the code that switch the 386 back into real mode.
"It wouldn't have mattered either - we couldn't use protected mode in MS-DOS because it would break too many applications."
Read my original comment again - probably most MS-DOS applications back in 1982 was little more than ports of CP/M applications. And most CP/M applications did not do much direct hardware access (the most common was to the video, used by WordStar and such).
Yuhong, that's OS/2 1.3. I'm talking about 1.0, which came out in 1987. No GUI, just console support.
And if you're running it in a VM, you don't know how hideously bad it was.
"Yuhong, that's OS/2 1.3. I'm talking about 1.0, which came out in 1987. No GUI, just console support."
Yes, but OS/2 1.3 and OS/2 1.0 run DOS applications about the same way (that is why I said OS/2 1.*x*), so it doesn't matter. The only change was I think in 1.2 when some 386 support was added to save 32-bit registers and use the native 386-specific method to switch to real mode.