Il codice sorgente di 86-DOS 1.00 è stato reso pubblico da Microsoft in occasione del quarantacinquesimo anniversario di quello che è, a tutti gli effetti, il DOS più antico mai rilasciato in forma aperta. Non si tratta di una semplice operazione nostalgica: parliamo di materiale che racconta come si costruiva software in un’epoca in cui il personal computing stava letteralmente nascendo, tra la fine degli anni ’70 e l’inizio degli ’80. L’hardware era limitatissimo, le scelte progettuali dovevano essere rigorose, spesso definitive, e gli strumenti che oggi diamo per scontati semplicemente non esistevano.
Vale la pena ricordare che già nel 2018 l’azienda di Redmond aveva pubblicato i sorgenti di MS-DOS 1.25 e 2.11, mentre nel 2024 era toccato a MS-DOS 4.0. Stavolta però lo sguardo va ancora più indietro. E non si parla solo di righe di codice: il materiale include documentazione tecnica, listati stampati su carta e annotazioni scritte a mano. Una fotografia diretta del lavoro quotidiano di sviluppo, quando sistemi di versionamento distribuiti o ambienti integrati erano fantascienza.
Tim Paterson, QDOS e la nascita di un sistema operativo leggendario
Tim Paterson è il nome da conoscere se si vuole capire da dove arriva tutto. Ingegnere statunitense, lavorava alla Seattle Computer Products in un periodo in cui il mercato dei microcomputer cominciava a prendere forma ma mancava ancora uno standard software per le CPU Intel 8086. Il suo contributo principale fu lo sviluppo di QDOS (Quick and Dirty Operating System): Paul Allen si accordò con Paterson e con Seattle Computer Products per acquisire QDOS, che venne rinominato in 86-DOS, insieme all’intera società. Era il 1980.
Il progetto nacque anche come risposta indiretta a CP/M, che dominava i sistemi a 8 bit ma non era ancora stato adattato efficacemente alle nuove architetture a 16 bit. Paterson aveva previsto un insieme di syscall e comportamenti simili a CP/M, così da rendere più semplice il porting delle applicazioni già esistenti. Il risultato fu un sistema relativamente semplice ma estremamente pragmatico, scritto quasi interamente in assembly per garantire prestazioni e controllo diretto dell’hardware. Paul Allen e Bill Gates, dopo aver acquisito i diritti, lo adattarono per il primo IBM PC, trasformandolo in PC-DOS (per IBM) e MS-DOS (per il mercato generale).
Nel repository pubblicato da Microsoft si trovano le trascrizioni del codice sorgente di 86-DOS originariamente stampato su carta. I documenti includono il kernel di 86-DOS 1.00, diversi snapshot intermedi del kernel di PC-DOS 1.00 e utility fondamentali come CHKDSK, che esiste ancora ai tempi di Windows 11. Tra i materiali compare anche il codice dell’assembler stesso, cioè lo strumento usato per tradurre il sorgente in binario eseguibile. Lo sviluppo avveniva in un ciclo molto più manuale rispetto a oggi: si scriveva codice, lo si stampava, lo si analizzava su carta, si correggevano errori a penna e poi si reinserivano le modifiche nel sistema. Lento, certo, ma all’epoca era la normalità. E produceva codice estremamente compatto e ottimizzato.
Una caratteristica unica di questi materiali è la presenza di versioni intermedie del sistema operativo: non release ufficiali, ma stati di avanzamento, vere e proprie istantanee del lavoro in corso. Si può osservare quando una funzione è stata introdotta, quali errori sono emersi e come sono stati corretti. Una forma primitiva di version control, basata su carta e archiviazione fisica.
Archeologia digitale e valore concreto per chi sviluppa oggi
Recuperare e rendere disponibile il codice sorgente di 86-DOS 1.00 non è stato un semplice lavoro di scansione. I listati originali sono stati digitalizzati e sottoposti a processi di OCR per ottenere codice leggibile e analizzabile. Il passaggio ha inevitabilmente introdotto margini di errore, soprattutto considerando la qualità variabile delle stampe originali e la presenza di annotazioni manuali. Il lavoro ha richiesto una validazione tecnica accurata: confronto tra fonti, correzione manuale e verifica del comportamento del codice ricostruito.
Analizzare questi sorgenti offre indicazioni concrete su come si progettava software in condizioni estreme. L’uso intensivo di assembly x86, l’assenza di astrazioni e la gestione diretta dell’hardware mostrano una disciplina ingegneristica molto diversa da quella attuale. Molte convenzioni di basso livello presenti ancora nei sistemi moderni derivano proprio da queste prime implementazioni. C’è anche un aspetto più critico: la disponibilità del codice storico permette di studiare vulnerabilità strutturali e limiti progettuali originari. Alcuni pattern di sicurezza, o la loro assenza, affondano le radici esattamente in questo periodo.
I materiali sono stati resi disponibili con licenza MIT, rendendoli accessibili a ricercatori, appassionati e sviluppatori senza vincoli legali stringenti. Il progetto include scansioni originali, codice ricostruito e documentazione correlata. Parte dei materiali sarà inoltre esposta fisicamente presso l’Interim Computer Museum, trasformando questi documenti in veri e propri oggetti storici, grazie alle donazioni di Paterson.
