MSX-BASIC
出典: フリー百科事典『ウィキペディア(Wikipedia)』
MSX-BASICは、MSXパソコンにROMで搭載されたBASIC。マイクロソフト製。他のマイクロソフト製BASICと基本的に同じ文法、ユーザインターフェースを持っていた。
目次 |
[編集] 概要
変数名が最初の2文字のみ有効、行番号を抽象化するラベルの概念がないため、GOTO命令等にラベルを指定できないなど、文法は他機種のBASICと比べると原型に近かった。
浮動小数点にはBCD(仮数部は6桁または14桁)を使用しており、誤差のない小数表現ができた。ただしMSX自体が当時の競合他機種と比較しても高速ではなかったこともあり、雑誌の投稿プログラムでは行頭ですべての変数に整数型を使うよう宣言(DEFINT A-Z)されることが多かった。
Z80のメモリ空間のうち前半32KBをMSX-BASICのROM(BIOSとBASICインタプリタ)、後半32KBをBASICの中間言語とワークエリアに配置する形式で動作する。MSX2以降の追加機能やディスクドライブを接続した際のDISK-BASICのためのROMは前半32KBをスロット切り替えすることで実装していた。
なおMSXのBIOSは通常のパソコンのBIOSとは意味合いが異なり、ハードウェアを隠蔽するために起動時だけでなくハードウェアドライバやシステムコールとして常に使われる性質が強い。MSX-BASICの内部処理もほとんどの場合BIOSを経由して処理が行われている(BIOSの中にはBASICインタプリタのための機能もいくつか存在している)。前述のBASIC上で行われるBCD浮動小数点演算もMATHPACKと呼ばれるサブルーチンライブラリとしてBASIC内で実装されており、機械語ベースのユーザープログラムやMSX-DOSアプリケーションからの使用も可能になっていた。
[編集] 拡張された命令
MSXの規格にあわせた次のような命令を持っていた。
- VPOKE,VPEEK : VRAMへの書き込み命令と読み込み関数。(MSXはVRAMのアドレス空間はメインメモリとは別。)
- VDP : 画像コントローラVDPのレジスタをBASICから直接読み書きする関数。
- ON ~ GOSUB : 割り込み命令。キーボード(KEY)、インターバルタイマ(INTERVAL)、スプライト衝突(SPRITE)などを検知して特定のサブルーチンをコール。
- CALL : スロットに接続されたデバイスの拡張命令を呼び出す。周辺機器の持つ拡張BIOSにCALL命令の処理ルーチンが格納されており、BASICプログラムから周辺機器をコントロールすることができた。短縮形はアンダーバー(_)。
- 例:MSX-DOSから「BASIC」コマンドでDISK-BASICを起動した場合、CALL SYSTEMを実行するとMSX-DOSが起動。
- PUT SPRITE : スプライトの表示位置・パターン・色を制御。
- SPRITE$(n) : スプライトのパターンを定義する関数。
[編集] DISK-BASIC
本体またはカートリッジスロットにフロッピーディスクドライブが存在する場合は、それらの内蔵ROMからDISK-BASICも併せて起動した。なおフロッピーディスクとDISK-BASICは本体の起動時にSHIFTキーを押しているとシステムから切り離すことができ、その分のワークエリアがRAMから解放された。
[編集] バージョン
MSX-BASICにはMSXの規格と対応してさまざまなバージョンがあった。すべてのバージョンで文法に上位互換性があり、スイッチによるモード切替などは必要としなかった。MSX TurboRでは起動時に「1」キーを押し続けるか、MSX-DOS1またはDISK-BASICのVersion1でフォーマットしたディスクで起動すると、旧来のZ80モードとなりDISK-BASICがVersion1で起動した。
[編集] Version1.x
MSX(1)用。
[編集] Version2.x
MSX2用。
- SCREEN命令やスプライト命令の拡張
- SET ADJUSTなどグラフィックに関するSET命令を多数追加
- マウスやトラックボール等の入力機器の情報取得
- カレンダ時計の設定、取得
- ROM空間に隠された裏RAMを使用するメモリディスクの命令
- 漢字ROM(オプション)の内容を出力するPUT KANJIを追加
- かな文字のローマ字入力モードを追加。
- V9938のVDPコマンドを利用したCOPY命令
- メインメモリ(配列の形で確保)と画面の矩形との間での転送だけでなく、画像をメインメモリを経由することなく矩形でコピーが可能。論理演算や透明色を適用でき、非常に容易にグラフィックを取り扱うことが可能となった。
[編集] Version3.x
MSX2+用。SCREEN命令のモード追加のほか、SET SCROLLなどを追加。平仮名などのフォントを変更し、SCREEN 0の横6ドット表示でも識別できるようになった。漢字BASICを標準搭載。
[編集] Version4.x
MSX TurboR用。R800の高速モードに対応。PCM機能などの命令を追加。MSX-DOS2内蔵によりDISK-BASICがVersion2になり、メモリマッパを使用するRAMDISK命令が追加。(互換Z80モードではVersion1で起動)
[編集] BASICコンパイラ
MSX-BASICには「MSXべーしっ君」という名称でMSX独自の機能を活用できるコンパイラも存在した。オンメモリのコンパイラで、通常のコンパイラと違い中間コードや機械語オブジェクトをファイルとしては生成しない。BASICプログラム内に拡張命令(CALL TURBO ON、CALL TURBO OFF)を組み込み、実行時にその拡張命令に処理が移るとワークエリアにその範囲の機械語オブジェクトが一時的に生成される仕組みとなっている(あるいは、RUN の代わりに拡張命令 CALL RUN により実行開始することで、プログラム全体の機械語オブジェクトを生成し実行させることもできた)。コンパイルした部分は浮動小数点が単精度型(3バイトの独自方式)のみに落ち、ディスク入出力などの機能が使用できないという制限があるものの、実行速度は最大で10倍程度も高速化される。
コンパイラはアスキーに所属していたプログラマ・鈴木仁志が作成した。初版は雑誌に発表され、後にアスキーからROMカートリッジで発売された。製品名は「MSXべーしっ君」で、製品の内容には何の関連もないが、当時MSXマガジン誌で連載していた4コママンガのタイトルを借用している。ソフトのパッケージには主人公・べーしっ君のイラストが描かれ、一見するとゲームソフトのようだった。付属のフロッピーディスクにはサンプルのマンデルブロ集合の描画やワイヤーフレームの3D迷路自動作成のプログラムが収められていた。
MSX2+が発表されると新機能に対応した「べーしっ君ぷらす」が発売されたほか、サンヨーのMSX2+であるWAVY77シリーズに同等のものが内蔵された。また、MSXTurboRが発表されると「べーしっ君たーぼ」が発売された。
カテゴリ: コンピュータ関連のスタブ項目 | BASIC | MSX