Microsoft zet broncode MS-DOS 4.0 op GitHub

Microsoft en IBM hebben de code van MS-DOS 4.0 open source gemaakt. De broncode, images en documentatie zijn beschikbaar op GitHub onder een MIT-licentie. Dit betekent dat iedereen die wil de code kan delen, aanpassen of in hun eigen code gebruiken.

In een blogpost meldt Microsoft dat het openbaar maken van de code mede tot stand is gekomen dankzij de Engelse onderzoeker Connor ‘Starfrost’ Hyde. Om de relatie tussen DOS 4 en MT-DOS te documenteren kwam Hyde terecht bij voormalig Microsoft-cto Ray Ozzie, die floppydisks met onuitgebrachte bèta-binaries van DOS 4 in zijn bezit had.

Deze floppy's zijn terechtgekomen bij het Microsoft Open Source Programs Office, waar ze ingelezen zijn om de originele inhoud te digitaliseren. Microsoft-topman Jeff Wilcox en OSPO hebben zich vervolgens tot de Microsoft-archieven gewend en uiteindelijk de volledige broncode van MS-DOS 4.00 ontdekt. Deze code is nu beschikbaar op GitHub, samen met de gevonden bèta-binaries, documentatie en images. Sinds 2018 zijn daar ook versie 1.25 en 2.0 terug te vinden.

MS-DOS 4.0 is gebaseerd op MS-DOS 2.0 en werd aangekondigd in 1986. Deze versie van het os moest beter geschikt zijn voor multitasking dankzij het gebruik van de session manager. Hierdoor kan het systeem via sneltoetsen schakelen tussen maximaal zes ‘actieve’ programma’s.

MS-DOS 4.0

Door Idriz Velghe

Redacteur

26-04-2024 • 21:10

84

Submitter: TheVivaldi

Reacties (84)

84
84
44
1
0
21
Wijzig sortering
Was MS-DOS 4.0 niet die versie die stikte van de bugs en zo snel mogelijk een opvolger moest krijgen? Of was dat versie 3.0? Zo lang geleden allemaal... Hoe dan ook, ik vermoed dat DOS pas echt van de grond kwam vanaf versie 5.0 en op zijn hoogtepunt was met versie 6.21.
Euh, nee hoor. Vanaf versie 3.3 echt wel een fijne omgeving voor die tijd en passend bij de staat van de hardware in die jaren.
Klopt, MS-DOS 3.3 was de eerste zeer populair geworden (commercieel gezien) DOS versie van Microsoft.

Deze had ook hele belangrijke nieuwe zaken die het ondersteunde :
Version 3.3 (OEM) – First version to support 3.5-inch, 1.44 MB floppy drives and diskettes, extended and logical partitions, directory tree copying with XCOPY, improved support for internationalization (COUNTRY.SYS), networked file flush operations
Zie Wikipedia: MS-DOS

Versies voor 3.3 waren veel beperkter qua wat ze ondersteundrn.
Maar nog steeds beperkt tot partities van 32 MB, terwijl er in versie 3.3 wel ondersteuning voor FAT16 was. Iedere partitie tussen 16 en 32 MB werd dan ook in FAT16 geformatteerd. Alles daaronder was FAT12. DOS 4.00 was extreem buggy en er was een (aparte) Multitasking versie van MS-DOS 4.00. MS-DOS 4.00 kon wel partities tot 2 GB maken. Veel gebruikers bleven MS-DOS 3.30 of MS-DOS 3.31 gebruiken, omdat de RAM footprint ook kleiner was. Pas vanaf DOS 5.0 kon je op de 80286 delen in HMA laden en op de 80386 gehele TSRs en MS-DOS in de 640-1024 KB regionen. Vanaf MS-DOS 3.30 maakte RAMDRIVE.SYS ook gebruik van LOADALL om je ramdrive ergens bovenin te krijgen. LOADALL was een hack om in Real Mode toch alle RAM te gebruiken boven 1 MB. RAMDRIVE was een van de DOS applicaties die daar gebruik van maakte.

[Reactie gewijzigd door ibmpc op 24 juli 2024 03:44]

Dan is dit dus een uitgelezen kans voor de open source community om MS-DOS 4.00 beter te maken
Zij die daar tijd aan willen besteden hebben dat allang gedaan met https://freedos.org/
ik hqd vroeger een 386 er tandon computer met svga scherm erbij.
En dat liep op msdos origineel 4.1.
later heb ik msdos 6.0 erop gezet.samen met windows 3.11.
Lang geleden dat ik de afkorting TSR voor het laatst ben tegengekomen!
Dat het vanaf 5.0 beter werd is waar ja. Deze 4.0 versie is best bijzonder, want IBM heeft er nog veel tijd in gestoken. En aanvankelijk was ook het idee om een multi task versie uit te brengen MT-DOS, dat is dus NIET deze source code. Die kan Microsoft zelf schijnbaar ook niet vinden.

