N-BASIC

N-BASIC（エヌベーシック）は、NEC（日本電気）のパソコンPC-8000シリーズ・PC-8800シリーズに搭載された、スタンドアロンBASICインタプリタの一種。Microsoft BASICを基にしている。
フロッピーディスクを扱えるように拡張されたものは、NECのマニュアル等ではDISK-BASICと呼んでいるが、ROM-BASICに対する普通名詞としてのDISK-BASICとまぎらわしいため、一般にはN-DISK-BASICなどと呼ばれる。
概要.
1979年に発売されたPC-8001に24KBのROMで搭載された。
倍精度実数演算やカラーグラフィックなど、当時のスタンドアロンBASICとしては最先端の機能を備え、完成度が高く、後の同種の環境の模範となった。ただし、後のN-BASICなどと比較すると、ラベルが使えない、変数名が先頭2文字しか識別されない、構造化制御文がないなど見劣りする点もある。
命令や関数の前後は、必ずしも空白文字で区切らなくてもよい。よって、
FORTRAN=ATOK5
と記述すると、「変数『FORTRAN』に、変数『ATOK5』の値を代入する命令（LET文）」ではなく、「『TRAN』という変数を、変数『A』の値を初期値、変数『K5』の値を終値としてループを回す命令（FOR文）」として解釈された。
N-BASICのROMを逆アセンブルして注釈をつけた『PC-8001 BASIC SOURCE PROGRAM LISTINGS』という書籍が秀和システムトレーディング（現・秀和システム）から出版され、マイクロソフトとの間で訴訟問題に発展するという事件もあった。
N-BASICで開発されたソフトウェア資産が膨大であったため、N-BASICはその後のPC-8000シリーズ・PC-8800シリーズにも搭載された。また、PC-9800シリーズにもオプションROMの形で提供されていた。
PC-8001mkII/SRに搭載されたN-BASICは、N-BASICの24KBのROMをそのまま利用し、それに8KBの拡張ROMを増設する形で実装されている。
開発.
N-BASICはマイクロソフトのDISK BASIC version 4.51をベースに、PC-8001用にグラフィック機能や通信機能を強化して開発された。ビル・ゲイツと西和彦が主設計を担当し、マーク・ウィルソンがプログラムのコーディングを担当した。
PC-8001の開発は1978年夏頃に始まった。開発を指揮していた渡辺和也は、アスキーの西和彦の仲介でマイクロソフトのBASICとビル・ゲイツの紹介を受けた。渡辺はマイクロソフトやアメリカの市場調査に向かおうと考えたが、当時のマイクロソフトは社員10名余りのベンチャー企業で、パソコン市場も創生期にあって公に認知されておらず、出張の言い訳が難しかった。そこで、1978年11月にロサンゼルスで開催された見本市『ウェスト・コースト・コンピュータ・フェア』を見学するという理由を付けてアメリカに渡り、見本市の見学は1日で済ませて、マイクロソフトへの訪問や市場調査に向かった。この出張で渡辺はアメリカでデファクトスタンダードの地位にあるマイクロソフトのBASICを採用すると決めた。NEC社内には既に土岐泰三がPC-8001用に開発していたBASICがあった。土岐のBASICは処理速度が優れていた。社内には大企業たるNECが小さな会社（マイクロソフト）からソフトウェアを買うことに抵抗感を示す者も少なくなかった。しかし、マイクロソフトのBASICは他社で使用されている実績があるためにバグの心配が少ない上、既にアメリカでデファクトスタンダードの地位を確立していたことから、渡辺は先を見据えてマイクロソフトのBASICを採用することにした。西はマイクロソフトの日本代理店として最初の大型顧客を獲得するため、マイクロソフトのBASICを非常に安い価格でNECに提供した。土岐が開発して採用が見送られたBASICはPC-8801のN88-BASICを開発する際に活用された。PC-8001の成功を見た他のメーカーもマイクロソフトと交渉し始め、渡辺によればBASICの価格は1年後には1桁上がっていたという。
バージョン.
その後も後継機種に搭載され続け、最大Ver.1.8まで上がっていたが、機能には変更はない。
命令・関数.
特徴的な命令や関数.
N-BASICの特徴的な命令・関数を示す。
組み込まれなかった命令.
N-BASICでは、以下に示す命令は組み込まれなかった。
描画関連のうちcodice_21（画面消去）は、消去を行う文字コードを表示させることでその機能を代替している（例 - codice_29）。また、バイナリデータの読み込み・保存は、機械語モニタにより行い、機械語プログラムの呼び出しは、前述のcodice_11関数により行う。codice_19命令は、三角関数とcodice_5命令で円を描くサンプルプログラムがマニュアルに記載されていた。乱数の初期化はcodice_33関数の添え字に負数を与えることで行えた。
使用されていなかった予約語.
また、N-BASICには以下のような未使用予約語が存在し、将来的な機能拡張が想定されていた。実際には、N-BASICやGP-IBなどの特殊な拡張ROMで使用された。