N-BASIC

出典: フリー百科事典『ウィキペディア(Wikipedia)』
ナビゲーションに移動 検索に移動

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としては最先端の機能を備え、完成度が高く、後の同種の環境の模範となった。ただし、後のN88-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に搭載されたN80-BASICは、N-BASICの24KBのROMをそのまま利用し、それに8KBの拡張ROMを増設する形で実装されている。

バージョン[編集]

Ver. 1.0
PC-8001に搭載された初期のバージョン。80桁モードでプログラムを編集すると80桁目が欠けるなどのバグがあった。
Ver. 1.1
PC-8001に搭載された後期のバージョン。バグが修正されている。Ver.1.0のユーザーは「ニューバージョンROM」としてBit-INNで有償で入手して交換することが出来た。
Ver. 1.2
PC-8801に搭載されたバージョン。PC-8801はPC-8001と比べてキーボードなど一部ハードウェアが異なるため、それに対応するための変更が加えられている。
Ver. 1.3
PC-8001mkIIに搭載されたバージョン。TABキーに対応。
Ver. 1.4
PC-8801mkIIに搭載されたバージョン。

その後も後継機種に搭載され続け、最大Ver.1.8まで上がっていたが、機能には変更はない。

命令・関数[編集]

特徴的な命令や関数[編集]

N-BASICの特徴的な命令・関数を示す。

CONSOLE
スクロール範囲、ファンクションキーの表示、カラーモードを設定する。
COLOR
文字色あるいは属性、グラフィックモードを設定する。
KEY
ファンクションキーに文字列を登録する。
LINE
  1. キャラクタを用いて線や長方形を描画する。
  2. 簡易グラフィック機能を用いて線や長方形を描画する。
  3. カラーモードにおいて行ごとの表示属性(ブリンク、リバースなど)を設定する。
PSET/PRESET
簡易グラフィック機能により点を打ったり消したりする。
CSAVE/CLOAD/CLOAD?命令
テープに対してプログラムをセーブ・ロード・ベリファイする。
CLEAR
変数を消去し、文字列領域と機械語領域を確保する。
USR関数
機械語で書かれたプログラムを呼び出す。
MON命令
機械語モニタに入る。
MOUNT/REMOVE命令(DISK-BASICのみ)
フロッピーディスクを挿入したときにMOUNTによりFATを読み込み、抜く前にREMOVEによりFATを書き出す。FATの読み書きをメモリ上でのみ行うようにしてアクセスの高速化を図ったものだが、REMOVEを忘れてフロッピーの内容を破壊するという事故がおきやすい。また、REMOBEなどとタイプミスをするとREM文と解釈されてしまい、内部では何も処理されず(エラー表示もされない)、やはり記録内容の破壊につながった。これら注意を要する扱いづらさのため、大変評判が悪かった。PC-9801用のN-BASIC(86)ではこの命令を使用しなくても自動でMOUNT/REMOVEされる(互換性の為のダミー命令としてMOUNT/REMOVE文は残されている)。またN80/N88-DISK BASICでは不要となり、命令自体の削除となっている。 ベースとなったCP/MMicrosoft BASICにも同じ命令があった。

組み込まれなかった命令[編集]

N-BASICでは、以下に示す命令は組み込まれなかった。

  • 描画関連
    • CIRCLE - 円弧描画
    • PAINT - 塗りつぶし
    • CLS - 画面消去
  • 機械語関連
    • BSAVE/BLOAD - バイナリデータの読み込み・保存
    • CALL - 機械語プログラムの呼び出し
  • その他
    • ON KEY GOSUB, ON STOP GOSUB - キー操作による割り込み
    • RANDOMIZE - 一様乱数の初期化

描画関連のうちCLS(画面消去)は、消去を行う文字コードを表示させることでその機能を代替している(例 - PRINT CHR$(12))。また、バイナリデータの読み込み・保存は、機械語モニタにより行い、機械語プログラムの呼び出しは、前述のUSR関数により行う。CIRCLE命令は、三角関数とPSET命令で円を描くサンプルプログラムがマニュアルに記載されていた。乱数の初期化はRND関数の添え字に負数を与えることで行えた。

使用されていなかった予約語[編集]

また、N-BASICには以下のような未使用予約語が存在し、将来的な機能拡張が想定されていた。実際には、N80-BASICやGP-IBなどの特殊な拡張ROMで使用された。

  • CMD
  • STATUS
  • IEEE
  • IRESET
  • ISET
  • LISTEN
  • MAT
  • POLL
  • RBYTE
  • SRQ
  • TALK
  • WBYTE

その他[編集]

PC-8001にはTABキーが付いていなかったが、N-BASICでは初期状態でファンクションキーF1に文字コード09(Horizontal Tabulation)を設定することでTABキーの代替としていた。