コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
Wikippe
検索
検索
表示
ログイン
個人用ツール
ログイン
MSX-BASICのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
MSX-BASIC
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
要求した操作を行うことは許可されていません。
このページのソースの閲覧やコピーができます。
{{出典の明記|date=2012年12月}} '''MSX-BASIC'''(エムエスエックス ベイシック)は、[[MSX]]パソコンに[[Read Only Memory|ROM]]で搭載された[[BASIC]]。[[マイクロソフト]]製。他のマイクロソフト製BASICと基本的に同じ文法、[[ユーザーインターフェース]]を持っていた。 == 概要 == 変数名が最初の2文字のみ有効、行番号を抽象化するラベルの概念がないため、<code>[[Goto文|GOTO]]</code>命令等にラベルを指定できないなど、文法は他機種のBASICと比べると原型に近かった。 [[浮動小数点]]には[[二進化十進表現|BCD]](仮数部は6桁または14桁)を使用していた。 [[Z80]]のメモリ空間のうち前半32KBをBIOSとBASICインタプリタのROM、後半32KBにBASICの中間言語とワークエリアを配置する形式で動作する。MSX2以降の追加機能やディスクドライブを接続した際のDISK-BASICのためのROMは前半32KBをスロット切り替えすることで実装していた。 システム部分がROMで構成されているため、機能の拡張や、変更用のフックがメモリの最後部に配置されており、あらかじめ使用領域を宣言していても、拡張された環境ではメモリの後部アドレスを利用するようなバイナリでは、動作に異常が出ることがある。 MSXの[[Basic Input/Output System|BIOS]]は通常のパソコンのBIOSとは意味合いが異なり、ハードウェアを隠蔽するために起動時だけでなくハードウェアドライバやシステムコールとして常に使われる性質が強い。MSX-BASICの内部処理もほとんどの場合BIOSを経由して処理が行われ、BIOSの中にはBASICインタプリタのための機能もいくつか存在している。前述のBASIC上で行われるBCD浮動小数点演算もMATHPACKと呼ばれるサブルーチンライブラリとしてBASIC内で実装されており、機械語ベースのユーザープログラムやMSX-DOSアプリケーションからの使用も可能になっていた。 === 拡張された命令 === MSXの規格にあわせた次のような命令を持っていた。 ;<code>VPOKE</code>,<code>VPEEK</code> :[[VRAM]]への書き込み命令と読み込み関数。MSXではVRAMはVDPが管理し、CPUのアドレス空間とは別になっているため用意された。 ;<code>VDP</code> :画像コントローラ[[TMS9918|VDP]]のレジスタをBASICから直接読み書きする関数。 ;<code>ON</code> ~ <code>GOSUB</code> :割り込み命令。[[ファンクションキー]]押下(<code>KEY</code>)、インターバルタイマ(<code>INTERVAL</code>)、[[スプライト (映像技術)|スプライト]]衝突(<code>SPRITE</code>)、プログラム中断操作(<code>STOP</code>)などを検知して特定の[[サブルーチン]]をコール。 ;<code>CALL</code> :スロットに接続されたデバイスの拡張命令を呼び出す。周辺機器の持つ拡張BIOSに<code>CALL</code>命令の処理[[ルーチン]]が格納されており、BASICプログラムから周辺機器をコントロールすることができた。短縮形はアンダーバー(<code>_</code>)。 :*例:[[MSX-DOS]]から「<code>BASIC</code>」コマンドで[[DISK-BASIC]]を起動した場合、<code>CALL SYSTEM</code>を実行するとMSX-DOSが起動。 ;<code>PUT SPRITE</code> :スプライトの表示位置・パターン・色を制御。 ;<code>SPRITE$(n)</code> :スプライトのパターンを定義する関数。 === DISK-BASIC === 本体またはカートリッジスロットに[[フロッピーディスクドライブ]]が存在する場合は、それらの内蔵ROMからBASICへの拡張命令と、BIOSが組み込まれ、[[DISK-BASIC]]も併せて起動した。ドライブが1台の場合でも、ワークエリアは2台分確保され、CTRLキーを押しながら起動することで、1台分のワークエリアのみになり、SHIFTキーを押しているとシステムから切り離すことができた。これらの仕組みにより、ROM-BASICの空きエリアを前提としたアプリケーションでも、実行することが可能になっている。 == バージョン == MSX-BASICにはMSXの規格と対応してさまざまなバージョンがあった。すべてのバージョンで文法に上位互換性があり、スイッチによるモード切替などは必要としなかった。MSX turboRでは起動時に「1」キーを押し続けるか、MSX-DOS1またはDISK-BASICのVersion1でフォーマットしたディスクで起動すると、旧来の[[Z80]]モードとなりDISK-BASICがVersion1で起動した。 === Version1.x === [[MSX (初代規格)|MSX]](1)用。 === Version2.x === [[MSX2]]用。 * <code>SCREEN</code>命令やスプライト命令の拡張。 * マウスやトラックボール等の入力機器の情報取得。 * [[CMOS]]メモリによるカレンダ時計機能や設定バックアップ機能が搭載されたことにより、設定変更のための<code>SET</code>命令を追加。 ** カレンダ時計の設定(<code>SET TIME</code>、<code>SET DATE</code>)。 ** カレンダ時計の取得(<code>GET TIME</code>、<code>GET DATE</code>)。 ** 画面表示位置の補正値を設定(<code>SET ADJUST</code>)。 ** ビープ音の音量や種類を設定(<code>SET BEEP</code>)。 ** デフォルトの画面設定を保存(<code>SET SCREEN</code>)。 ** 6文字以内の任意の文字列を起動ロゴ画面に表示(<code>SET TITLE</code>)、プロンプトを標準の<code>Ok</code>から6文字以内の任意の文字列に変更(<code>SET PROMPT</code>)、起動時の簡易パスワードロック機能を設定(<code>SET PASSWORD</code>)。これらは、CMOSメモリの保存領域が共通のため排他使用となる。 * <code>SET VIDEO</code>などグラフィックに関する<code>SET</code>命令を多数追加。 * ROM空間に隠された裏RAM32kバイトを擬似RAMディスク<ref>MSX2+まではRAMディスク、MSXturboRではメモリディスクと呼称。Disk-BASIC ver2.0で実装されたRAMディスクと異なり、裏RAMを利用する性質上、インタースロットコールにより間接的にしかアクセスできない関係で転送速度はカセットテープ並に遅かった。</ref>として使用する命令(<code>CALL MEMINI</code>)。装置名<code>MEM:</code>の追加。 * 漢字ROM(オプション)の内容を出力する<code>PUT KANJI</code>を追加。 * かな文字の[[ローマ字入力]]モードを追加。かなキーをShiftキーを押しながらONにすることにより、ローマ字入力が可能になる。 * [[V9938]]のVDPコマンドを利用した<code>COPY</code>命令。 ** 配列の形で確保したメインメモリと画面の矩形との間での転送と、画像をメインメモリを経由することなく矩形でコピーが可能。論理演算や透明色を適用でき、非常に容易にグラフィックを取り扱うことが可能となった。 === Version3.x === [[MSX2+]]用。 * <code>SCREEN</code>命令(10~12)のモード追加。 * <code>SET SCROLL</code>を追加。MSX2ではVDPで縦スクロールはあるものの、VDP命令から直接指示しなければならなかったが、この命令で直接、BASIC上から縦横スクロールが出来るようになった。 * 平仮名などのフォントを変更し、<code>SCREEN 0</code>の横6ドット表示でも識別できるようになった。 * 漢字BASICを標準搭載。(連文節変換機能のMSX-JEは規格上はオプション。非搭載の機種では単漢字変換となる。)ただし、漢字フォントのスタイルは本体メーカーによって違う。 * ファンクションキーのF7の登録命令が「<code>cload"</code>」から「<code>load"</code>」に変更。 === Version4.x === [[MSXturboR]]用。 * [[R800]]の高速モードに対応。 * [[PCM]]機能などの命令を追加。 * MSX-DOS2内蔵によりDISK-BASICがVersion2になり、カレントディレクトリを変更する<code>CALL CHDIR</code>命令やメモリマッパを[[RAMディスク]]として使用する<code>CALL RAMDISK</code>命令などが追加。互換Z80モードではVersion1で起動。 * カセットテープI/Oに関する命令(<code>CSAVE</code>/<code>CLOAD</code>/<code>CLOAD?</code>/<code>MOTOR</code>)および装置名<code>CAS:</code>が削除され、実行するとエラーとなる。 ** <code>CSAVE</code>/<code>CLOAD</code>/<code>CLOAD?</code>/<code>MOTOR</code>は''Syntax error''となり、<code>CAS:</code>は''Bad file name''となる。''Device I/O error''とはならない *: 対応するBIOSのエントリは残っているものの、コールしても何もせず正常終了かエラーを返すだけになっている == BASICコンパイラー == MSX-BASICには「[[べーしっ君|MSXべーしっ君]]」という名称でMSX独自の機能を活用できる[[コンパイラ]]も存在した。 アスキーに所属していた[[プログラマ]]・鈴木仁志が開発した<ref>「超速コンパイラMSXべーしっ君たーぼとR800の秘密! 岸岡和也×鈴木仁志」『MSX MAGAZINE 永久保存版 2』アスキー書籍編集部編著、アスキー、2003年。p.68。</ref>。初版は[[雑誌]]に発表、1986年にアスキーから[[ROMカートリッジ]]で発売された。製品名は当時[[ログイン (雑誌)|ログイン]]誌で連載していた4コママンガのタイトルから取られており、ソフトのパッケージにも主人公・べーしっ君のイラストが描かれ、一見するとゲームソフトのようだった。付属のフロッピーディスクにはサンプルの[[マンデルブロ集合]]の描画やワイヤーフレームの[[3D迷路]]自動作成のプログラムが収められていた。 MSX2+が発表されると新機能に対応した「べーしっ君ぷらす」が発売されたほか、サンヨーのMSX2+であるWAVY77シリーズに同等のものが内蔵された。また、MSXturboRが発表されると[[ソフトベンダーTAKERU]]からディスク版で「べーしっ君たーぼ」が発売された。 なお、MSX-BASICのコンパイラは、べーしっ君以外にも、ソフトウエスト、ハート電子産業、ソフトウエストがそれぞれ開発・発売していたものが存在する。 === 仕様 === オンメモリのコンパイラで、拡張BASICとして実装されている。ROM媒体や本体内蔵のバージョンではROMカートリッジや本体内のスロットに、ディスク媒体のバージョンではメインRAMの未使用領域(裏RAM)に格納されて動作する。 既存のBASICプログラムを、少しの手直しをするだけで高速化できるというコンセプトで設計されている。 一般的なコンパイラと違い、中間コードや機械語オブジェクトをファイルとしては生成せず、実行のたびにその都度機械語オブジェクトを生成する仕様となっている。このため、MSXべーしっ君で書かれたプログラムはMSX-BASICのプログラムソースそのものであり、一般のBASICプログラムと同等に管理できるため、BASICの扱いの簡便さと機械語の高速さを併せ持った開発環境となっている。 実行速度は最大で10倍程度も高速化される。 MSX-BASICの完全互換ではなく、ディスク入出力など未サポートの命令が一部あるため、プログラム全体をコンパイルするか一部分のみをコンパイルするかを選択できるようになっている。 <code>RUN</code> の代わりに拡張命令 <code>CALL RUN</code> により実行開始した場合、プログラム全体の機械語オブジェクトを生成し実行する。 一部分のみをコンパイルする場合は、BASICプログラム内に拡張命令(<code>CALL TURBO ON</code>、<code>CALL TURBO OFF</code>)を組み込む。実行時にその拡張命令に処理が移ると、ワークエリアにその範囲の機械語オブジェクトが一時的に生成されて実行される仕組みとなっている。範囲外の箇所はそのままBASICで動作するため、MSXべーしっ君非対応の命令がプログラムソース中に同居できる。 浮動小数点は単精度型のみサポートしており、MSX-BASICがBCDで実装しているのに対して効率化を理由に3バイトの2進数という独自方式で実装している<ref>MSXマガジン永久保存版2 「超速コンパイラMSXべーしっ君たーぼとR800の秘密!」P.70</ref>ため、実数型変数の内容を非コンパイル部分と受け渡しすることはできない。 == 脚注 == {{脚注ヘルプ}}<references /> == 関連項目 == * [[MSX]] * [[MSX-DOS]] {{BASIC}} {{DEFAULTSORT:MSXBASIC}} [[Category:BASIC]] [[Category:MSX]]
このページで使用されているテンプレート:
テンプレート:BASIC
(
ソースを閲覧
)
テンプレート:出典の明記
(
ソースを閲覧
)
テンプレート:脚注ヘルプ
(
ソースを閲覧
)
MSX-BASIC
に戻る。
検索
検索
MSX-BASICのソースを表示
話題を追加