Wat wel leuk is, is dat de PR, vanaf zijn boot, gemaakt is door Mark Zbikowski Leuk weetje, door hem beginnen alle dos/windows executables met M(ark)(Z)bikowski als eerste twee karakters.

[Reactie gewijzigd door OMX2000 op 24 juli 2024 03:44]

Was het niet zo dat Microsoft zijn versie 4.0 ontwikkeld had gebaseerd op MS-DOS 2.0, de Microsoft variant is Multitasking.

En IBM had IBM DOS 4.0 gebaseerd op DOS 3.0 welke niet multitasking was. IBM heeft deze versie zelfs laten vallen omdat ze wilde concentreren op OS2.

Het was Microsoft die tijd en moeite stak in het door ontwikkelen.

Zo herinner ik het me.
Microsoft-topman Jeff Wilcox en OSPO hebben zich vervolgens tot de Microsoft-archieven gewend en uiteindelijk de volledige broncode van MS-DOS 4.00 ontdekt.
En aangezien er M/T MS-DOS staat op de diskettes, zou je toch zeggen dat het gaat om de Microsoft MT-variant. Ik zou het raar vinden als de code van IBM DOS 4 in het archief van Microsoft zou zitten.

/EDIT:

Volgens Wikipedia was het idd zo gelopen:
Wikipedia: MS-DOS 4.0 (multitasking)
Wikipedia: MS-DOS

[Reactie gewijzigd door TechSupreme op 24 juli 2024 03:44]

Quote vanaf de blogpost :
Jeff Wilcox and OSPO went to the Microsoft Archives, and while they were unable to find the full source code for MT-DOS, they did find MS DOS 4.00, which we're releasing today, alongside these additional beta binaries, PDFs of the documentation, and disk images. We will continue to explore the archives and may update this release if more is discovered.
Het gaat dus, tot nu toe, niet om de volledige source code van de MT variant. Wel de binaries, en de gescande documentatie als pdf's.

Het is best een puzzel. MS DOS 2.5 is uitgebracht als DOS 3.0. DOS 3.0 was vertraagd, en werd uitgebracht als 4.0. Dat is, als ik het goed begrijp, de versie die IBM ontwikkelde. Dus dat was MS DOS 4.0 (IBM PC DOS). Op de MS-DOS wiki pagina hebben ze het erover dat 4.01 "rewritten" is en uitgebracht onder MS DOS label. Whatever "rewritten" betekent, alleen een paar teksten vervangen of echt hele stukken code?

De wiki link/pagina naar DOS 4.0 MT die je linkt is ook een beetje verwarrend. De lijst aan externe commando's daar zijn volgens mij niet degene die met DOS 4.0 (MT) werken. De MT variant had eigenlijk een hele andere naam moeten hebben. Is eigenlijk een hele andere branch, die naar mijn weten niet doorontwikkeld is. Ik vermoed dat er wel dingen zijn gebruikt in het latere Windows.

Anyways de blogpost van is zeker interessant, en hij is nog aan het graven hoe nu de relatie is tussen de gewone DOS en de MT variant.
Ik vond 3.20 erg fijn werken... Ik kreeg wel IBM-DOS 5.00 maar greep toch steeds terug op 3.20!
Ik denk dat je in de war bent met versie 5.0, die had zoveel bugs dat ze een rerelease deden met versie 5.0a. Te veel om op te noemen.

In 6.0 kwamen met de disc compression tool DBLSPACE en daar zat ook een bug in waardoor je je data kwijt kon raken, dat werd in 6.2 gerepareerd. Even later in 6.21 weer eruit gehaald vanwege een of andere rechtszaak om vervolgens in 6.22 terug te keren als DRVSPACE.

Dat zijn echt de enige noemenswaardige bugs die mij nog bijstaan. Ik kan me niet herinneren dat er in 4.0 veel bugs zaten, ongetwijfeld wel maar niet echt grote.

/edit:

Helemaal vergeten, er was ook een variant van 4 die door IBM werd ontwikkeld, die heb ik nooit gehad maar volgens Wikipedia was die versie een nachtmerrie.

[Reactie gewijzigd door TechSupreme op 24 juli 2024 03:44]

