MZ is back, baby! – Source to MS-DOS 4.0 / European DOS / Multi-tasking DOS drivers released!

MZ is back!

I’ts MS-DOS 4.0 Internal Work #2.06 – May 23, 1984, with copyrights from both IBM & Microsoft.

I don’t have time to make any comment much further other than having had been listing to people in on making this happen, and it’s been a long struggle to make this all happen, and it’s so amazing to see their hard work make it out into the wild!

DOS 4 is the basis of what would eventually become OS/2, just as I’m sure that it’s use of NE executables will reveal a far tighter integration with Windows, giving hints of the future that should have been!

Hopefully, like the LINK4 support I had stumbled onto a while back, we can build more robust applications!

Scott Hanselman

** EDIT So it’s just DOS 4.00, with a lot of information on EU/MT DOS4. There is now a blog post over on Scott Hanselman – Scott Hanselman’s Blog‘s talking about the details of this release!

Credit goes to starfrost, this was nearly a year in the works!

*** EDIT it’s now live over on, Open sourcing MS-DOS 4.0

Ive been able to bulid it from source, and I put up the changes on github (really minor changes)

neozeed/dos400: Microsoft DOS 4.00 (

5 thoughts on “MZ is back, baby! – Source to MS-DOS 4.0 / European DOS / Multi-tasking DOS drivers released!

  1. This is just amazing. I thought the ms-os2 drop was awesome but this is just brilliant. I mean yes, it’s DOS 4.0 but for context FreeDOS aimed at DOS 3.3 compatibility for ages. I’m over the moon and excited to get to play with this.

  2. I do hope that if people distribute their own builds of this, they’ll take out the code that requires hard drive partitions to have OEM IDs of “MSDOS”, “IBM” or “OS2” (see ). The check on version numbers that follows is also terribly wrong (it does a word comparison against “3.”, which doesn’t do what it should if the last-but-one character of the OEM ID isn’t a dot).

    There’s also an easy fix for the bug where DEBUG generates PSPs with the wrong CALL 5 address: add a couple of INC AX immediately before the MOV ES:WORD PTR [6], AX at line 463 of DEBUG.ASM.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.