N88-BASIC
N88-BASIC(エヌハチハチベーシック)は、NEC(日本電気)のパーソナルコンピュータPC-8800シリーズ・PC-9800シリーズに搭載され、標準プログラミング言語として使用されたスタンドアロンBASICインタプリタである。
ブート時にディスクドライブを用いず、ROMから自動的に起動するものを特に「ROM-BASIC」と呼び、専用ディスクから起動してFDDやHDDを扱えるように機能拡張したものを「DISK-BASIC」と呼び、またMS-DOS上で動作する(スタンドアロンでない)ものを「DOS-BASIC」と呼んだ。初期はROM-BASICばかりだったが、FDDの普及に伴い、DISK-BASICも多く利用できるようになり、MS-DOSの普及に伴い、MS-DOS上で動作するDOS-BASICも利用されるようになった。
DISK-BASICは、PC-9801ではMS-DOSが普及する以前はオペレーティングシステムとして使用されていた(一部にはDISK-BASICの無い機種もある)。
目次
N88-BASIC、N88-DISK BASIC、N88-日本語BASIC
N88-BASICは、1981年にNECから発表されたPC-8801に初めて搭載されたスタンドアロンBASICである。同社のPC-8001に搭載されていたN-BASICを大幅に機能拡張して作られた。
N-BASICとは、ある程度の上位互換性を持つため、PC-8001で作られたプログラムを実行させることも出来たが、完全上位互換ではなかった。N-DISK BASICとファイルフォーマットに互換があるが、BASICの中間コードが違うために、プログラムファイルをやり取りするにはアスキー形式で保存しておく必要があった。また、N-BASICとは小数から整数への丸め規則なども異なる。
言語仕様的にはマイクロソフトのLevel-3 BASICインタプリタ(浮動小数点対応で、一般的にはM-BASIC 4.5として知られている)がベースである。
PC-8800シリーズには(カセットインターフェースが標準搭載されなくなった後も)ROMで搭載されたほか、PC-8801mkII以降では、FDD搭載モデルにおいてDISK BASICのFDが添付された。N88-BASICのDISK-BASIC版は、N88-DISK BASICと呼ぶ。
なお、PC-88VA以外のPC-8800シリーズには、ROM版のN-BASICもN88-BASICと共に搭載されていた。
N88-BASICには、PC-8800シリーズの機能拡張に合わせて、V1、V2、V3の各メジャーバージョンがある。
V1はV2より前のバージョンである。「V1」は、V2の出現時に、V2以降と区別するために付けられた呼称であり、もともとは「無印」であった。
V2はPC-8801mkIISRから新規に搭載され、アナログRGB採用で大幅に増えた表示色や、FM音源などの新機能が扱えるようにV1を拡張したものである。V1のプログラムについて、ほぼ完全と言ってよい上位互換性を持っている。
V3(N88-日本語BASIC V3)はPC-88VAシリーズ用に新規に作成されたBASICであり、V2までのBASICの上位互換ではあるが完全上位互換ではなく、PC-Engineと呼ばれる独自OSから起動して使うもので、その意味ではスタンドアロンBASICではない。機能的にもN88-BASICよりは、むしろN88-日本語BASIC(86)に近い。標準で日本語を扱うことができ、ハードウェア・スクロールやスプライト、マウスやメニューバー等も利用できた。また、音楽作成ソフト「インスタント・ミュージック」で作成したファイルをBGMとして鳴らしたり、アニメ作成ソフト「アニメフレーマー」で作成したコンピュータアニメーションを再生することもできた。
また、V1およびV2対応の日本語拡張として、N88-漢字BASICやN88-日本語BASIC(両者の間では漢字の内部表現形式が異なる。前者はKI(FAh)/KO(FDh)コードおよびJISコードの上位と下位を反転させたもの、後者はShift_JIS)が発売された。同様のコンセプトを持つ8801漢字BASICや新8801漢字BASIC(NEC製の漢字/日本語BASICとは内部表現形式が異なる(7FhのKI/KOコード(同じコードでのトグル)およびEUCコード)ため、コンバータが存在した)が福岡のシステムソフトという会社からも発売されていた。ただし、PC-88VA以外のPC-8800シリーズには日本語表示用のテキストVRAMが存在しないため、これらのBASICではGVRAM(グラフィック画面)に文字を描画していた。
このほか、V1/V2には「タートルグラフィックス拡張命令」も用意された。外部プログラムで拡張モジュールをロードすると、LOGOを簡略化したような文法でグラフィックスを描画させる命令などが追加された。PC-8801MH/FH以降の機種にはバンドルされなくなったが、その理由としては利用頻度の低さに加え、本体の動作クロックが8MHz対応になり、同モジュールのCMD SING命令の音程が変わってしまった(パッチを当てないと音程が高くなる)ことが挙げられる。
N88-BASIC(86)、N88-DISK BASIC(86)、N88-日本語BASIC(86)
N88-BASIC(86)は、PC-9800シリーズ(1982年発売開始)のROM-BASICである。8ビット機時代のN-BASICとN88-BASICはNEC・マイクロソフトの共同開発であったが、N88-BASIC(86)は全面的にNEC側のみによる開発である。管理工学研究所も開発作業の一部を受託している[1]。
名称の(86)は、98のCPUに採用したx86系プロセッサに由来する。
それ以前のPC-8800シリーズのN88-BASICと、高いレベルで互換性がある。また移植を支援するために、88ではハードウェアで実現されていた機能をソフトウェア的に互換に見えるようにしている点などもあり、たとえばPC-9801のキーボードはマイコンを内蔵したシリアル接続タイプで、ハードウェア的には直接読み取ることはできなかったが、PC-8801ではメインCPUのI/Oにパラレル接続だったため、PC-9800シリーズでもBASIC上からはPC-8800シリーズ同様にI/O命令でキースキャンコードと同等のものを取得できるようになっていた(アドレスは異なるが、ビットの配置は合わせてあった)。
NECは開発にあたって、N88-BASICの、仕様というよりはバグのようなふるまいまで忠実に再現した。そういった事情から、マイクロソフト(実体としては日本で当時その代理的立場にあったアスキーの西ら)と衝突する可能性があったが、最終的に、マイクロソフトから相当額の別の製品を購入すること、権利表示にはマイクロソフトの名前を併記すること、を条件として決着した(そのために起動時のメッセージではNECの他マイクロソフトとも表示されている)。これらの込み入った事情についての詳細は富田倫生『パソコン創世記』[2]を参照のこと。
N88-DISK BASIC(86)も発売された。N88-DISK BASICとディスクフォーマットは互換があるが、BASICの中間コードおよび漢字の内部表現形式が違うために、プログラムファイルをやり取りするには「アスキー形式」(ソースコード文字列を保存する形式。メモリ中の中間コードのまま保存する「バイナリ形式」に対してそう呼んでいた)で保存しておく必要があった。N88-DISK BASIC(86)はその後、「KANJI.DIC」や「BUNSET.SU」「NECAI(KNJAI.DIC)」という日本語入力システムが付属するなどしてN88-日本語BASIC(86)という名称になっている。
ROM-BASICは、PC-9800シリーズにカセットインターフェースが標準搭載されなくなった後も、互換性のために搭載されていた。カセットインターフェース非搭載機種のROM-BASIC環境では、パソコン単体でのプログラムのセーブ・ロードは出来ないが、RS-232Cを介してセーブ・ロードできる。
MS-DOS版、コンパイラ版
後にPC-9800シリーズが標準オペレーティングシステムをMS-DOSに移行した際、もっぱらプログラミング言語目的のMS-DOS版N88-BASIC(86)インタプリタも発売された。ただし両者は漢字コードの扱いが異なり、MS-DOS版ではPC-98シリーズ独自の文字が扱えるキャラクタモードと漢字が扱える漢字モードが排他仕様(CONSOLE命令で切り替え可能)で、DISK-BASIC版は同時に両方扱うことができるなどの違いがあった。
MS-DOS版にはBASICコンパイラも用意されていたが、高価な上、インタプリタ環境とコンパイラ環境の構造的な相違により、全てのプログラムがコンパイル可能というわけではなかった。また、コンパイルすると実行ファイルを出力するが、その中身は中間言語による中間表現であり、かつその実行ファイルの実行には、外部に、N88BASIC.LIBという百数十KBほどある、中間言語のインタプリタを含んだランタイムライブラリが必要であり、パソコン通信やフロッピーディスク主体の当時では、配布には不向きであった。
互換機対策として特定のROM領域をチェックする為、そのままではEPSON98互換機では動作せずパッチを当てる必要が有った。
DISK-BASICとMS-DOSでファイルをやり取りするため、MS-DOS上でファイルフォーマットを変換するツールがあった。先述の文字コードの扱いの違いがあるため、DISK-BASIC版でキャラクタコードと漢字の両方を扱うプログラムをDOS変換すると文字化けが発生した。
MS-Windows版
極端に動作速度が遅く、また画面周りの互換性も乏しかったため、あまり実用的とはいえず普及しなかったものの、MS-Windows版N88-BASIC(WN)インタプリタも発売された。
MS-Windows 2.xx向けのものであり、MS-Windows 3.0(スタンダード及びエンハンストモード)以降では動作しない(リアルモードではかろうじて動作するもののフリーエリアがほとんど無い)。MS-Windowsのメタデータ機能などに対応している。
互換BASIC
EPSON DISK BASIC
互換性のある処理系としてEPSON DISK BASICが発売されていた。これはPC-9800シリーズの互換機であったEPSON PCシリーズでBASICソフトウェア資産を利用できるようにするため開発されたもので、N88-BASICとほぼ同等である[3]。
BASIC/98
N88-BASIC(86)と文法互換で、「インクリメンタルコンパイル」と呼称する実行時コンパイル処理により実行速度を高速にしたBASIC/98が存在し、PC-9800シリーズと、その他の各機種に発売されている。
行分けIF文、ローカル変数を持つサブルーチン、関数など、構造化プログラミングをサポートする機能が拡張されている。 しかし、当時のパソコンで使用するにはフリーエリアが極端に少なく、大きなソースを実行できない、多量の配列を確保できないなどの問題点があった。
その後、MS-Windows用が発売され、MS-DOS用とほぼ同じ機能を実現している。 MS-Windows版では、フリーエリアの制限がほぼ撤廃され、大きなソースプログラムの実行、巨大な配列の使用が可能になった。また、Windows用であるにもかかわらず、I/Oポートへのアクセスが可能となっている。
N88互換BASIC
Windowsのフリーソフトとして「N88互換BASIC for Windows」「N88互換BASIC for Windows95」が存在する。
Be88-BASIC
BeOS/ZETAのフリーソフトとして、他のフリー互換BASICと比較してかなり互換性の高い「Be88-BASIC」が存在する。
注
- ↑ 『パソコン創世記』に「ベーシックの開発作業の一部を発注された管理工学研究所」「日本電気の情報処理事業グループからの仕事も受託してきた管理工学研究所」という記述があるテンプレート:要ページ番号
- ↑ 青空文庫版『パソコン創世記』
- ↑ 一例として、PLAY文でバックグラウンド演奏時にバッファがあふれる時、エラーになるか、エラーにはならず実行が待たされるだけか、という違いがある。