Je had in die tijd ook een (volgens mij) gratis compressietool, Stacker: https://winworldpc.com/product/stacker/40. Dat gebruikte ik. In die tijd onmisbaar om je kleine hard disks wat beter te kunnen benutten. Ik had bijv een 40MB full height disk ergens gescored, en met Stacker kon je dat veel meer efficient gebruiken.
Stacker! Wat een heerlijke naam uit het verleden.
Denk niet dat het gratis was, eerder dat je het gratis kon delen. Destijds was het niet altijd even duidelijk wat betaald was en wat niet.

[Reactie gewijzigd door TechSupreme op 24 juli 2024 03:44]

6.02 heb ik altijd een prima versie gevonden. Ook met de 5.0 gewerkt en die was duidelijk instabieler.
Dat waren nog eens mooie tijden een TSR schrijven heette dat toen:
Wikipedia: Terminate and Stay Resident

Ik heb toen als grap een programma gemaakt dat elke toetsaanslag die in een ander programma gemaakt werd ook direct naar de matrix printer stuurde, zodat je als het ware een typemachine na boost (inclusief geluid). M'n moeder vond het minder leuk en kwam toch vragen of ik het weer eventjes wilde verwijderen. :D
Tja, wat wil je als 12 jarige ... ze zag de grap er helaas niet van in. Het maken er van heeft me veel geleerd en ik vond het zelf heel erg cool dat ik m'n ideetje aan de praat gekregen had.

[Reactie gewijzigd door djwice op 24 juli 2024 03:44]

Vroeger ook wel zulk soort grappen uitgehaald. Wat ik vergeten ben is hoe ik aan die kennis kwam, om dat voorelkaar te krijgen.
Verbazingwekkende, he? Dat je naar oude broncode kijkt en je dan denkt, wtf hoe heb ik dat allemaal geleerd? Soms moet je ergens induiken en dan leer je een hoop om het vervolgens langzaam maar zeker allemaal weer te vergeten :)
Toen zat er ook nog een dikke manual bij, en natuurlijk ook iedere maand een magazine of 3 uit Engeland met de laatste nieuwtjes
Met Turbo Pascal kon je simpel de interruptvector van de timer-interrupt aanpassen in in de 'achtergrond'. allerlei leipe dingen uithalen.
Was dat niet via interrupt 21 , ik heb ook wel eens iets vergelijkbaars gedaan
Haha, zo had ik ooit een TSR geschreven die bij iedere aanroep van INT 10H met AH 0 (wijzig video mode) eerst kort een lemming over het scherm liet lopen.
Haha, leuk! Zie het al helemaal voor me :)

Of een die bij elke schrijf actie een geluids via de PC-speaker afspeelt. Oh, nee, dat was toen niet nodig 😉
Schijven maakte al duidelijk geluid :)

Die Lemming is echt leuk.
Ooit ook een afteller gemaakt over alle schermen van het Novell netware netwerk op school, die een voor een het volgende nummer lieten zien en dan terug naar waar de gebruiker mee bezig was. Bij 0 ging hij gewoon verder met aftellen naar negatieve cijfers. Als je op escape drukte deed je PC niet meer mee. Ik wilde niet dat mensen dingen verloren waar ze aan werkte. Helaas gingen mensen als reflex de PC uit zetten. Anderen stonden op en kwamen wel om hulp vragen. Sommigen werden zo boos, dat ze niet reageerden op de instructie druk op de espace toetst. Dus die heb ik maar 1x gedraaid. En geleerd dat eindgebruikers impulsief kunnen reageren op onverwachte acties van hun machine. Zelfs als er in dezelfde ruimte mensen met kennis van het systeem zijn (sys-admin stond er bij), wordt er niet altijd eerst hulp gevraagd.

Als puber denk je impulsief: oh, dat is lachen, een afteller die verder niets doet. Tja... ;)

[Reactie gewijzigd door djwice op 24 juli 2024 03:44]

Deze 4.00 versie van MS-DOS is nooit populair geweest:
Lack of interest from OEMs, particularly IBM (who previously gave Microsoft multitasking code on IBM PC DOS included with TopView), led to it being released only in a scaled-back form. It is sometimes referred to as European MS-DOS 4.0, as it was primarily used there. It should not be confused with PC DOS 4.00 or MS-DOS 4.01 and later, which did not contain the multi-tasking features.
Zie Wikipedia: MS-DOS 4.0 (multitasking)

