Microsoft BASICは、マイクロソフト社の基盤となるソフトウェア製品であり、様々なマイクロコンピュータに対応したBASICインタープリタおよびコンパイラのシリーズへと発展しました。1975年にAltair BASICとして初めて登場し、これはマイクロソフトが公開した最初のBASICバージョンであり、 Altair 8800マイクロコンピュータで利用可能な最初の高水準プログラミング言語でもありました。
1970年代後半から1980年代初頭にかけての家庭用コンピュータブームの間、Microsoft BASICは多くの家庭用コンピュータに移植され、搭載された。特にグラフィックスなど、機種固有の機能をサポートするための若干の改良が加えられた結果、 Commodore BASICやAtari Microsoft BASICといった関連プログラムが数多く登場した。
初期の家庭用コンピュータがIBMパーソナルコンピュータやMacintoshといった新しい設計のコンピュータに取って代わられるにつれ、BASICは以前ほど広く使われなくなりましたが、根強い支持者も残っていました。Visual Basicの登場によって人気が再燃し、最新バージョンであるVisual Basic .NETは、 Microsoft Windowsプラットフォーム上で現在も広く利用されています。

Altair BASICインタープリタは、Microsoft の創設者であるPaul AllenとBill Gates が、PDP-10ミニコンピュータ上で動作する自作のIntel 8080エミュレータを使用して開発しました。[ 1 ] MS 方言は、 Gates が高校時代に使用していたDigital Equipment CorporationのPDP-10上のBASIC-PLUS をモデルにしています。[ 2 ]最初のバージョンは整数演算のみをサポートしていましたが、Monte Davidoff が浮動小数点演算が可能であることを説得し、 Microsoft Binary Formatとなるライブラリを作成しました。
Microsoft BASIC ファミリーの 8 ビット インタプリタ ( Altair BASIC、TRS-80 BASICなど) には、DEC のPDP-10 BASIC-PLUSに影響を受けた機能とコマンドがあります。これには、キーワード用の 1 バイト トークン、 整数用の %、文字列用の $、4 バイト浮動小数点Microsoft バイナリ フォーマット、 : ステートメント区切り文字、ファイル ハンドル用の #、ランダム ファイル アクセス (FIELD、GET、PUT、LSET、RSET) などが含まれます。Microsoft の BASIC の組み込み行エディタである EDIT コマンドは、TOPS-10 EDIT テキスト エディタの Alter サブコマンドに影響を受けました。[ 1 ]
Altair BASICは紙テープで提供され、初期バージョンでは4KBのメモリを消費しました。以下の関数とステートメントが利用可能でした。
LIST、NEW、PRINT、INPUT、IF...THEN、FOR...NEXT、SQR、RND、SIN、 、LET、USR、DATA、READ、REM、CLEAR、STOP、TAB、RESTORE、ABS、END、INT、RETURN、STEP、GOTOそしてGOSUB。
4K BASICには文字列変数はなく、サポートされている数値型は単精度32ビット浮動小数点のみでした。変数名は1文字(A~Z)または1文字の後に1桁の数字(0~9)が続く形式で、最大286個の数値変数を使用できました。
メモリ容量の多いマシン向けに、8 KB バージョンでは 31 個の追加ステートメントと、文字列変数および MID$ や文字列連結などの関連操作のサポートが追加されました。文字列変数は $ サフィックスで表され、これは後のバージョンの言語にも引き継がれました。その後、Microsoft は 12K Extended BASIC をリリースしました。これには、倍精度 64 ビット変数、構造体、ユーザー定義関数、より高度なプログラム編集コマンド、エラー番号ではなく説明的なエラー メッセージが含まれていましたIF。THEN数値ELSE変数には 3 つの基本型があり、 % は 16 ビット整数、# は 64 ビット倍精度、 ! は 32 ビット単精度を表していましたが、これはデフォルトの形式であったため、 ! はプログラムでほとんど見られません。
拡張された 8 KB バージョンは、BASIC-80 (8080/85、 Z80 )に一般化され、BASIC-68 ( 6800 )、BASIC-69 ( 6809 )、および6502 -BASIC に移植されました。6502 は、アセンブラ コードの密度がやや低く、サイズが拡張され、単精度バージョンでは 8K 弱、元の 32 ビット バージョンの代わりに中間 40 ビット浮動小数点形式を使用するバージョンでは 9K になりました。この新しい 40 ビット形式は、当時のほとんどの 6502 ベースのマシンで使用されたため、最も一般的な形式になりました。また、16 ビット BASIC-86 ( 8086/88 ) にも移植されました。
BASIC-80の最後のメジャーリリースはバージョン5.xで、1981年に登場し、40文字の変数名、ループ、動的文字列割り当て、その他いくつかの機能が追加されましたWHILE。BASIC WEND5.xでは、プログラム行を圧縮する機能が削除されました。
Microsoft BASIC のコアとなるコマンドセットと構文は、すべての実装で同じです。一般的に、ハードウェア固有の機能や倍精度浮動小数点数 (一部の実装ではサポートされていません) を使用しない限り、プログラムはどのバージョンでも実行できます。
Altair BASIC の初期の成功の後、Microsoft BASIC は収益性の高いソフトウェア ライセンス ビジネスの基盤となり、1970 年代、特に 1980 年代の数多くの家庭用コンピュータやその他のパーソナル コンピュータの大部分に移植され、その過程で拡張されました。オリジナルの Altair BASIC とは異なり、ほとんどの家庭用コンピュータの BASIC はROMに格納されているため、電源投入時に特徴的な「 」プロンプトの形でマシン上で使用できます。したがって、Microsoft およびその他の BASIC の派生版は、多くの家庭用コンピュータの基本的なオペレーティングシステムのユーザー インターフェイスREADYの重要な目に見える部分を構成しています。
マイクロソフトは、DECsystem-20を使用して、条件付きコンパイルを使用して、同じソースコードから数十種類の異なるコンピュータ システムと CPU 用のアセンブリ コードを作成しました。[ 3 ] 1981 年までに、Microsoft BASIC は非常に人気が高まり、すでに BASIC を持っていた企業でさえ、IBM が自社のパーソナル コンピュータ用に[ 4 ]、AtariがAtari Microsoft BASICと自社のAtari BASIC の両方を販売するなど、この言語のライセンスを取得しました。[ 5 ] IBM のDon Estridge氏は、「Microsoft BASIC は世界中に数十万人のユーザーがいました。これに反論できるでしょうか?」と述べています。[ 4 ]マイクロソフトは、互いに競合する企業に同様のバージョンをライセンスしました。たとえば、IBM Advanced BASIC (BASICA) を IBM にライセンスした後、マイクロソフトは互換性のあるGW-BASICをPC クローンのメーカーにライセンスし、小売顧客にコピーを販売しました。[ 6 ]同様に、同社はApplesoft互換の BASIC をVTechのLaser 128クローン用にライセンスしました。[ 7 ]
既知の変異型:
MBASICはCP/M -80およびISIS-IIに対応しています。TEKDOSにも対応しています。
MBASICは、ハードウェアに依存しない機能のみを備えた、簡略化されたBASIC-80です。しかし、CP/Mの人気により、Z80マシンの大部分は、特定のハードウェア向けにカスタマイズされたバージョンではなく、MBASICを実行していました(TRS-80 BASICは数少ない例外の1つでした)。MicrosoftのApple II用CP/Mカードには、Applesoft BASICのグラフィックコマンドの一部(など)を組み込んだMBASICの修正版が含まれていましたが、HPLOT完全なコマンドセットはサポートされていませんでした。
ファイルアロケーションテーブル(FAT)の8ビット版を使用した最初の実装は、1977/1978年にIntel 8080ベースのNCR 7200、[ nb 1 ] 7520、[ nb 1 ]または7530 [ nb 1 ] 8インチフロッピーディスク用のBASIC適応版[nb 1 ]でした。
マイクロソフトは1980年以前からCP/M上でBASIC-80用のBASICコンパイラを提供していた。コンパイラの実行ファイルはBASCOMまたはBASCOM32という名前だった。[ 9 ]
TRS-80 コンピュータは当初、Li-Chen Wang 氏のTiny BASIC ( Level I BASIC ) を改変したものが付属していましたが、数か月後には、Level I BASIC のコマンドセットの一部、特にグラフィック文字を設定するコマンドを組み込んだ BASIC-80 の移植版に置き換えられました。Level II BASIC には Extended BASIC の一部の機能が含まれていましたが、Level I コマンド ( や など) を含める必要があったためSET、PSET説明的なエラー メッセージなどの他の機能は省略せざるを得ませんでした。これらの機能は後に TRS-80 Disk BASIC に追加されました。
TRS-80 モデル 4 には、40 文字の変数名をサポートする BASIC-80 5.x コアを使用した新しいディスクベースの BASIC が搭載されていました。そのため、Level II のようにプログラム行を圧縮 (キーワードと引数の間にスペースを入れない) することはできなくなりました。文字列領域を予約する必要もなくなりました。新機能には、ユーザー定義関数 ( DEF FN) とキーワードによる TRSDOS 6 システム関数へのアクセスが含まれていましたSYSTEM。後に OS プロバイダーの Logical Systems が LS-DOS バージョン 6.3 アップデートで公開した修正版では、BASIC 制御関数 ( やLISTなどEDIT) への 1 文字アクセスと LS-DOS スーパーバイザ呼び出しへの直接アクセスが追加されました。プログラム編集環境は依然として行指向でした。Level II で利用できた配列のソート ( ) 機能はCMD"O"利用できず、プログラマとユーザーは独自の回避策を考案する必要がありました。
スタンドアロンのディスクベース言語システムとしての最初の実装は、 1979年にシアトル・コンピュータ・プロダクツ社のS-100バス8086 CPUカード向けに行われた。これは8ビットFATファイルシステムを使用していた。
マイクロソフトは1980年に、インテルの8086シングルボードコンピュータプラットフォーム向けSBC-86/12用のスタンドアロンBASIC-86のバージョンも提供した。
Microsoft は 1976 年夏に BASIC-80 を 6502 に移植しました。これは、BASIC-80 の 8K バージョンのほぼそのままの移植で、メモリ サイズと浮動小数点関数を有効にするかどうか (有効にすると 135 バイトのメモリが余分に必要) を尋ねるプロンプトは同じでした。6502 BASIC を使用した最初のマシンは、1977 年のOhio Scientific Model 500 とKIM-1でした。 [ 10 ] 6502 BASIC には、ユーザー定義関数や説明的なエラー メッセージなど、Extended BASIC の特定の機能が含まれていましたが、倍精度変数やステートメントなどの他の機能は省略されていましたPRINTUSING。倍精度変数がないことを補うために、Microsoft は BASIC-80 の 32 ビット浮動小数点の代わりに 40 ビット浮動小数点サポートを含め、文字列の割り当ては動的でした (したがって、BASIC-80 のようにユーザーが文字列領域を予約する必要はありませんでした)。しかし、ベンダーはメモリ使用量をわずかに削減するために、32ビット浮動小数点を使用したBASICを要求することもできた。例えば、Atari 8ビット用のDisk BASICは、40ビットではなく32ビット浮動小数点を使用していた。
Microsoft 6502 BASIC 9Kバージョンの標準機能には、以下のものが含まれていました。
GETキーの押下を検出するステートメント。6502 BASICには、ディスク出力やプリンタ出力のための標準化されたコマンドセットがなかった。これらのコマンドはベンダーが独自に追加する必要があり、実装ごとに大きく異なっていた。
6502 BASIC(1983年~)の後期の実装では、ベンダー固有の多くの改良が加えられました。例えば、Commodore BASICの後期バージョンには、以下のような機能がありました。
DIRECTORY、、、、、、、、、など)DSAVEDLOADBACKUPHEADERSCRATCHCOLLECTDVERIFYCOPYDELETERENAMECIRCLE、DRAW、BOX(COLOR背景、境界線など)、PAINT、SCALE)SSHAPEおよび、、など)とGSHAPEの論理演算ORANDXORVOL、SOUND)、後ほどC=128で音楽コマンド(ADSRおよびSIDフィルタプログラミング(ENVELOPEおよびFILTER)、、PLAYコマンドTEMPO)IF– THEN– ELSE、DO– LOOP– WHILE/ UNTIL– EXIT。JOY、ファンクションキーSTOP、CONT、TRON、TROFF、RESUMEWINDOWRENUMBER, NEW, MONITOR,RREG1980年代のマイクロソフトのカタログには、 FLEXオペレーティングシステムを実行するモトローラ6800および6809マイクロプロセッサ用のBASIC-68およびBASIC-69がそれぞれ利用可能であることが示されており、また、パーキンエルマー、オハイオニュークリア、パーテック、ソシエテオクシタンエレクトロニークシステムのOEMバージョンについても言及されています。[ 11 ] これは、基本的に「強化版」の6801である2つの日立6301 CPUを搭載したエプソンHX-20ポータブルコンピュータのMicrosoft/Epson BASICのベースにもなっている可能性が高いと思われます。BASIC-68およびBASIC-69のコア機能のほとんどは、BASIC-80から直接コピーされました。
BASIC-69 は Tandy にもライセンス供与され、 TRS-80 Color ComputerのColor BASICの中核を形成しました。MicrowareがColor Computer で利用可能なもう 1 つの OS であるOS-9の主要言語として作成した、まったく異なる BASIC であるBASIC09と混同しないでください(Microware は、Microsoft が拒否したため、Extended Color BASIC のバージョン 2.0 も作成しました)。Microsoft BASIC は、ウェールズで製造され、1980 年代初頭に英国の家庭用コンピュータ市場で限定的な成功を収めた Dragon 32 / 64 コンピュータにも含まれていました。Dragon コンピュータは、非常によく似たハードウェアで構築されていたため、Color Computer とほぼ互換性がありました。
マイクロソフトは、Z80プロセッサを搭載したMSXホームコンピュータ向けに、 ROMベースのMSX BASICを開発した。このバージョンはMSXコンピュータのグラフィックおよびサウンドシステムをサポートしており、一部のバージョンではディスクドライブもサポートしていた。
現在、 Microsoft WindowsやDOSには、Microsoft BASIC(BASICA、GW-BASIC、QuickBASIC、QBasic)のどのバージョンも同梱されていません。しかし、最新のコンピューターでも動作するバージョンは、様々なインターネットサイトからダウンロードしたり、古いDOSディスクから入手したりすることができます。
Microsoft BASICの最新版はVisual Basic .NETであり、 C++とC#の一部の機能を取り入れ、Webフォーム、Windowsフォーム、コンソールアプリケーション、サーバーベースアプリケーションの開発に使用できます。ほとんどの.NETコードサンプルはC#だけでなくVB.NETでも示されており、VB.NETは以前Visual Basicを使用していたプログラマーに依然として好まれています。
2008 年 10 月に、マイクロソフトはSmall Basicをリリースしました。[ 12 ]この言語にはキーワードが 14 個しかありません。[ 13 ] Small Basic バージョン 1.0 (2011 年 6 月 12 日) [ 14 ]は、完全な教師用カリキュラム[ 15 ]、入門ガイド[ 16 ]、およびいくつかの電子書籍[ 17 ]を含む更新された Microsoft MSDN Web サイトとともにリリースされました。Small Basic は、8 歳[ 18 ]という幼い生徒でもコンピュータ プログラミングの基礎を学び、ダウンロード可能なソフトウェアであるVisual Studio Expressを介して Visual Basic に進み、 Visual C#、VB.NET、Visual C++を学習することで基礎をさらに発展させることができるようにすることを目的としています。[ 19 ]
ビル・ゲイツは、マイクロソフトの創立50周年を記念して、8080アセンブリ言語で書かれ、ハーバード大学のPDP-10メインフレーム上のIntel 8080エミュレータで動作していたマイクロソフトのオリジナルソースコードを公開した。[ 20 ]ゲイツが「最高にクール」と考えるこのコードは、Altair 8800に触発されたもので、BASICインタープリタの作成とIntel 8080チップのシミュレーションが含まれていた。スキャンされたコードの157ページのPDFは閲覧可能で、マイクロソフトの初期の歴史を垣間見ることができる。[ 21 ] [ 22 ] [ 23 ]