GW-BASICは、 IBM BASICAを基にマイクロソフトが開発したBASICプログラミング言語の方言です。機能的にはBASICAと同一で、そのBASICインタープリタは完全に自己完結型の実行ファイルであり、オリジナル版に付属していたカセットBASIC ROMは不要です。マイクロソフトは、IBM PC互換機のMS-DOSオペレーティングシステムにGW-BASICをバンドルしていました。
この言語は、簡単なゲームやビジネス プログラムなどに適しています。ほとんどのバージョンの MS-DOS に付属していたため、多くのプログラマー志望者がコンピュータ プログラミングの基礎を学ぶための低コストの方法でもありました。[ 2 ] [ 3 ]マイクロソフトは、より高速なプログラム向けに、GW-BASIC と互換性のあるBASICコンパイラである BASCOM も販売していました。
マーク・ジョーンズ・ロレンツォによれば、その言語の範囲を考えると、「GW-BASICは、Altair BASICに遡るマイクロソフトの行番号付きBASICファミリーの最高峰であり、おそらく行番号付きBASIC全般の最高峰でもあると言えるでしょう。」[ 4 ]
MS-DOS 5.0のリリースに伴い、GW-BASICはQBasicに取って代わられた。QBasicは、別売りのQuickBASICインタープリタおよびコンパイラパッケージのインタープリタ部分を若干簡略化したバージョンである。[ 5 ]
2020年5月21日、マイクロソフトはGW-BASIC 1.0の8088アセンブラソースコードをMITライセンスの下でGitHubに公開した。[ 1 ]
IBM BASICAとGW-BASICは、基本的にMBASICバージョン5.xの移植版ですが、IBM PCハードウェア向けに特化した機能が追加されています。BASIC-80 5.xとBASICA/GW-BASICの共通機能は以下のとおりです。
WHILE...WENDループOPTION BASE配列変数の開始インデックスを0または1に設定するステートメントLINE INPUTこれにより、カンマなどのフィールド区切り文字を無視することが可能になった。CALL機械語ルーチンを実行するためのステートメントCHAINおよびMERGEコマンドスペースを省略してプログラム行を「圧縮」する機能は、以前のMicrosoft BASIC実装では一般的な機能でしたが、BASIC-80 5.xおよびBASICA/GWBASICでは削除されました。
BASIC-80 のプログラムでPEEK/POKEステートメントを使用しないものは GW-BASIC で実行されます。BASICA は IBM PC にサウンド、グラフィック、メモリ コマンドなどの多くの機能を追加します。BASIC-80 にはない機能には、RNDパラメータなしで関数を実行する機能や、プログラムを「保護」形式で保存して編集されないようにする機能などがあります。BASICA では、8 ビット版の BASIC では許可されていなかった、 、、LISTなどの数学関数や三角関数で倍精度浮動小数点数を使用することもできます。この機能は通常は有効になっておらず、起動時にオプション パラメータ (つまり ) が必要でした。これを使用すると、 BASIC のメモリ使用量がわずかに増加しました。COSSINATN/DGWBASIC /D
マイクロソフトは、1986年のバージョン3.20まで汎用版のMS-DOSを提供しませんでした。それ以前は、オペレーティングシステムのすべてのバージョンはOEM版でした。OEMによって、BASICはBASICA.EXEまたはGWBASIC.EXEとして配布されていました。前者は常にCOMファイルとして提供されていたIBM BASICAと混同しないように注意が必要です。BASICのバージョンによっては、特定の機種をサポートするための追加機能が搭載されているものもあります。例えば、AT&T版とTandy版のDOSには、強化されたサウンド機能とグラフィック機能をサポートする特別なGW-BASICが含まれています。
GW-BASICの初期バージョンは、 1983年にCompaq PortableとともにリリースされたCompaq DOS 1.13に付属していたもので、IBM BASICA 1.10に相当するものでした。ディスクアクセスにはCP/M由来のファイル制御ブロックを使用し、サブディレクトリはサポートしていませんでした。後のバージョンでは、サブディレクトリのサポート、グラフィック機能の向上、その他の機能が実装されています。
GW-BASIC 3.20 (1986) ではEGAグラフィックのサポートが追加され (BASICA や GW-BASIC のどのバージョンにもVGAサポートはありませんでした)、 QBasicに取って代わられる前にリリースされた最後の主要な新バージョンです。
Hercules Graphics Cardの購入者は、カードのユーティリティディスクに収録されたHBASICと呼ばれる特別なバージョンのGW-BASICを受け取ることができました。HBASICは、720×348ピクセルのモノクログラフィックに対応しています。他のバージョンのBASICA/GW-BASICはHercules Graphicsをサポートしておらず、SIMCGAなどのサードパーティ製CGAエミュレーションを使用することでしか、そのカード上のグラフィックを表示できません。
GW-BASIC はDartmouth BASICをベースにしたコマンドラインベースの統合開発環境(IDE) を備えています。カーソル移動キーを使用すると、画面に表示されている任意の行を編集できます。また、画面下部にはファンクションキーのショートカットも含まれています。他の初期のマイクロコンピュータ版 BASIC と同様に、GW-BASIC にはローカル変数など、構造化プログラミングに必要な構造の多くが欠けています。GW-BASIC プログラムはインタプリタ言語であるため、比較的低速で実行されます。すべてのプログラム行には番号を付ける必要があり、番号のない行はすべて、直接モードで即座に実行されるコマンドとみなされます。プログラムソースファイルは通常、キーワードをトークンに置き換えたバイナリ圧縮形式で保存され、 ASCIIテキスト形式で保存するオプションもあります。[ 6 ]
GW-BASIC のコマンドライン環境には、現在のプログラム、オペレーティング マシンに戻る、終了、終了などのコマンドがありますRUN。LOADこれらのSAVEコマンドはプログラムステートメントとしても使用できます。GW -BASIC では構造化プログラミングのサポートはほとんどありません。すべての/ /条件文は1 行に記述する必要がありますが、/ステートメントは複数行をグループ化できます。関数は、単一行ステートメント (例: ) を使用してのみ定義できます。変数のデータ型は、変数名の末尾に文字を付けることで指定できます。は文字列、は整数などです。変数のグループは、 、 、などのステートメントを使用して、名前の最初の文字に基づいてデフォルトの型に設定することもできます。このような型指定ステートメントで識別されない未宣言変数のデフォルトの型は、単精度浮動小数点数( 32 ビット MBF ) です。[ 7 ]LISTSYSTEMIFTHENELSEWHILEWENDDEF FNf(x)=<mathematical function of x>DEFFNLOG(base,number)=LOG(number)/LOG(base)A$A%DEFINTDEFSTR
GW-BASIC では、ジョイスティックやライトペンなどの入力デバイスを使用できます。GW-BASIC はファイルやCOM ポートの読み書きが可能で、ポートのイベント トラップも実行できます。オリジナルの IBM PC のカセット テープ ポート インターフェイスは 互換機では実装されなかったため、カセットの操作はサポートされていません。GW-BASIC では、音楽マクロ言語PLAYで表現された音符の文字列(例: ) を必要とするステートメントを使用して、簡単な音楽を再生できます。IBM マシンの標準内蔵PC スピーカーの場合、ヘルツ単位の周波数とクロック ティック単位の長さを引数として取るステートメントを使用すると、より低レベルの制御が可能になります。したがって、サウンドは「ビジネス」マシンにふさわしく、単一チャンネルのビープ音とホイッスル音に限定されます。Tandy 1000用の GW-BASIC では、およびコマンドで最大 3 チャンネルのサウンドを使用できます。[ 7 ]PLAY "edcdeeL2edfedL4c"SOUNDSOUNDPLAY
イニシャル「GW」が何を表しているかについては、いくつかの説があります。マイクロソフトの初期の従業員で、同社のBASICコンパイララインの標準を開発したグレッグ・ウィッテン氏は、ビル・ゲイツがGW-BASICという名前を選んだと述べています。ウィッテン氏はこれをGee-Whiz BASICと呼んでおり、ゲイツが自分の名前からこのプログラムに名前を付けたかどうかは確信が持てないとしています。[ 8 ]マイクロソフトプレスのMicrosoft User Manualでも、 Gee-Whiz BASICという名前で言及されています。また、グラフィックコマンドが多数あったことから、 Gee-Whizというニックネームが付けられた可能性もあります。 [ 8 ]イニシャルの由来に関するその他の一般的な説としては、「Graphics and Windows」、「Gates, William」(当時のマイクロソフト社長)、または「Gates–Whitten」(このプログラムの主な設計者2人)などがあります。[ 9 ] [ 10 ]ゲイツ自身もBASICの25周年を記念する記事を書いており、その中でGW-BASICは「Gee Whizの略」だと述べています。[ 11 ]