Most people don’t know about Microsoft’s other multitasking operating system, MS-DOS 4.0 which was actually a version of MS-DOS 2.0 that was written in parallel with MS-DOS 3.x (DOS 3.x shipped while DOS 4 was under development, which is why it skipped a version). The MS-DOS 4 version described here was never shipped and instead a beefed-up version of 3.x was labeled 4.0 and shipped instead.The (never-was) DOS 4 was a preemptive real-mode multitasking operating system for the 8086 family of processors. It had a boatload of cool features, including movable and discardable code segments, movable data segments (the Windows memory manager was a version of the DOS 4 memory manager). It had the ability to switch screens dynamically – it would capture the foreground screen contents, save it away and switch to a new window.
I agree with the previous poster and am having a hard time buying this guy’s description. I clearly remember puchasing MS-DOS 4.0 when it came out in the late 80’s (88? 89?). I remember it being pretty much un-impressive; I think the big thing in it was code page support, and maybe a few extra minor add-on programs. I even remember talks of ‘user revolts’ and going back to DOS 3.3, or even 2.11 (the last ‘good’ version ;-). DOS 5 followed a few years later and was a much bigger deal. Maybe this guy’s story has something to do with the version of DR-DOS that came out in the early 90’s and had multi-screen capabilities. Dunno.
Obviously, the MS-DOS 4 this guy talks about never shipped. It’s just that instead of invensting more time on the real DOS 4, Microsoft shipped at the end a beefed up version of DOS 3.x instead. That’s the MS-DOS 4 you purchased and used, not the “real” one that this guy talks about.
he could be talking about 2 things some version of dos 4.0 that was never released, or the file manager that came with 4.0 (I think it was 4 that it came with) that did alow multitasking of dos apps as long as you had enough ram to do it(aka no virtual ram), but at the time any programs worth mutitasking took as much ram as you had running by themselfs and were still slow
This headline was confusing, and I bet alot of comments will follow just like above. I used DOS 3.x for a long time, then jumped to 6.22 before touching Windows. I didn’t understand this article and will save my time and not read it.
I remember using a version of DOS, DOS 4.1. However i dont remember anything like is described in the article. It did include support however for things called TSRs(?) a VERY crude form of multitasking.
Ah, the good old days, (when I was 6), now 10 years later, most people don’t even know what DOS was; actually that might be a good thing 😉
You should have done a little checking, before you posted to his blog accusing him of making the story up. He has worked for Microsoft for 20 years. He started there, on the DOS 4 project.
I didn’t realize that there was a multi-tasking version of MS-DOS ever designed. Clearly it never went anywhere outside MS. My bet was that there probably was some compatibility issues and nobody wanted to deal with them so MS didn’t added multi-tasking. I do know that there were multi-user versions of MS-DOS released in Europe, but the feature never appeared in the US version.
This story about DOS 4 is ridiculous. “preemptive real-mode multitasking operating system”…it’s simply impossible for a real-mode OS to be preemptive. Preemption requires the use of a hardware MMU, which the 8086 did not have. “Real-mode” is a term used for the legacy 8086-emulation mode which 286+ chips featured where the MMU is disabled. A system can either be preemptive or run in real-mode, not both. Total BS, all of it.
Feh. The story is uncorroberated BS.
Didn’t see any mention of working for MS on his site, and you’d certainly think he’d of mentioned this in his ‘article.’
the one who wrote the article was talking about a DOS version that was not released at all. It was supposed to be called DOS 4 but plans didn’t push thru so an “enhanced” DOS version 3.3 was put out instead as the MS-DOS version 4. So the DOS 4 that you guys said you bought was actually based on 3.x code.
that “DOS 4” never saw the light of day outside microsoft so we’ll never really know if this guy’s story is true or not.
DOS v4.0 was buggy beyond belief, this is why it was “unpopular”. If I remember correctly, it lasted about 6 months on the market. It was so bad that WindowsME is relegated to the same trash bin, and both have been know to be referred to in the same low-decible mumblings by IT techs.
Scott, I believe it was DOS v3.2 that broke the 32MB hard disk partition barrier.
jon, there were TSRs for most versions of 3.x as well – in fact that is what I ran my BBS with. And you are right, most people don’t know what DOS is/was – neither did MS IMHO. It was purchased by MS as QDOS (Quick and Dirty Operating System.) It never was a “Disk Operating System” as MS promoted, as it was as a Computer Operating System – a COS that really was a DOS… (As in, a QDOS without the “Q”.)
PJM, if you want to continue having the privillege of posting on OSNews, I suggest you talk better and do your research before you open your mouth.
So, here is more info about him working at MS and also about the version of MS-DOS 4 that was never shipped: http://weblogs.asp.net/exchange/articles/85057.aspx
Sorry, I hadn’t read the entire internet before posting….
Still hard to believe, especially since it’s uncorroborated. Maybe ms something was working on something a few people called msdos 4, but nobody else called it that or would.
This story about DOS 4 is ridiculous. “preemptive real-mode multitasking operating system”…it’s simply impossible for a real-mode OS to be preemptive. Preemption requires the use of a hardware MMU, which the 8086 did not have. “Real-mode” is a term used for the legacy 8086-emulation mode which 286+ chips featured where the MMU is disabled. A system can either be preemptive or run in real-mode, not both. Total BS, all of it.
That’s absolutely false. You can very easily write a preemptive system in real mode, you just don’t get an mmu for memory protection between processes. All you have to do is take the interrupt, save the old context (just a bunch of registers), swap to the new one and continue. No big deal. The whole kernel could probably fit into a kilobyte.
Just a question : why would you waste your time to write a message about an article that you don’t care ?
It didn’t use multitasking. Back then, all you could get on 80(1)86’s was “task switching with a page file”. But with 80286’s you could get purer task switching, where a page file wasn’t needed nessicarily. As for “multitasking”, not possible until the 80386, and that’s just all due, and all of what I say here, on processor execution arch of the time.
But, ms-dos in that era in general sucked. debug might have been the most fun. tandy’s deskmate was cooler. 😉
I think we’re all guilty of being smartasses and talking sh*t when we don’t know what we’re talking about, but PJM and “nycap.rr.com” guy have clearly put their foots in their mouths.
PJM, did you even notice that his site is on MSDN? http://blogs.msdn.com/larryosterman/ You realize that not everyone can post to Microsoft’s Developer Network, right? Rudely calling him a BSer doesn’t help to make you look less stupid either.
“This story about DOS 4 is ridiculous. “preemptive real-mode multitasking operating system”…it’s simply impossible for a real-mode OS to be preemptive. Preemption requires the use of a hardware MMU, which the 8086 did not have. “Real-mode” is a term used for the legacy 8086-emulation mode which 286+ chips featured where the MMU is disabled. A system can either be preemptive or run in real-mode, not both. Total BS, all of it.”
Gimme a break nycap.rr.com dude. Preemption just means a process or thread can be preempted in the middle of execution. Any CPU that can be interrupted with a clock is potentially capable of this. For example, you will find uCLinux which runs on MMU-less CPUs. http://www.uclinux.org/
Ok, Mr. Anonymous expert, explain the Commodore Amiga, old variations of Unix, and a whole bunch of embedded systems using various processors, including 80×86 without protected mode!
Geist is absolutely correct: in fact, chances are your more modern appliances (like your TV) uses an OS (primitive though it might be: it doesn’t need to be complex) use exactly what he stated.
And, if you doubt the knowledge/experience of me (I’ve written embedded software for a living) then don’t ignore Mr. Geist, who is currently writing his own OS, and used to work for Be, Inc.!
In short, your lack of knowledge of reality of what can be done and has been done makes it clear you are the one full of BS, regardless of whether or not Microsoft actually had the never-released variation of MS-DOS 4.0 as mentioned by this article.
I am amazed. The responses to this news item have revealed just how many know-nothings and reactionary 13 yr. olds there are lurking around this site. People not even reading the article before mouthing off, not even reading Eugenia’s summary….and then those whose “knowledge” of OS design was probably gleaned from PCGamer. Why do these people even read a site like OSNews? Do you even comprehend a 4th of it? Here is something closer to your speed- http://www.spongebob.com
what some people “know” about operating system development. If you don’t have actual experience, chances are you should keep your mouth shut instead of spewing what you think are facts. Well done Geist for the corrections, and good luck with NewOS.
That’s absolutely false. You can very easily write a preemptive system in real mode, you just don’t get an mmu for memory protection between processes. All you have to do is take the interrupt, save the old context (just a bunch of registers), swap to the new one and continue. No big deal.
And thus, the TSR was born. I’m not sure of when TSR support was introduced, but it was well before the ‘official’ DOS 4.0/4.01 was released. Anyways, lots of companies do research on really cool things and then throw it away, and maybe this is another example of that. What makes me incredulous is the ‘gee wiz’ factor of his writing and the mushing of the details. The fact that he provides details on DOS 2 and DOS 3 but fails to mention the ‘official’ DOS 4 is a warning trigger in my brain. Not a fatal flaw in his writing, but something that is suspicious.
Sorry, type in your post- I think you meant to point them here:
http://slashdot.org
Misinformation and blind zealotry will definitely find a home there. Probably at +5 Informative.
…v4.01 that shipped? i remember, that there was no version 4.0.
I think its true since I heared rumors about that too..
simply because the management decided that the world shouldnt get an OS that advanced yet.. it was better to upgrade in smaller steps and it was full of bugs thats what I heared a long time ago..
Larry Osterman’s (the author of the blog article) Bio. Covers his time _working on_ DOS 4.0 as well as what he worked on afterward:
http://weblogs.asp.net/exchange/articles/85057.aspx
“I am amazed. The responses to this news item have revealed just how many know-nothings and reactionary 13 yr. olds . Why do these people even read a site like OSNews? Do you even comprehend a 4th of it? Here is something closer to your speed- http://www.spongebob.com
I guess I’m amazed, too. What I think makes this article most interesting is not what some ancient OS can do, or what it could have done, but that its one of those trivial bits of history that fell by the wayside. Having been created under ever-so slightly different circumstances, it might have sent our world in a totally different direction. And I think that is the point for why it was noted here on this site. And I do find it interesting, even if I don’t fully understand OS design very much.
I have to wonder how many abandoned pieces of software or bits of code that, with the right attention, might have been that one creation that changed the world? Had Gates & Company not caught wind of that Disk Operating System that they bought for a song and then sold to IBM and others — what would the world be like today? What if Novell would have held onto Unix? Over the years, having witnessed first hand how much the computer has changed our lives, I see no reason why ordinary people shouldn’t be interested in this site. And, thanks, Frost, I really like spongebob.com. After Vietnam, I rode in MC club with an old biker that went by that name, but he wasn’t as cool.
This never-was DOS v4.0 sounds allot like QuarterDeck’s DESQview, wich I think was released around the same time. DESQview ran on top of MS-DOS (as a TSR?) and gave a multitasking interface in the same way as gnu-screen does.
Most people that have used dos probably know QEMM, wich came from QuarterDeck aswell…
Heh, good link. I guess truth is indeed stranger than fiction. I wonder what other interesting things Microsoft has thrown away over the years.
And thus, the TSR was born. I’m not sure of when TSR support was introduced, but it was well before the ‘official’ DOS 4.0/4.01 was released. Anyways, lots of companies do research on really cool things
TSR is not really much similar to preemtive multitasking. When you fire up a TSR you indeed to a context switch, but a preemtive multitasking kernel does that all the time many times a second, not just when a user presses the magic key. Plus preemtive multitasking implies task lists and rules to select the next task to switch (thus priorities).
One thing it does not imply is Memory Management Unit – highly desirable. but not strictly required. For instance AmigaOS ran beautifully as a preemtive OS with no MMU. Preemtion has to do with context switching, MMU is about memoty protection.
I used this when I was a summer student at STL (STC research labs) in 1988. Some of the ICL PCs had this. I can’t remember much about how it was different though.
TSR means Terminate and Stay Resident, a wide variety of DOS softwares did it ( even before before DOS 3.3 ), usually to extend some functionalities by hooking x86 interrupts : Mice drivers, ANSI.SYS, networking stacks, memory extenders, virtual disks using the memory beyond the @#€$% 640MB barrier on 286′ and 386′ computers, …
There is quite a difference between building a kernel on a MMU-less computer and making DOS programs preemptive. These program expected the whole memory to be available, and used segment registers in a way incompatible with multitasking memory allocation.
I rememember the awful tweaks for using 80286 protected mode( IBM AT era computers ). That CPU had a instruction to go into protected mode but no way back to real mode, which was needed for compatibility with mainboard BIOS, video drivers, … Some DOS extenders made on the fly CPU RESETs and hooked the RESET vector to go back into track…
Hi folks,
I actually liked the article. Don’t be put off by the kids, Larry. And Eugenia, more articles like this please!
Hi folks,
I actually liked the article. Don’t be put off by the kids, Larry. And Eugenia, more articles like this please!
I agree it’s nice to have inside/historic info on projects which were released or shelf’d from any company Microsoft, MAC, IBM etc..
“TSR is not really much similar to preemtive multitasking. When you fire up a TSR you indeed to a context switch, but a preemtive multitasking kernel does that all the time many times a second, not just when a user presses the magic key. Plus preemtive multitasking implies task lists and rules to select the next task to switch (thus priorities).”
Priorities are not strictly required. You can do Round Robin. (or round-robin…however it’s spelled…just remember that there’s a chubby little robin )
Great feature!
Thanks for pointing this out, Eugenia, and, please, more stories about secret and/or forgotten tech, thanks.
I think this version of Dos is documented in Ralf Brown’s interrupt list. There are a lot of interrupts documented there which belong to “Europian MS-Dos 4”. Somewhere else in the list Ralf writes that this “Europian MS-Dos” was a special multi-tasking verson of Dos shipped to Siemens.
My first computer was MSDOS 6.x, so is really some history I did not know…
But it does make us wonder… What if it really shipped? This will mean the sub-sequence DOS (5 and 6) should be based on it. We will be using a multitasking OS (for x86 system) much earlier. And who knows what else it would impact the x86 platform…
Anyway, this article is a nice read…
Take a read of these two books, if you would:
“Operating Systems : Design and Implementation” 1st Ed., Andrew Tanenbaum;
“Dissecting DOS : A Code-Level Look at the DOS Operating System”, Michael Podanoffsky.
The 1st ed of the Minix textbook talks about implementing a multi-tasking Unix-clone OS on the 8088 or 8086 – and bootstrapping itself off the IBM PCIX, as it turns out – IBM’s port of either 7th Ed or an early System V Unix to the PC.
Michael Podanoffsky talks about implementing a real-mode multi-tasking, real-time DOS clone on the 8088 – 80×86 machine. He even goes into detail about implementing things like reentrant process and file management, to wit:
“There is a popular belief that DOS is a single-process operating system.” ch 6, pg 271. Then he gets indepth into PSPs, etc. Recommended read.
i think i’m probably the only person who bought DOS 4 (the actual shipped one of course) and ran it happily for several years without any problems what so ever.
Priorities are not strictly required. You can do Round Robin. (or round-robin…however it’s spelled…just remember that there’s a chubby little robin )
That’s right…. yeah, that little bird is cool.
I’ve just remembered another cool example of preemtive multitasking in Real Mode from my MSDOS days: I’ve used JPI TopSpeed Modula-2 a bit back then – it had some Process module complete with source. Turned out it really isn’t that hard to do a preemtive multi tasking time scheduler, the key seemed to be some task lists (Qs) and a scheduler routine hooked up to PIC timer interrupt to do its magic.
Didn’t the 8087 Co-Processor module contain an MMU?
No, the 8087 didn’t include any MMU, that Numeric co-processor has the data bus plugged in parallel with the processor’s bus. For handling floating point operations, the processor 8086 determines the adressing mode and drives the address bus while the FPU 8087 decodes the instruction on the data bus, the FPU instruction are ‘ESCape’ opcodes for the CPU and are No Op for its internal registers.
That behaviour explain why there is no instruction for transferring data between the integer registers and the floating point registers without a memory access.
Motorola 68881 and 68882 FPUs for 68020 families were similar, bus wise.
I wanna play with it
I’m still of the belief that DOS was MicroSoft’s finest OS. Sure it was hassle to get some stuff running and still have enough memory free to play games etc. but it was good fun all the same. Trying to get something working in DOS was fun (like it is in Linux now) – in Windows it’s just annoying
There was a Brazilian OS called VirtuOS, that was exactly this: a multi-user, multi-tasking, security-enhanced MSDOS-clone, and it was so successful that it was used till 4-6years ago in our voting machines.
I don’t know anything about this microsoft product, but i did some work experience at a company called IMS who have an OS which sounds exactly like the guy’s description: http://www.imsltd.com/
due to my obsession with the history of OS’s and my great mood I’d give this article a 4-star rating 😉 good job!
Yeah – DESQview from Quarterdeck was together with QEMM Memory
Optimizer very well, i started Using Quemm with DESQView for
supporting a Multiline – analogue and ISDN-based PCBoard BBS
System for 24h/7days, and remember quite well before that and after these days squeezing every bit out of low mem, that i could get with the help of Qemm, and special very small CD Rom, Mouse and Keyboard Drivers. Later than, i switched to OS/2 Warp as my OS for my PCB – which DID *NEVER* crash while running multitask DOS Sessions with PCB – Win95 at the Time later on was a mess, and often totally fucked up, so i sticked
with OS/2 for Ages, and all was fine. DESQview was only a so called “task-switcher” which gave an App some timeslices, than switched to the next window, and so on…the Performance wasn’t that good like on OS/2 Warp.
Anyone remembering the great SIO Drivers for OS/2?
thomas
all that i can remember is it has a great defrag util;
great file manager (something like PC Tools, more or less Norton Commander with “nicer” UI (just my opinion));
it can access memory beyond 640 kB, natively;
its command line has “history”;
.. but with some reason, it need few patches to make it work with Windows 3.x .. but the patches seems to going out late, many people just leave it and move to Windows.
and as many people above sez,
at that time the latest MS-DOS is 5.0 i think.
but nobody use it, they just stick with MS-DOS 3.2.
since MS-DOS 5.0 is just too big to fit in a single double-density 5 1/2 diskette.
Very very popular one.
If you are a real gamer at late DOS era,
you should used to see this name when you load one of your favorite game.
DOS/4G
http://www.tenberry.com/dos4g/
🙂
To all the people who say this is BS. I already knew this, it is a fairly good documented piece of history. Many older DOS books mention MS-DOS 4.0. The point is that Microsoft released the next version as DOS 4.0.1 (or a comparable version number), which was based on the non-multitasking DOS as we know it. Many people called it MS-DOS 4, not knowing the huge difference.
An MMU is not required for multitasking. Without it, your tasks just all end up sharing the same memory space. Others in this thread have mentioned various multitasking systems on 8088/86 machines such as DesqView and Minix. Digital Research had MP/M-86 which was a multitasking CP/M-86 which eventually gained MSDOS compatibility. As with everything else at the time, DR wanted an obscene amount of money for it, so practically nobody would buy it in favor of the “free” PC/MSDOS that the dealer threw in with their computer purchase.
I was working at AT&T when that august company demonstrated and offered for sale, at an obscene price, Unix System V Release 2.0 for the IBM PC XT. No memory management unit there, but it did swap processes. Every user program had one text segment and one data segment for a total of up to 128K RAM, making it somewhat similar to a PDP-11 Unix with separate I & D spaces. I saw it running on an actual 4.77 MHz PC XT. It was… ssslllooowww, but that may have been as much due to the very slow hard drives used at the time as much as the slow CPU. Later, the Mark Williams company offered a similar product called COHERENT.
Eventually, of course, there were 286 Unices, including AT&T and Microport branded versions of System V and a version of COHERENT for 286, but these used 286 memory management and therefore don’t count in the non-MMU multitasking discussion.
>Preemption requires the use of a hardware MMU, which the 8086 did not have.
Just to name one, do you mean AmigaOS (which does not require a MMU) doesn’t provide preemptive multitasking ?
Heh, in fact Microsofts first real OS, XENIX, provided multitasking on a lowly 8086. No need for MMU there….
You can do multitasking w/o hardware support in most cases, it may be brain dead and slow/insequre… but you can do it.
Read all the comments from people. “This is unsubstantiated BS.” “A real-mode preemptive multi-tasking system is impossible.”
Meanwhile, the author of the story worked at Microsoft for 20 years and began work on DOS 4. Gotta love zealots who make themselves look like morons for all to see.
Microsoft introduced a great “feature” into Windows 3.x: it did a check to see which DOS it was running on (MS-DOS, PC-DOS, DR-DOS, etc). It it wasn’t running on MS-DOS, then it gave back some strange error and refused to run. The only reason for this check was to limit / force all Windows users to also purchase MS-DOS.
Caldera took MS to court over this back in the 90’s. They settled out-of-court for a couple hundred million. Too late to save DR-DOS, though.
The niftiest thing about DR-DOS was getting Windows 95 to run on top of it. Made Win95 so much smoother, and more stable than ever. Took a lot of tweaking to fool Win95 into thinking it was still running on top of MS-DOS, though. (Yes, Windows 95, 98, and ME still ran on top of MS-DOS.)
I remember using some DOS shell from central point software that could also do task switching, can’t remember the name. At the time i was amazed that i could play “titus the fox” while scanning the hard disk for virus at the same time LOL aaaaah the good old days
Where can I download it and see for myself? I would have to see for myself to buy it, and I would like to mess with it. (If its true)
Multitasking MS-DOS 4.0 is a very different beast than the one most people are familiar with – Multitasking DOS 4.0 only shipped to a single OEM that I’m aware of, and it shipped in 1986. Anything that people outside of France used was probably a different version of MS-DOS 4.0 – the name was recycled after PC-DOS 4.0 shipped.
And geist has it correct – DOS 4 was real mode and there was no memory protection but it did work.
the link to the article is not working, but this is interesting stuff. I started w/ MS-DOS 2 and I had this strong feeling that so much more could be done with MS-DOS. I was also an OS/2 fan. I think (if I could read the article) this would shed some light on how MS was already thinking about subverting OS/2 with the ‘unreleased’ MS-DOS 4. Certainly it was not far from that time that OS/2 was developed – and MS was never happy about the license w/ IBM.
there was PC-MOS, a copy of which I have – a multitasking, multiuser DOS clone that ran on machines from the humble XT to the advanced Compaq 386s.
And APW – as far as my knowledge of MS/IBM relations and this MS/PC DOS versus OS/2 versus Windows goes, MS started its (multitasking) MS DOS 4.0 first, then took the idea up with IBM, who decided to build it into their SAA (System Application Architecture) plans as a multitasking mainframe client, and renamed it OS/2 to fit in with their PS/2 hardware plans. At the same time, MS had its Windows development under way, and IBM had a similar windowing environment under development as well. Then, in the interests of portability, MS decided to work on a microkernel version of MS OS/2, which following the breakdown of the cosy MS/IBM relationship, was renamed as Windows NT 3.1.
As I always say, it would be a good idea for computer historians and programmers etc, for both parties to release the source code (under the MIT/BSD-style license) so people can ferret around and solve problems and shortcircuit needless meaningless – and vicious – legal battles.
Pre-emptive multitasking is certainly possible without an MMU. The Amiga OS did not have the benefit of an MMU for many years, yet it is a pre-emptive multitasking operating system. No, you do not get the benefit of memory protection, but that is not required for pre-emptive multitasking.
> Microsoft introduced a great “feature” into Windows 3.x:
> it did a check to see which DOS it was running on (MS-
> DOS, PC-DOS, DR-DOS, etc). It it wasn’t running on MS-
> DOS, then it gave back some strange error and refused to
> run.
That may be true for Win 3.0, but 3.1 ran quite happliy on PC-DOS 7…. PC-DOS 7 was the IBM version, it had a really cool DosShell, hires graphics, but only had ‘e’ or ‘edlin’ or something as it’s ‘edit’ replacement. It was an awful editor, to say the least. It also was king of flakey with some games… used to refuse to run some stuff, and it’s version of QUEMM (forget the name) sucked too.
Having said that, MS Dos 6 wasn’t anything too great either, not after a semester of UNIX on a VAX 😉 Boy did LINUX find it’s way on to my hard disk sharpish after that. (The first version using ELF too!!)