Versie 4.01, waar de multitasking weer uit gehaald was, heeft veel beter verkocht.
Grappig, het eerste wat ik dacht was... he had ik vroeger multitasking in DOS... Stond me helemaal niets van bij terwijl ik toch aardig actief was. Maar het is toch niet mijn geheugen dit keer dat me in de steek liet ;)
De enige multitasking die ik me kan herinneren, waren terminate-stay-resident programma's. Er was een cheat engine waarmee je tijdens het spelen geheugenwaardes kon zoeken en manipuleren (Game wizard) die op deze manier werkte.
Zat te denken of iemand TSR's zou noemen en jawel. Kan me dat stuk software ook nog wel herinneren, was wel vaak op goed geluk, meestal kreeg ik het niet echt goed voor elkaar. Waren er ook niet zogenaamd trainers die TSR waren en opstartte voordat je het spel startte. Dan kon je in het spel met toetscombinaties onsterfelijk worden of levens erbij krijgen e.d.
GameWiz32. Savestates, pauzeren, versnellen, fantastische tool destijds. Als mijn geheugen mij dient kon hij niet zo goed overweg met Dos4GW. En om deze TSR te gebruiken moest je zoveel truucjes uithalen om zoveel mogelijk in het hoger geheugen te plaatsen via o.a. localloadhigh. Erg lang geleden, maar dat was de uitdaging ook destijds.

Edit: localloadhigh is niet het juiste commando, ik weet het niet helemaal meer :+ te lang geleden.

[Reactie gewijzigd door SkyStreaker op 24 juli 2024 03:44]

Was het niet highmem.sys en xmsmmgr.exe?
Je bent niet alleen, hoewl ik me er toen ook geen vragen bij stelde. :)
De meest gebruikte versie was 3.2. Zonder dat soort fratsen.
Dan heb je zeker ECC geheugen! ;)
Met een goed geconfigureerde CONFIG.SYS en natuurlijk DOS=HIGH,UMB zodat er wat over blijft :P
beings back memories. Zelf een startmenu maken met prompts (niet ChatGPT 😁). Ansii.sys, pauze, wegschrijven naar null, keycodes opvangen,… 🤩
Ja dat ja!!! En dan helemaal impressed zijn dat die gelijk start nadat je die in de Autoexec.bat hebt gedrukt... mooie tijden.
Wat ik mis is dat ik met 2M Format zonder TSR (en nu volledig uit mijn geheugen, hopelijk correct) een standaard 1.44Mb disk kon formatteren naar 1.72Mb waarbij de TSR niet nodig was. Met de TSR was 1.96Mb (iirc) mogelijk.

Op een 1.72 kon ik een werkende DOS krijgen met Win 3.11 met System32 en WinG. Natuurlijk moest ik wel wat "onzin" eruit halen (lees: gewoon niet mee kopiëren). Ik had alle drivers er ook in. Dat was geweldig mooi - meer ruimte op "grote" HDD.

Oh, heerlijk.
Bij m'n ouders heeft een tijd een naar een 286 geupgrade pc gestaan met daarbij volgens mij MS DOS 4. Ik heb 2 boeken ervan bewaard. DosShell was best een handig programma iig als je een stel destijds niet al te computerkundige gebruikers simpele programma's zelfstandig wil laten opstarten. Ik woonde al niet meer thuis dus dat scheelde dan weer intiep instructies via de telefoon.
Wat cool! Ik heb zelf nog de boeken die bij onze 8086 genisys computer waren geleverd. Ze wisten in die tijd nog honderden pagina's te schrijven over ms-dos en Windows 1.01 :)

Onlangs van een gepensioneerde it'er en tevens goede vriend van mijn schoonouders vernomen dat dit een Nederlandse computer bouwer bleek te zijn en genisys echt populair was.

Je begrijpt vast dat ik spijt heb dat ik mijn eerste computer ooit verkocht heb tijdens Koninginnedag zodat ik een rondje in de disco train kon lol. Die nostalgische rode aan uit schakelaar in zijn zwarte omhulsel die de AT voeding nog fysiek aan en uit schakelde en de ratelende 20MB 5,25 inch dubbel hoge HDD. Goeie ouwe tijd _/-\o_
Inderdaad ook wel eens spijt gehad van weggedane hardware, maar m'n woonruimte was dan ook zeer beperkt. (De MSDOS 4 boeken lagen natuurlijk destijds bij mij ouders) Het was ook de tijd dat je voor een paar gulden 8-bitters kon kopen bij de kringloopwinkel of de rommelmarkt, maar dus ook niet de ruimte en middelen voor destijds. En dan nog maar te zwijgen over gesneuvelde hardware omdat ik er aan heb zitten knutselen oeps. Onder andere een tweedhandse ZX81 waar ik het toetsenbord dacht opnieuw te kunnen vast te lijmen, maar er dus een chemische reactie ontstond tussen de lijm en het membraan.
Inmiddels toch maar wat witte PC's weggegooid (ingeleverd bij een opruimdag), want je kunt niet alles bewaren :)
Oh, misschien komen er nu nog niet gekende easter eggs naar boven? :-)
Ik heb al gezocht, de term "easter" komt niet voor in het 4.0 repository, maar ik heb ook geen idee of het toen al die naam had...
In de tijd van Windows was het zo dat de directie van Microsoft helemaal geen easter eggs wilde. Het zou maar gebeuren dat zoiets op een heel verkeerd moment tevoorschijn kwam. Dus de ontwikkelaars moesten ze heel goed verstoppen. Dan ga je natuurlijk niet woorden als ‘easter’ gebruiken.

