Altair BASIC

Altair BASICのアセンブリ言語コードのタイトルページの一部。次のようなことが書かれている。
*コピーライトはビル・ゲイツとポール・アレンにある。
*もとはハーバード大のPDP-10上で（1975年の）2月9日から4月27日にかけて書かれた。
*ポール・アレンはランタイムではない部分を書いた。
*ビル・ゲイツはランタイムの部分を書いた。
*モンテ・ダヴィドゥフは数学パッケージを書いた。
なおその下にはTO DO（やるべきことのリスト）も書かれている。
（米国ニューメキシコ州アルバカーキにある歴史・科学博物館:en:New Mexico Museum of Natural History and Scienceの展示品）
Altair BASIC（アルテア・ベーシック）は、1975年にビル・ゲイツ、ポール・アレン、モンティ・ダビドフの3人が、設立したばかりの法人マイクロソフト（当時はMicro-Softと表記）名義で開発した、MITS社のAltair 8800やそれ以降のS-100バスコンピュータ上で動作するプログラミング言語BASICのインタプリタである。MITS社とマイクロソフト社の間にかわされた契約に基づいて配布された。当Altair BASICはマイクロソフト社の最初の製品であり、後のMicrosoft BASIC製品群の起源となったものである。

**起源と開発**
ビル・ゲイツは、彼とポール・アレンが『ポピュラーエレクトロニクス』1975年1月号に掲載されたAltair 8800の記事を読んだとき、コンピュータの価格が間もなく下がり、ソフトウェアの販売が収益性の高いビジネスになるだろうと理解したと後に回想している。ゲイツは、Altair 8800にBASICインタプリタを提供することで、この製品が趣味家にとってより魅力的なものになると考えていた。彼らはMITSの創設者エド・ロバーツに連絡を取り、（まだ作業に取り掛かってすらいないにもかかわらず）彼らがBASICインタプリタを開発していると伝え、デモを見たいかどうか尋ねた。これは、存在しない製品を発表して相手の興味を測る観測気球であった。ロバーツは、数週間後の1975年3月にデモのために彼らと会うことに同意した。
ゲイツとアレンは、インタプリタを開発してテストするためのAltairコンピュータを持っていなかった。しかし、アレンは以前Traf-O-Dataの名称で仕事をしていたときにIntel 8008エミュレータを作成し、PDP-10上で動作させていた。アレンはAltairのプログラマガイドに基づいてこのエミュレータを改良し、ハーバード大学のPDP-10上でインタプリタの開発とテストを行った。大学の資産で商用のソフトウェアが開発されていることを知った大学当局は不満を抱いたが、このような使い方を禁止する規定は大学にはなかった。結局、大学当局から商業行為は学外で行うよう勧告され、ゲイツとアレンはボストンのタイムシェアリングサービスからコンピュータの使用時間を購入してBASICプログラムのデバッグを行った。当初のバージョンは整数演算のみだったが、ハーバード大学の同級生のモンティ・ダビドフが浮動小数点演算も使うべきだとし、自分ならメモリ制限内に収まるようなシステムを書けると主張したので、ゲイツとアレンはダビドフを雇ってそのルーチンを作ってもらった。
独自の入出力システムとラインエディタを持った完成したインタプリタは、わずか4キロバイトのメモリに収まり、さらに、解釈後のプログラムを格納するための十分なメモリ空間が確保されていた。デモの準備として、完成したインタプリタをAltairに読み込ませるために紙テープに保存し、アレンはMITS社のあるアルバカーキへ飛んだ。
アルバカーキ空港への最終アプローチ中、アレンは紙テープをメモリに読み出すためのブートストラッププログラムを書き忘れていることに気付いた。アレンはそれを8080の機械語で書き、飛行機が着陸する前にプログラムを完成させた。プログラムをAltairにロードし、システムのメモリサイズを尋ねるプロンプトが表示されたのを見て初めて、彼らは自分たちのインタプリタがAltairハードウェア上で正しく動作することを知った。その後、誰が最短のブートストラッププログラムを書けるかを賭けて、ゲイツが勝利した。

