Het artikel beschrijft de historische ontwikkeling van MS-DOS, beginnend bij de creatie van 86-DOS als een simpel alternatief voor CP/M. Hoewel Microsoft aanvankelijk inzette op XENIX (een UNIX-variant), bleek dit te zwaar voor de hardware van die tijd, waaronder de Intel 8086.
Toen de IBM PC XT verscheen, was een update van het besturingssysteem noodzakelijk. MS-DOS 2.0 bracht cruciale vernieuwingen met zich mee:
- Hiërarchisch bestandssysteem: De introductie van mappen en submappen, geïnspireerd door UNIX.
- Dynamische drivers: Een nieuw systeem voor het laden van hardware-drivers via een configuratiebestand.
- UNIX-utilities: De toevoeging van commando's zoals
find, more en sort.
Er ontstond een conflict tussen Paul Allen, die een volledige rewrite wilde voor meer functionaliteit, en IBM, dat het systeem zo klein mogelijk wilde houden. Uiteindelijk won Allen, wat resulteerde in een enorme technische sprong: de broncode groeide van slechts enkele bestanden in versie 1.25 naar 118 ASM-bestanden in versie 2.0.
De weg naar MS-DOS 2
Door Nemanja Trifunovic 8 augustus 2026
MS-DOS was een ongewenst kind. Tim Paterson ontwikkelde de voorganger, 86-DOS, alleen omdat hij dringend een besturingssysteem nodig had voor de op de 8086 gebaseerde CPU-board die zijn werkgever, Seattle Computer Products (SCP), al had uitgebracht. Hij wilde eigenlijk een "echt" multitasking-systeem maken en wist hoe dat moest, aangezien hij iets soortgelijks voor de Z80 had ontwikkeld als schoolproject [1]. Het systeem was echter snel nodig, dus spraken hij en zijn baas af om te beginnen met iets "snels en simpels" dat leek op CP/M van Digital Research — een minimaal besturingssysteem uit 1974 voor computers op basis van de Intel 8080 met zeer weinig geheugen.
De oprichters van Microsoft, Paul Allen en Bill Gates, bereidden zich ook voor op 16-bit microprocessoren. Niet verrassend besloten zij te wedden op een systeem dat populair was op 16-bit minicomputers: UNIX, ontwikkeld door Bell Labs van AT&T in het begin van de jaren 70 en gratis verspreid onder universiteiten. In februari 1980 kocht Microsoft de licentie voor de broncode van UNIX V7 van Western Electric (de productietak van AT&T). De naam was niet onderdeel van de licentie, dus kondigde Microsoft op 25 augustus 1980 haar eigen UNIX-gebaseerde product aan onder de naam XENIX.
Aanvankelijk waren Allen en Gates er sterk van overtuigd dat de draagbaarheid en flexibiliteit van UNIX ervoor zouden zorgen dat XENIX het standaardbesturingssysteem zou worden op 16-bit microcomputers. Toen ze de broncode van UNIX daadwerkelijk in handen hadden, bleek deze echter slecht aan te sluiten bij de huidige generatie microprocessoren, en met name de Intel 8086. Erger nog was dat het een enorme hoeveelheid geheugen verbruikte; het systeem was sterk gegroeid sinds Ken Thompson de eerste versie in 1969 ontwikkelde op een PDP-7 minicomputer. Kort daarna sloot Microsoft een overeenkomst met SCO, een klein bedrijf gespecialiseerd in UNIX-consultancy, om het grootste deel van het werk voor het porten van XENIX naar doelplatforms over te nemen.
Toen IBM haar plannen onthulde voor een personal computer op basis van de Intel 8088 die zou starten met slechts 16 KB RAM, was het duidelijk dat XENIX onmogelijk in zo'n beperkte omgeving paste. Of men dat nu wilde of niet, IBM had iets nodig als CP/M. Na een mislukte poging om een licentie hiervoor te verkrijgen bij Digital Research, keerden ze terug naar Microsoft, dat op haar beurt 86-DOS verwierf van SCP. Het besturingssysteem werd aangepast voor de IBM PC, enigszins opgepoetst, omgedoopt tot PC-DOS en in augustus 1981 uitgebracht. Microsoft behield de rechten om het aan andere klanten te verkopen onder de naam MS-DOS.
Toch bleef het knagende gevoel bestaan dat een single-tasking CP/M-kloon ontoereikend was voor de nieuwe generatie personal computers. Digital Research bracht in september 1981 het multi-user multitasking-systeem MP/M-86 uit en kondigde begin 1982 de single-user multitasking Concurrent CP/M aan. Als reactie bedacht Microsoft een plan voor een gelaagde aanpak van haar besturingssystemen:
- Onderaan: single-user/single-tasking MS-DOS;
- Bovenaan: multi-user/multitasking XENIX;
- In het midden: XEDOS, een single-user versie van XENIX.
Deze "piramide van opwaarts compatibele besturingssystemen" werd in januari 1982 aangekondigd in een redactioneel stuk in Byte Magazine.
XEDOS was blijkbaar meer dan alleen een marketingtruc; Microsoft en SCO hadden geprobeerd functies uit XENIX te verwijderen totdat het bruikbaar zou zijn op de PC's van die tijd, maar met weinig succes. In zijn boek Idea Man uit 2011 schreef Paul Allen: "Zelfs een afgeschaalde versie van Unix was te veeleisend voor de 8086-chip".
In de editie van juli 1982 van Byte analyseerde het tweede deel van een artikel dat MS-DOS en CP/M-86 vergeleek, onder andere de toekomstperspectieven van de twee toonaangevende 16-bit besturingssystemen. Voor CP/M-86 was het pad duidelijk: de volgende generatie, Concurrent CP/M-86, was in maart geïntroduceerd op de West Coast Computer Faire. Wat Microsoft betrof, spraken vertegenwoordigers over MS-DOS 2.0 zonder XEDOS te noemen. Het was duidelijk dat het plan was om MS-DOS uit te breiden met nieuwe functies en "een aantal op Xenix gebaseerde utilities", in plaats van XENIX af te schalen. Het opwaartse pad van MS-DOS naar XENIX was onduidelijk.
De wijziging in plannen vond plaats begin 1982, nadat IBM een nieuwe versie van DOS had aangevraagd voor het komende IBM PC XT-model. De XT was een bescheiden incrementele verbetering ten opzichte van de originele PC, en IBM communiceerde duidelijk dat ze verwachtten dat MS-DOS 2.0 een vergelijkbaar beperkt bereik zou hebben: ondersteuning voor de nieuwe ingebouwde harde schijf was eigenlijk alles wat ze wilden. Het klein houden van het besturingssysteem was voor IBM veel belangrijker dan het toevoegen van nieuwe functies. Bill Gates was bereid dit te doen, maar Paul Allen weigerde. Na overleg met de leidende DOS-ontwikkelaars Mark Zbikowski en Aaron Reynolds raakte Allen ervan overtuigd dat DOS een volledige rewrite nodig had om functies te ondersteunen die hij essentieel achtte om MS-DOS relevant te houden.
De belangrijkste vernieuwingen in MS-DOS 2.0
De eerste en belangrijkste functie was het uitbreiden van het FAT-bestandssysteem om harde schijven beter te ondersteunen. Allen wilde het vlakke bestandssysteem vervangen door een hiërarchische structuur, vergelijkbaar met UNIX, met een hoofdmap (root directory) en geneste submappen om bestanden op een schijf te organiseren. Een van de gevolgen hiervan was de introductie van file handlers in plaats van de CP/M-achtige File Control Blocks, hoewel die laatste werden behouden voor compatibiliteit.
De tweede functie was dynamisch laadbare drivers. MS-DOS 1.x gebruikte de monolithische BIOS-module om toegang te krijgen tot alle hardware. Elke wijziging, inclusief nieuwe randapparatuur, vereiste het hercompileren of in ieder geval het patchen van de BIOS. In MS-DOS 2.0 zou de BIOS worden uitgebreid om installeerbare drivers te lezen zonder dat er aanpassingen nodig waren. Er zou een configuratiebestand worden geïntroduceerd om de BIOS naar de geïnstalleerde drivers te verwijzen, die vervolgens naar behoefte werden geladen.
De derde grote functie was beperkte ondersteuning voor background print spooling. Het idee was om een kleine utility te leveren die op de achtergrond zou draaien en de printeroutput zou overnemen, zodat applicaties niet langer hoefden te blokkeren tijdens het verzenden van gegevens naar de printer. Volledige multitasking, zoals geïmplementeerd door UNIX of MP/M, werd niet overwogen voor MS-DOS 2.0.
Daarnaast werden verschillende functies toegevoegd die direct door XENIX waren geïnspireerd, waaronder find, more, sort en fc, samen met utilities die nodig waren om het nieuwe hiërarchische bestandssysteem te ondersteunen, zoals chdir en mkdir. Ook een vorm van I/O-omleiding (IO redirection) zou worden opgenomen, maar overduidelijk geen in-memory pipes, gezien de single-tasking natuur van MS-DOS.
Conflict met IBM
IBM was niet gelukkig met de ambitieuze plannen van Allen:
"Maar al snel bleek dat IBM er vastbesloten op was om DOS 2.0 zo dicht mogelijk bij de achttuizend bytes te houden die door DOS 1.1 werden gebruikt, om hun bestaande gebruikersbasis niet te verstoren. Als onze nieuwe DOS te veel geheugen zou verbruiken, vreesde IBM dat kleinere PC-systemen geen ruimte meer zouden overhouden voor sommige populaire applicaties. En ze waren niet gewend dat contractanten verder gingen dan hun specificaties, zelfs niet als dat betekende dat ze meer kregen voor hun geld."
— Paul Allen: Idea Man
Bill Gates was zeer terughoudend om IBM, die hij intern "de klant" noemde, tegen zich in het harnas te jagen. Na klachten uit Boca Raton kreeg hij een schreeuwpartij met Paul Allen (die IBM "de idioten" noemde) in het bijzijn van een geterroriseerde Mark Zbikowski. Uiteindelijk gaf Gates toe en liet hij het team van Allen de gewenste functies implementeren, zolang de leveringsdatum maar werd gehaald.
Het MS-DOS 2.0-team bestond uit slechts zes personen: Paul Allen, Mark Zbikowski, Aaron Reynolds, Nancy Panners, Chris Peters en Mani Ulloa [2]. Geen van de MS-DOS 1.0-ontwikkelaars (Tim Paterson en Bob O’Rear) was betrokken bij de ontwikkeling van versie 2.0.
De eerste versie van MS-DOS 2.0 werd op 8 maart 1983 uitgebracht met de IBM PC XT als PC-DOS 2.0. Het vereiste ongeveer 20 KB RAM, veel meer dan MS-DOS 1.0, waardoor beide versies een tijd lang gelijktijdig werden verkocht.
Technische analyse van de broncode
Om de schaal van de rewrite te begrijpen, kunnen we de bronbestanden van MS-DOS 1.25 en 2.0 vergelijken in de GitHub-repository voor MS-DOS. De vergelijking is niet volledig eenvoudig, omdat sommige utilities zoals chkdsk en sys in 1.25 alleen in binaire vorm beschikbaar zijn, maar in 2.0 wel met broncode. Desalniettemin vinden we in de 1.25-sourcetree slechts 7 bestanden, inclusief tools zoals de assembler (ASM.ASM), hex2bin (HEX2BIN.ASM) en een Z80-naar-8086-vertaler (TRANS.ASM). De volledige DOS-kernel broncode zat in één enkel bestand (MSDOS.ASM); hetzelfde gold voor de BIOS (IO.ASM) en COMMAND.COM (COMMAND.ASM).
De 2.0-sourcedirectory (nog steeds één enkele map) bevat 118 ASM-bestanden, plus documentatie. De kernel, BIOS en COMMAND.COM zijn opgesplitst over vele bestanden om hun structuur te reflecteren. Toch is sommige code direct overgenomen: routines zoals FNDCLUS, BUFSEC, BUFRD, BUFWRT, DATE16 en READTIME uit de originele MSDOS.ASM verschijnen met dezelfde namen, dezelfde commentaren en bijna dezelfde code in andere bestanden.
Bestanden genaamd XENIX.ASM en XENIX2.ASM bevatten de implementatie van enkele van de nieuwe commando's die van UNIX zijn geporteerd.
Niet alle functionaliteit van DOS 1.25 is overgenomen in 2.0. De assembler, de Z80-naar-8086-vertaler en HEX2BIN zijn alleen aanwezig in de originele MS-DOS.
***
Voetnoten: [1] Zie de blogpost van Tim Paterson: Design of DOS. [2] Volgens The MS-DOS Encyclopedia, die veel details bevat over de vroege ontwikkeling van MS-DOS.
De weg naar MS-DOS 2
Door Nemanja Trifunovic 8 augustus 2026
MS-DOS was een ongewenst kind. Tim Paterson ontwikkelde de voorganger, 86-DOS, alleen omdat hij dringend een besturingssysteem nodig had voor de op de 8086 gebaseerde CPU-board die zijn werkgever, Seattle Computer Products (SCP), al had uitgebracht. Hij wilde eigenlijk een "echt" multitasking-systeem maken en wist hoe dat moest, aangezien hij iets soortgelijks voor de Z80 had ontwikkeld als schoolproject [1]. Het systeem was echter snel nodig, dus spraken hij en zijn baas af om te beginnen met iets "snels en simpels" dat leek op CP/M van Digital Research — een minimaal besturingssysteem uit 1974 voor computers op basis van de Intel 8080 met zeer weinig geheugen.
De oprichters van Microsoft, Paul Allen en Bill Gates, bereidden zich ook voor op 16-bit microprocessoren. Niet verrassend besloten zij te wedden op een systeem dat populair was op 16-bit minicomputers: UNIX, ontwikkeld door Bell Labs van AT&T in het begin van de jaren 70 en gratis verspreid onder universiteiten. In februari 1980 kocht Microsoft de licentie voor de broncode van UNIX V7 van Western Electric (de productietak van AT&T). De naam was niet onderdeel van de licentie, dus kondigde Microsoft op 25 augustus 1980 haar eigen UNIX-gebaseerde product aan onder de naam XENIX.
Aanvankelijk waren Allen en Gates er sterk van overtuigd dat de draagbaarheid en flexibiliteit van UNIX ervoor zouden zorgen dat XENIX het standaardbesturingssysteem zou worden op 16-bit microcomputers. Toen ze de broncode van UNIX daadwerkelijk in handen hadden, bleek deze echter slecht aan te sluiten bij de huidige generatie microprocessoren, en met name de Intel 8086. Erger nog was dat het een enorme hoeveelheid geheugen verbruikte; het systeem was sterk gegroeid sinds Ken Thompson de eerste versie in 1969 ontwikkelde op een PDP-7 minicomputer. Kort daarna sloot Microsoft een overeenkomst met SCO, een klein bedrijf gespecialiseerd in UNIX-consultancy, om het grootste deel van het werk voor het porten van XENIX naar doelplatforms over te nemen.
Toen IBM haar plannen onthulde voor een personal computer op basis van de Intel 8088 die zou starten met slechts 16 KB RAM, was het duidelijk dat XENIX onmogelijk in zo'n beperkte omgeving paste. Of men dat nu wilde of niet, IBM had iets nodig als CP/M. Na een mislukte poging om een licentie hiervoor te verkrijgen bij Digital Research, keerden ze terug naar Microsoft, dat op haar beurt 86-DOS verwierf van SCP. Het besturingssysteem werd aangepast voor de IBM PC, enigszins opgepoetst, omgedoopt tot PC-DOS en in augustus 1981 uitgebracht. Microsoft behield de rechten om het aan andere klanten te verkopen onder de naam MS-DOS.
Toch bleef het knagende gevoel bestaan dat een single-tasking CP/M-kloon ontoereikend was voor de nieuwe generatie personal computers. Digital Research bracht in september 1981 het multi-user multitasking-systeem MP/M-86 uit en kondigde begin 1982 de single-user multitasking Concurrent CP/M aan. Als reactie bedacht Microsoft een plan voor een gelaagde aanpak van haar besturingssystemen:
- Onderaan: single-user/single-tasking MS-DOS;
- Bovenaan: multi-user/multitasking XENIX;
- In het midden: XEDOS, een single-user versie van XENIX.
Deze "piramide van opwaarts compatibele besturingssystemen" werd in januari 1982 aangekondigd in een redactioneel stuk in Byte Magazine.
XEDOS was blijkbaar meer dan alleen een marketingtruc; Microsoft en SCO hadden geprobeerd functies uit XENIX te verwijderen totdat het bruikbaar zou zijn op de PC's van die tijd, maar met weinig succes. In zijn boek Idea Man uit 2011 schreef Paul Allen: "Zelfs een afgeschaalde versie van Unix was te veeleisend voor de 8086-chip".
In de editie van juli 1982 van Byte analyseerde het tweede deel van een artikel dat MS-DOS en CP/M-86 vergeleek, onder andere de toekomstperspectieven van de twee toonaangevende 16-bit besturingssystemen. Voor CP/M-86 was het pad duidelijk: de volgende generatie, Concurrent CP/M-86, was in maart geïntroduceerd op de West Coast Computer Faire. Wat Microsoft betrof, spraken vertegenwoordigers over MS-DOS 2.0 zonder XEDOS te noemen. Het was duidelijk dat het plan was om MS-DOS uit te breiden met nieuwe functies en "een aantal op Xenix gebaseerde utilities", in plaats van XENIX af te schalen. Het opwaartse pad van MS-DOS naar XENIX was onduidelijk.
De wijziging in plannen vond plaats begin 1982, nadat IBM een nieuwe versie van DOS had aangevraagd voor het komende IBM PC XT-model. De XT was een bescheiden incrementele verbetering ten opzichte van de originele PC, en IBM communiceerde duidelijk dat ze verwachtten dat MS-DOS 2.0 een vergelijkbaar beperkt bereik zou hebben: ondersteuning voor de nieuwe ingebouwde harde schijf was eigenlijk alles wat ze wilden. Het klein houden van het besturingssysteem was voor IBM veel belangrijker dan het toevoegen van nieuwe functies. Bill Gates was bereid dit te doen, maar Paul Allen weigerde. Na overleg met de leidende DOS-ontwikkelaars Mark Zbikowski en Aaron Reynolds raakte Allen ervan overtuigd dat DOS een volledige rewrite nodig had om functies te ondersteunen die hij essentieel achtte om MS-DOS relevant te houden.
De belangrijkste vernieuwingen in MS-DOS 2.0
De eerste en belangrijkste functie was het uitbreiden van het FAT-bestandssysteem om harde schijven beter te ondersteunen. Allen wilde het vlakke bestandssysteem vervangen door een hiërarchische structuur, vergelijkbaar met UNIX, met een hoofdmap (root directory) en geneste submappen om bestanden op een schijf te organiseren. Een van de gevolgen hiervan was de introductie van file handlers in plaats van de CP/M-achtige File Control Blocks, hoewel die laatste werden behouden voor compatibiliteit.
De tweede functie was dynamisch laadbare drivers. MS-DOS 1.x gebruikte de monolithische BIOS-module om toegang te krijgen tot alle hardware. Elke wijziging, inclusief nieuwe randapparatuur, vereiste het hercompileren of in ieder geval het patchen van de BIOS. In MS-DOS 2.0 zou de BIOS worden uitgebreid om installeerbare drivers te lezen zonder dat er aanpassingen nodig waren. Er zou een configuratiebestand worden geïntroduceerd om de BIOS naar de geïnstalleerde drivers te verwijzen, die vervolgens naar behoefte werden geladen.
De derde grote functie was beperkte ondersteuning voor background print spooling. Het idee was om een kleine utility te leveren die op de achtergrond zou draaien en de printeroutput zou overnemen, zodat applicaties niet langer hoefden te blokkeren tijdens het verzenden van gegevens naar de printer. Volledige multitasking, zoals geïmplementeerd door UNIX of MP/M, werd niet overwogen voor MS-DOS 2.0.
Daarnaast werden verschillende functies toegevoegd die direct door XENIX waren geïnspireerd, waaronder find, more, sort en fc, samen met utilities die nodig waren om het nieuwe hiërarchische bestandssysteem te ondersteunen, zoals chdir en mkdir. Ook een vorm van I/O-omleiding (IO redirection) zou worden opgenomen, maar overduidelijk geen in-memory pipes, gezien de single-tasking natuur van MS-DOS.
Conflict met IBM
IBM was niet gelukkig met de ambitieuze plannen van Allen:
"Maar al snel bleek dat IBM er vastbesloten op was om DOS 2.0 zo dicht mogelijk bij de achttuizend bytes te houden die door DOS 1.1 werden gebruikt, om hun bestaande gebruikersbasis niet te verstoren. Als onze nieuwe DOS te veel geheugen zou verbruiken, vreesde IBM dat kleinere PC-systemen geen ruimte meer zouden overhouden voor sommige populaire applicaties. En ze waren niet gewend dat contractanten verder gingen dan hun specificaties, zelfs niet als dat betekende dat ze meer kregen voor hun geld."
— Paul Allen: Idea Man
Bill Gates was zeer terughoudend om IBM, die hij intern "de klant" noemde, tegen zich in het harnas te jagen. Na klachten uit Boca Raton kreeg hij een schreeuwpartij met Paul Allen (die IBM "de idioten" noemde) in het bijzijn van een geterroriseerde Mark Zbikowski. Uiteindelijk gaf Gates toe en liet hij het team van Allen de gewenste functies implementeren, zolang de leveringsdatum maar werd gehaald.
Het MS-DOS 2.0-team bestond uit slechts zes personen: Paul Allen, Mark Zbikowski, Aaron Reynolds, Nancy Panners, Chris Peters en Mani Ulloa [2]. Geen van de MS-DOS 1.0-ontwikkelaars (Tim Paterson en Bob O’Rear) was betrokken bij de ontwikkeling van versie 2.0.
De eerste versie van MS-DOS 2.0 werd op 8 maart 1983 uitgebracht met de IBM PC XT als PC-DOS 2.0. Het vereiste ongeveer 20 KB RAM, veel meer dan MS-DOS 1.0, waardoor beide versies een tijd lang gelijktijdig werden verkocht.
Technische analyse van de broncode
Om de schaal van de rewrite te begrijpen, kunnen we de bronbestanden van MS-DOS 1.25 en 2.0 vergelijken in de GitHub-repository voor MS-DOS. De vergelijking is niet volledig eenvoudig, omdat sommige utilities zoals chkdsk en sys in 1.25 alleen in binaire vorm beschikbaar zijn, maar in 2.0 wel met broncode. Desalniettemin vinden we in de 1.25-sourcetree slechts 7 bestanden, inclusief tools zoals de assembler (ASM.ASM), hex2bin (HEX2BIN.ASM) en een Z80-naar-8086-vertaler (TRANS.ASM). De volledige DOS-kernel broncode zat in één enkel bestand (MSDOS.ASM); hetzelfde gold voor de BIOS (IO.ASM) en COMMAND.COM (COMMAND.ASM).
De 2.0-sourcedirectory (nog steeds één enkele map) bevat 118 ASM-bestanden, plus documentatie. De kernel, BIOS en COMMAND.COM zijn opgesplitst over vele bestanden om hun structuur te reflecteren. Toch is sommige code direct overgenomen: routines zoals FNDCLUS, BUFSEC, BUFRD, BUFWRT, DATE16 en READTIME uit de originele MSDOS.ASM verschijnen met dezelfde namen, dezelfde commentaren en bijna dezelfde code in andere bestanden.
Bestanden genaamd XENIX.ASM en XENIX2.ASM bevatten de implementatie van enkele van de nieuwe commando's die van UNIX zijn geporteerd.
Niet alle functionaliteit van DOS 1.25 is overgenomen in 2.0. De assembler, de Z80-naar-8086-vertaler en HEX2BIN zijn alleen aanwezig in de originele MS-DOS.
***
Voetnoten: [1] Zie de blogpost van Tim Paterson: Design of DOS. [2] Volgens The MS-DOS Encyclopedia, die veel details bevat over de vroege ontwikkeling van MS-DOS.