Of dit beleid er al voor Windows was weet ik niet. Als dat zo is dan moet je ook in deze broncode goed gaan zoeken.
Dat was niet in de tijd van "Windows", zelfs niet in de tijd van Windows 95. Dat was pas in 2002 met het Trustworthy Computing Initiative.
Leuk voor het archief, maar met FreeDOS in het achterhoofd heeft deze broncode niet veel praktische toepassingen.
Misschien kan FreeDOS nog iets leren van de broncode en beter worden?
Je praat over code dat actueel was in 1988... Ik denk niet dat een project anno 2024 daar veel baad bij heeft. Het grootste deel van de code is Assembly, waar FreeDOS vooral C lijkt te gebruiken.

[Reactie gewijzigd door CH4OS op 24 juli 2024 03:44]

Je weet dat veel moderne operating systems ook nog inline assembly gebruiken op de plekken waar C minder efficiënt is?
Ja, maar dat maakt niet dat dergelijke code uit 1988 nog goed bruikbaar is in 2024. :)
Fabeltje. Het wordt wel gebruikt voor bepaalde OS taken die in C simpelweg niet kunnen (expliciet bepaalde CPU registers aanspreken omdat de OS ABI dat nu eenmaal vereist) maar que efficiency zijn C compilers van ~2004 al beter dan mensen.
Praktisch heeft het sowieso weinig nut. Het gaat hier om historisch belang.
Dat hoeft ook niet dit is een onderdeel van onze culturele digitale geschiedenis. Net zo waardevol all en Romeinse lepel of zo. Niet practische, maar geschiedenis.
Oh, dos.. back to memory lane. Mijn vader had jaren lang een eigen champignon kwekerij. De temperatuurregeling, watervoorziening etc draaide allemaal via een, naar ik meen, 386 of 486. Op een bepaald moment had de leverancier van het programma bedacht om naar een nieuwe versie van Dos te moeten gaan. Hemel en aarde moeten bewegen om die laatste versie van DOS ergens vandaan te krijgen. Dat was dan wel dos 6.22. Bij de pc leverancier konden we een versie krijgen. Dus daar heen, betaald, krijgen we een cd-r met daarop de installatie.. geweldig. (ik was toen in de veronderstelling dat je officiële software op officiele cd's kreeg dus vond het nogal shady ).
Code ziet er leesbaar en goed gedocumenteerd uit. Leuk om te lezen.
Doet MS vaker, "oude" software "open" zetten voor wie het maar wil. www.freeallegiance.org bijvoorbeeld. Waardeer het van MS. Als (beginnende) ontwikkelaar kan je een hoop informatie halen hoe je zo'n complex product maakt.

Ja, de goede oude ms-dos tijd, toen ik dat gebruikte had ik nog langer en meer haar, met mijn originele haarkleur :D En maar 5 1/4 inch floppies wisselen op de XT computer met monochrome groen beeldscherm. Toen ik nog software kocht, in een doos.
Je had toen op een gegeven moment ook zoiets als DR-DOS van Digital Research. Toen ik in mijn jonge jaren in een computerwinkel werkte werd dat eigenlijk standaard op elke PC geïnstalleerd. Ik dacht dat de voornaamste reden de licentieprijs was, die was lager dan MS-DOS. Maar er waren echter ook sofwaretechnisch enkele leuke dingen die MS-DOS niet kon, of nog niet kon. Ik dacht dat vooral geheugenmanagement vooruit was op MS-DOS, meer vrij geheugen , vooral bij PC's met extended memory (>640KB) en betere kopieerfuncties (DR-DOS 5.0). Daarna werd het verkocht aan Novell die DR-DOS 6.0 uitbrachten met nog steeds verbeteringen t.o.z. van MS-DOS (o.a. bestandscompressie). Was toen een beetje een kat en muis spel tussen DR / Novell en Microsoft.

[Reactie gewijzigd door Gely op 24 juli 2024 03:44]

Op dit item kan niet meer gereageerd worden.