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としては最先端の機能を備え、完成度が高く、後の同種の環境の模範となった。ただし、後の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を増設する形で実装されている。
開発
[編集]N-BASICはマイクロソフトのDISK BASIC version 4.51をベースに、PC-8001用にグラフィック機能や通信機能を強化して開発された[1]。ビル・ゲイツと西和彦が主設計を担当し、マーク・ウィルソンがプログラムのコーディングを担当した[2]。
PC-8001の開発は1978年夏頃に始まった。開発を指揮していた渡辺和也は、アスキーの西和彦の仲介でマイクロソフトのBASICとビル・ゲイツの紹介を受けた。渡辺はマイクロソフトやアメリカの市場調査に向かおうと考えたが、当時のマイクロソフトは社員10名余りのベンチャー企業で、パソコン市場も創生期にあって公に認知されておらず、出張の言い訳が難しかった。そこで、1978年11月にロサンゼルスで開催された見本市『ウェスト・コースト・コンピュータ・フェア』を見学するという理由を付けてアメリカに渡り、見本市の見学は1日で済ませて、マイクロソフトへの訪問や市場調査に向かった[3]。この出張で渡辺はアメリカでデファクトスタンダードの地位にあるマイクロソフトのBASICを採用すると決めた。NEC社内には既に土岐泰三がPC-8001用に開発していたBASICがあった。土岐のBASICは処理速度が優れていた。社内には大企業たるNECが小さな会社(マイクロソフト)からソフトウェアを買うことに抵抗感を示す者も少なくなかった。しかし、マイクロソフトのBASICは他社で使用されている実績があるためにバグの心配が少ない上、既にアメリカでデファクトスタンダードの地位を確立していたことから、渡辺は先を見据えてマイクロソフトのBASICを採用することにした[4][5]。西はマイクロソフトの日本代理店として最初の大型顧客を獲得するため、マイクロソフトのBASICを非常に安い価格でNECに提供した[6]。土岐が開発して採用が見送られたBASICはPC-8801のN88-BASICを開発する際に活用された[3]。PC-8001の成功を見た他のメーカーもマイクロソフトと交渉し始め、渡辺によればBASICの価格は1年後には1桁上がっていたという[7]。
バージョン
[編集]- Ver. 1.0
- PC-8001に搭載された初期のバージョン。80桁モードでプログラムを編集すると80桁目が欠けるなどのバグがあった。
- Ver. 1.1
- PC-8001に搭載された後期のバージョン。バグが修正されている。Ver.1.0のユーザーは「ニューバージョンROM」としてBit-INNで有償で入手して交換することが出来た。1981年4月以降のPC-8001に搭載。
- 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
文-
- キャラクタを用いて線や長方形を描画する。
- 簡易グラフィック機能(キャラクタ属性として2x8ドット/キャラクタ、80文字x25行なので、160x100ドット/画面)を用いて線や長方形を描画する。
- カラーモードにおいて行ごとの表示属性(ブリンク、リバースなど)を設定する。
PSET
/PRESET
文- 簡易グラフィック機能により点を打ったり消したりする。
CSAVE
/CLOAD
/CLOAD?
命令- テープに対してプログラムをセーブ・ロード・ベリファイする。
CLEAR
文- 変数を消去し、文字列領域と機械語領域を確保する。
USR
関数- 機械語で書かれたプログラムを呼び出す。
MON
命令- 機械語モニタに入る。
MOUNT
/REMOVE
命令(DISK-BASICのみ)- フロッピーディスクを挿入したときに
MOUNT
によりFAT(File Allocation Table)を読み込み、抜く前にREMOVE
によりFATを書き出す。FATの読み書きをメモリ上でのみ行うようにしてアクセスの高速化を図ったものだが、フロッピーディスクを挿入しMOUNT
を実行した後、ファイルを書き換えたり追加するなどメモリ上のFATが書き変わっている状態でREMOVE
を忘れてフロッピーディスクを排出した場合、変更されたFAT情報と実際のファイル位置が一致しなくなりフロッピーの内容を破壊するという事故がおきやすい(紙面での体験談[8])。また、REMOVE
せずにフロッピディスクを入れ替えてしまった場合においても、FATと実際のファイル位置に不整合を生じてしまうため、フロッピーの内容を破壊する事故になりやすくなる。さらに、REMOBEなどとタイプミスをするとREM文と解釈されてしまい、内部では何も処理されずエラー表示もされないため、REMOVE
命令の実行を見落とすこととなりやはり記録内容の破壊につながった。これら注意を要する扱いづらさのため、大変評判が悪かった。PC-9801用のN-BASIC(86)ではこの命令を使用しなくても自動でMOUNT/REMOVEされる(互換性の為のダミー命令としてMOUNT/REMOVE文は残されている)。またN80/N88-DISK BASICでは不要となり、命令自体の削除となっている。 ベースとなったCP/M用Microsoft 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
脚注
[編集]- ^ アスキーラボラトリーズ「LOAD TEST No.4: 日本電気株式会社 NEC PC-8001」『ASCII』第3巻第11号、アスキー出版、1979年、34-41頁、ISSN 0386-5428。
- ^ 「国産銘機列伝 : TRSモデル100―開発秘話 ビル・ゲイツにボーナスをもらったプログラマ」『ASCII』第22巻第6号、アスキー、1998年、323頁、ISSN 0386-5428。
- ^ a b 太田行生『パソコン誕生』日本電気文化センター、1983年3月25日、54-57頁。ISBN 4-930916-11-9。
- ^ 加藤明、「PC-8001の開発」 『電子情報通信学会 通信ソサイエティマガジン』 2010年 2010巻 15号 p.15_58-15_65, doi:10.1587/bplus.2010.15_58、電子情報通信学会
- ^ 富田倫生『パソコン創世記』ティビーエス・ブリタニカ、1994年 。2019年3月3日閲覧。
- ^ 後藤富雄「日本PC事始 その2: デバイス屋が創ったNECのパーソナル コンピュータ「PC-8001」」(PDF)『Encore』第45巻、SSIS半導体シニア協会、2006年。
- ^ 「秋葉原 ビットイン 誕生秘話 渡邊和也氏 インタビュー」『蘇るPC-9801伝説 永久保存版―月刊アスキー別冊』アスキー、2004年、98-103頁。ISBN 4-7561-4419-5。
- ^ ASCII 1983年7月号, p. 219.
参考文献
[編集]- 「ASCII 1983年7月号」第7巻第7号、株式会社アスキー出版、1983年7月1日。