**バージョンと配布**
Altair 8K BASICが記録された紙テープ
ロバーツはインタプリタの配布に同意した。また、ゲイツとアレンをMITS社で雇ってメンテナンスと改良を行った。8K BASIC、Extended BASIC、Extended ROM BASIC、Disk BASICなどのアップグレード版が追加されると、オリジナルのバージョンは4K BASICと呼ばれるようになった。
最小のバージョンである4K BASICは4キロバイトのRAMを持つマシンで動作し、プログラムコードエリアには約790バイトの空きしかなかった。このような小さなメモリ空間に収めるために、4Kバージョンには文字列操作やいくつかの一般的な数学関数が入っていなかった。8K BASICバージョンでは、文字列変数とその操作関数、乱数のためのRNDなどの数学関数、ブール演算子、PEEKとPOKEなどが追加された。8Kバージョンは、ホビーパソコン時代のBASICのほとんどのバージョンの基礎となっている。Extended BASICではPRINT USINGや基本的なディスクコマンドが追加され、Disk BASICではさらにディスクコマンドが拡張され、raw I/O機能が可能になった。
1975年10月、4K BASICは150ドル、8K BASICは200ドル、Extended BASICは350ドルで販売された。8KのAltairメモリとAltair IOボードを購入すると、それぞれ60ドル、75ドル、150ドルに値引きされた。配布形式は紙テープまたはカセットテープだった。
彼らの予想通り、Altairはホームブリュー・コンピュータ・クラブなどのホビイストの間で非常に人気となった。また、MITSが選択したBASICインタプリタであるAltair BASICも人気となった。しかし、ホビイリストたちは、誰かが入手したAltair BASICを仲間でコピーして使っており、それが悪いことであるとは思っていなかった。ホームブリュー・コンピュータ・クラブのダン・ソコルは、何らかの手段で入手した販売前のテープから25個のコピーを作り、それをクラブの会合で配布して、受け取った人に更にコピーを作るように促していた。ゲイツは、1976年にホームブリュー・コンピュータ・クラブの会報に『ホビイストたちへの公開状』という文章を寄稿し、この中で、ソフトウェアをコピーする行為は窃盗だとして非難し、人々がお金を払わないソフトウェアの開発の継続はできないと宣言した。多くのホビイストはこの書簡に防御的な反応を示した。
ゲイツ、アレンによるマイクロソフトとMITSとの間の契約条件では、一定額のロイヤルティーを支払った後で、MITSはインタプリタの権利を受け取ることになっていた。しかし、マイクロソフトはMC6800など他のシステム向けにもインタプリタを開発していた。そのため、彼らがMITSからの離脱を決めた際に、ロイヤルティーの全額が支払われたかどうか、他のバージョンにも契約が適用されるかどうかを巡って争いになった。マイクロソフトとMITSは仲裁人に紛争の仲裁を依頼した。仲裁人は、MITSは「最善の努力」でソフトウェアを販売していなかったとして、マイクロソフトに有利な裁決を下した。
BASICインタプリタは、1980年代初頭にMS-DOSに移行するまで、マイクロソフトのビジネスの中核を担っていた。

**関連項目**
 Microsoft Binary Format

**脚注**

**関連文献**
 url=https://archive.org/details/fireinvalleymaki00frei_0- cite book|last=Gates|first=Bill|author2=Nathan Myhrvold|author3=Peter Rinearson|title=The Road Ahead|isbn=0-670-77289-5|year=1995|publisher=Viking|location=New York|url=https://archive.org/details/roadahead00gate- Cringely, Robert X.. Triumph of the Nerds. PBS, 1996.- archivedate=March 23, 2012 

**外部リンク**
  Altair BASIC 3.2 (4K) - Annotated Disassembly-  Altair BASIC source disassembly, compiled by Reuben Harris and archived at archive.org-  Writing an Altair Basic, Interview with Bill Gates, Interviewer: David Allison (DA), Division of Computers, Information, & Society, National Museum of American History, Smithsonian Institution -  History of Microsoft Video: Bill Gates Talks about Altair Basic, (Lisa Feigenbaum) 24 Jun 2009, The Visual Basic Team, MSDN Blogs