86-DOS
86-DOSは16bitのディスクオペレーティングシステムである。元々はシアトル・コンピュータ・プロダクツ(Seattle Computer Products : SCP)から販売されたIntel 8086ベースのコンピュータ・キット用として1980年にティム・パターソンが4ヶ月で開発した。最初のPC DOS(MS-DOS)は、86-DOSをベースに作られた。86-DOSはコマンドの一部がCP/MとOS/8に共通している。86-DOSはAPIがデジタルリサーチ社のCP/Mに似ている為、簡単にプログラムを移植することができた。
86-DOSは発売前はQDOS(Quick and Dirty Operating System、即席オペレーティングシステム)と呼ばれた。シンクレア・リサーチ社のSinclair QLコンピュータ用OSであるQDOSとは無関係。
SCPは1979年6月に8086コンピュータ・キットのデモを行い、11月から出荷したが、オペレーティングシステムがなく販売に苦戦しており、86-DOSの前身となるQDOSを開発した。ボードと一緒にSCPが提供したソフトウェアは、スタンド・アロンのMicrosoft BASIC-86だけだった。マイクロソフトは新しいプロセッサ上でソフトを動かすことに非常に熱心で、開発用としてSCPから8086ボードのプレ・リリース版を借りており、6月のデモに参加した。
当時のマイクロコンピュータ用の主要なオペレーティングシステムはデジタルリサーチのCP/Mだったが、1980年の時点では16bit版は存在していなかった。SCPは開発用ボードをデジタルリサーチに提供しておらず、デジタルリサーチが興味を持たなかったのか、CP/Mの16bit版をデジタルリサーチが開発することは無いだろうとSCPが考えたのかは明らかではない。当時動作するプロトタイプはSCPの社内にも2台しかなかった。利用可能なオペレーティングシステムが無いまま、パターソンは1980年4月にQDOSの開発を始めた。
パターソンの設計した86-DOSは、内部のAPIがCP/Mと同じで、ユーザコマンドも少数が同じであったが独特なコマンドが幾つか導入されていた。DECミニコンピュータで使われていたコマンドに似ているCP/MのPIP「ファイル・コピー・サブシステム」は、「COPY」コマンドに置き換えられた。PIPに続けて「コピー先=コピー元」とタイプして実行するのではなく、「COPY コピー元 コピー先」の形に単純化され、PDP-11オペレーティングシステムの流れを汲むVAX/VMSのCOPYコマンドと同様になった。またCP/Mはフロッピーディスクを入れ替える時にコントロールキーを打たなければならず評判が悪かった。
QDOSが86-DOSの名前で販売されたとき、CP/Mの特徴の多くが取り入れられなかった。パターソンはCP/Mのファイルシステムをそのままコピーせず、Microsoft BASICのいくつかのバージョンで採用されたを使った。
1980年後半、IBMはIBM PCのプロトタイプを開発していた。その当時最も普及していたオペレーティングシステムはCP/Mであり、IBMは競争のためにはCP/Mが必要だと考えていた。最終的にIBMはCP/Mではなく86-DOSを採用した。その理由には諸説ある。
CP/Mの開発者であり、後にDR-DOSも開発するデジタルリサーチ社のゲイリー・キルドールは、IBMの職員と会うことを避けていたと言われている。またキルドールがデジタルリサーチ社を訪問したIBMの重役たちを何時間も待たせて自家用飛行機を飛ばしていたというビル・ゲイツの話が有名である。IBMはマイクロソフトからオペレーティングシステムの提供を受けることになり、キルドールは世紀のチャンスを逃した。ただしいずれの話も真実かどうかははっきりしていない。
パターソンらによるとキルドールは商談には関与せず、弁護士でもある妻のDorothy McEwenに任せていた。パターソンは「彼女がIBMとの秘密保持契約(NDA)へのサインを嫌がった」と語っている。また後にキルドールがNHKスペシャル『新・電子立国』のインタビューで語ったところによれば、IBMの重役が最初にデジタルリサーチを訪れた時、キルドールは既にサンノゼで別の商談の予定が入っていたため、妻に代わりに対応してもらった際にNDA締結を巡るトラブルがあったという。ただしキルドールの同僚であるゴードン・ユーバンクスは「彼女はサインした」と言っている。ユーバンクスは「キルドールはPL/1コンパイラに取り組んでいたので、当時はCP/Mの16bitプロセッサへの移植には興味が無かった」とも言っている。
他の説では、IBMとデジタル社が価格面で折り合わなかったのだ、とされている。IBMは250,000ドルでCP/Mを丸ごとすべて買い取ることを提案したが、キルドールの希望は1コピーあたり10ドルのライセンスであった。
少なくとも、IBMとデジタルリサーチの間で具体的にCP/Mの供給を巡り複数回の交渉が行われたことや、IBMから25万ドルでCP/Mを買い取りたいという提案があったことはキルドール自身が認めており、NDAを巡るトラブルが当初あったにせよ、その後両社の間でNDAが結ばれ具体的な価格交渉が行われたことは間違いないと思われる。ただしこの交渉に関してIBM側の関係者とキルドールの証言が大きく食い違っているのも事実で(NHKのインタビューに対し、IBM側の交渉担当者だったジャック・サムズは「キルドールとは一度も会っていない」と語っているのに対し、キルドールは「サムズとは複数回会って交渉した」と語っている)、真相は依然謎に包まれている。
結果的にIBMはマイクロソフトにオペレーティングシステムの提供を依頼し、マイクロソフトもまたそれを受諾した(マイクロソフトは既にPC用のROMBASICインタプリタも提供していた)。
1980年12月にマイクロソフトは、シアトル・コンピュータ・プロダクツ社(SCP)から86-DOSの非独占的なライセンスを25,000ドルで買い取った。1981年5月にはティム・パターソンを引き抜いて、86-DOSのIBM PC(安いが遅い 8088と、それ用の周辺チップを使用)への移植を行なわせた。IBMは連日開発に付き合い、受領の前に300以上のバグを報告し、ユーザ・マニュアルも作成した。
PCをリリースする1ヶ月前の1981年7月に、マイクロソフトはSCPから86-DOSの全ての権利を50,000ドルで買い取った。それはIBMの主な要求を満たしていた。見た目がCP/Mに似ており、86-DOSのTRANSコマンドを使って8080のソースファイルを8086の機械語に変換できるおかげで既存の8bit CP/Mプログラムを簡単に移植できた。マイクロソフトは86-DOSをIBMにライセンスし、PC DOS 1.0となった。このライセンスでは、マイクロソフトが他の会社にDOSを売ることも認められており、実際に販売が行なわれた。取引は大成功を収めたのだが、後にSCPはマイクロソフトを訴える。マイクロソフトはIBMと秘密保持契約(NDA)を結んでおり、IBMとの関係を公にすることは契約に反していたが、SCPはマイクロソフトがオペレーティングシステムを安く買い取るためにIBMとの関係を秘密にしたと主張した。最終的には100万ドルで和解した。
IBMはDOSを60ドルで販売し、その価格設定は240ドルのCP/M-86よりも遥かに魅力的だった。デジタルリサーチ社は、CP/Mのシステムコール、プログラム構造、ユーザーインターフェイスのほぼすべてをDOSに模倣されていたためマイクロソフトを訴えることを考えたが、結局は取りやめた。マイクロソフトを訴えればIBMも訴えなければならなくなり、IBMのような巨大な企業を相手に裁判で戦えるほどの資金は無く、勝てる見込みが無いと考えられた。
1982年までにIBMがハードディスクに準拠したDOSのバージョンをリリースするようマイクロソフトに依頼した時には、PC DOS 2.0はDOSをほとんど書き直していた。1983年3月までには、86-DOS由来のソースコードはほんの一部が残っているだけになっていた。86-DOS由来のソフトウェアで最も長く生き残った部分は、原始的なライン・エディタのEDLINである。QBasicを元とするグラフィカルなエディタ(EDITとして知られている)を同梱したMS-DOS 5.0が1991年6月にリリースされるまで、EDLINはマイクロソフト版のDOSで提供されていた唯一のエディタであった。
2016年に、ザイドマン・コンサルティングのボッブ・ザイドマンは、デジタルリサーチが開発したCP/Mとティム・パターソンが開発し、長年前者のコードを基にしたと疑われたDOSのソースコードを比較し、初版のDOSのソースコードがCP/Mのソースコード基にしたかを調べた。
DOSとCP/Mのコマンドを比べると、一致するものは極僅かである。DOSとOS/8のコマンドの間には、DOSとCP/Mの間よりも共通コマンドが多くある。当該コマンドは全て動作を直接表す英単語となることが原因である。
しかし、両OSのシステムコールを分析すると、DOSにあるシステムコールは、明らかにCP/Mのシステムコールを真似るものであることがわかる。同じ機能を表す同じ数字がいくつもあることから、ティム・パターソンがDOSを開発した時にCP/Mの説明書を参考にしたことは明らかである。
ザイドマンの結論は、DOSはCP/Mのコードを一切基にしていないとのことであるものの、システムコールの多くの部分が真似られた。
QDOS v0.1 1980年8月
86-DOS v0.3 1980年12月
86-DOS v1.0 1981年4月
PC DOS v1.0 1981年8月
PC DOS v1.10 1982年6月
MS-DOS v1.24 1982年6月
MS-DOS v1.25 1982年7月