86-DOS? Non è un clone del CP/M, lo afferma un’indagine forense

Dopo oltre 30anni di dibattiti, discussioni, cause legali, e chi più ne ha più ne metta, arriva una ulteriore (e speriamo definitiva) prova a supporto di chi da tempo afferma che il Q-DOS (alias QDOS) e quindi l’MS-DOS non sono una copia del CP/M. Ricordiamo che il PC(MS)-DOS è frutto della licenza esclusiva (poi acquisizione) del Q-DOS da parte del big di Redmond

Fino ad ora, infatti, le prove utilizzate per smentire la tesi secondo cui Paterson avrebbe copiato il CP/M per creare il Q-DOS, erano basate su quanto è “visibile” dei due sistemi operativi: primo, il CP/M originale è a 8bit e il Q-DOS a 16bit, e al momento del rilascio dell’86-DOS (PC-DOS) la versione a 16 bit del CP/M era in uno stato embrionale poco definito. Inoltre, se è vero che i due sistemi condividono un’API simile, è anche vero che il PC DOS utilizza come file system la FAT (sviluppato da Marc McDonald di Microsoft) e i floppy formattati su un sistema non sono leggibili sull’altro.

A colmare l’assenza di un’analisi introspettiva-comparativa di dettaglio, sia tra il Codice Sorgente del CP/M e dell’86-DOS che  sui loro binari unitamente a quelli dell’MS-DOS, è stato Bob Zeidman (presidente  e fondatore della Software Analysis and Forensic Engineering Corp., sviluppatrice di software per comprovare la proprietà intellettuale del software), che ha messo a confronto:

Prima di continuare e’ doveroso sottolineare che Zeidman e’ stato testimone MS nella causa contro Microsoft e che potrebbe, e sicuramente in parte e’ cosi’, aver sfruttato la questione per pubblicizzare il proprio software. Nonostante queste considerazioni, l’analisi sembra essere stata condotta con professionalita’ ed i risultati appaiono assolutamente credibili.

La prima prova è stata quella di confrontare il codice sorgente del CP/M e dell’86-DOS, cosa non particolarmente agevole soprattutto in virtù del fatto che parte del CP/M è scritto in PL/M e la relativa conversione in assembly non è proprio una passeggiata (si pensi alla traduzione dall’egiziano antico all’inglese). Effettuata comunque tale traduzione, gli unici match trovati tra i due sistemi sono inerenti l’utilizzo di parole chiavi (CALL, MAKE, ecc) e alcuni commenti. In pratica nulla di rilevante.

Continuando l’analisi del codice, la presenza di variabili con nome simile (es: FirstName / fName) potrebbe rappresentare una traccia che evidenzia la copia, ma i nomi utilizzati sono assolutamente troppo comune nell’ambito della programmazione, soprattutto in riferimento al periodo ’79-’80.

La verifica di Zeidman continua con CodeSuite tools, che permette di identificare elementi comuni tra due programmi e correlarli con altri algoritmi, per la risoluzione dello stesso problema, rintracciabili su internet. Se i due programmi in analisi hanno un elemento in comune e tale elemento è praticamente assente su internet, è possibile affermare che essi sono in relazione (copia) tra loro. L’applicazione di CodeSuite sul CP/M e sull’86-DOS evidenzia lo statement comune “jnz comerr” apparentemente non presente su internet. Però Zeidman si accorge ben presto che “jnz” è un acronimo di “jump if not zero”, ovvero una istruzione decisamente comune nel linguaggio assembly. Stesso discorso per “Comerr” , combinazione di “com” (riferimento alla porta di comunicazione) ed “err”, chiaramente riferito ad “error”.

Infine anche l’analisi sulle routine presenti nel codice non evidenza alcun elemento significativo in comune, anzi porta alla luce una profonda differenza tra la loro strutturazione e il loro codice.

Successivamente Zeidman compara il binario dell’MS-DOS 1.11 con il CP/M (versione 2.0, e parte del codice della 1.4) grazie al tool BitMatch. Chiaramente la verifica tramite binario non può dare risultati accurati come nel caso dei sorgenti e le poche somiglianze riscontrate sono solo relative a parole d’uso comuni che non evidenziano in alcun modo il legame dei due prodotti.

L’ultima verifica ha interessato quella che ormai è diventata una vera e propria leggenda: il “messaggio segreto”, contente il nome di  Kildall, che veniva visualizzato dal CP/M attraverso uno specifico comando (un easter egg). Ad affermarne con forza l’esistenza è stato Jerry Pournelle, scrittore Americano di fantascienza, il quale sostenne che Kildall era stato in grado di dimostrargli che il DOS conteneva del codice CP/M poiché, digitando quel particolare comando dal prompt, anche nel sistema Microsoft compariva il suo nome (Gary). Pournelle comunque non ha mai voluto rilevare quale fosse questo comando in modo da comprovare le proprie affermazioni. La storia di questo comando speciale è divenuto una sorta di leggenda tanto da ritrovarla anche in “They Made America”.

L’analisi dei tre sistemi operativi tramite SAFE (tool per estrarre stringhe da file binari), non ha evidenziato in alcun modo la presenza di tale messaggio in chiaro, e la stringa “Digital Research” compare solo nelle notizie di copyright del CP/M. Inoltre i soli 160Kb del sistema di Kildall non lasciano sicuramente spazio a routine di cifratura che nascondano il messaggio stesso.

Tutto ciò porterebbe ad una sola e definitiva conclusione: Paterson non ha copiato il CP/M per il proprio 86-DOS (Q-DOS) e di conseguenza Microsoft non ha copiato il sistema di Digital Research.

Se siete interessati ad ulteriori approfondimenti sulla questione, vi rimando al link: L’Eterna accusa di Plagio, e al precedente articolo di Alessio, Gary Kildall: il vero padre del DOS più relativa discussione.

Press ESC to close