べーしっ君について


MSXのBASICコンパイラ『べーしっ君』を考察します。

[基本コマンド]   [特殊コマンド]   [方言コマンド]   [使えないコマンド]   [プチテク]
べーしっ君 パッケージ べーしっ君プラス
べーしっ君
ベーしっ君ぷらすのパッケージと、本体(ROM)カセットと、サンプルディスク。
ちなみにべーしっ君ぷらすは、ノーマルべーしっ君に比べて、
  ・MSX2+の新しいスクリーンモード、10〜12をサポート
  ・V9958で追加されたレジスタ用にVDP関数をサポート
  ・スクロール命令(SET SCREEN)をサポート
の変更点があります。
また、べーしっ君ぷらすとベーしっ君たーぼの違いは、
  ・メディアがROMからディスクにになった
  ・R800命令に対応した
ことで、つまりターボRでべーしっ君たーぼを使うと、R800命令でコンパイルされます。従来のMSX2+などで使うと、Z80命令になります。
なのでMSX2+ユーザーは、ノーマルよりも『ぷらす』か『たーぼ』を、ターボRユーザーは『たーぼ』を選びましょう!
あと、SANYOのMSX2+、WAVY70FD/2に搭載されているBASICコンパイラは、べーしっ君ぷらすと同じです。
ちなみに、WAVY70FD/2でべーしっ君を利用するには、このおまじないが必要です!


べーしっ君基本コマンド
CALL RUN この命令を実行するだけで、BASICプログラムは、コンパイルされ、超高速に動作します。
でも、実際には、通常のBASICソースには、べーしっ君に使えない命令が結構含まれているため、意外にそのままでは、高速化されません!
CALL TURBO ON コンパイルを開始する命令です。
CALL RUNは、プログラム全体をコンパイルし実行しますが、CALL TURBO ONは、この命令以降をコンパイルし実行します。
CALL TURBO OFFすると、これ以降は、またインタプリターに戻り、実行されます。
ちなみに、コンパイルされ実行される部分と、インタープリターで実行される部分では、同じ変数名でも別の変数になります。
そのため、CALL TURBO ONは、整数型変数の引き渡しが出来ます。
例:
CALL TURBO ON( HO% , GE%() )

整数型変数のHO%と、整数型配列変数のGE%を受け渡します。
CALL TURBO OFF コンパイル実行を終了します。
これ以降は、インタープリターで実行されます。
つまりBASICプログラムは、CALL TURBO ONと、CALL TURBO OFFに囲まれた部分をコンパイルし、実行します。


べーしっ君特殊コマンド
ここの命令は、全て「REM」や「’」(コメント文)で記述します。
INLINE INLINE インラインでマシン語を記述します。
例えば…
 LD HL,100
 LD (HO%),HL     ※HO%は、BASIC側の整数型変数
とするときは、
 10 HO%=0
 20 ’#I &H21,100,0
 30 ’#I &H22,HO%
 40 PRINT HO%
ちなみに、CALL命令などの場合、行番号を@で指定することも出来ます。 例えば…
 10 HO%=0
 20 ’#I &H21,100,0
 30 ’#I &H22,HO%
 40 ’#I &HCD,@60 ※CALL 60行
 50 END
 60 PRINT HO%
 70 RETURN
CLIP CLIP グラフィック画面のY座標の上限値を変えます。例えば…

Y座標の上限値を255にする。
 10 ’#C−

Y座標の上限値を211にする。
 10 ’#C+

※SCREEN 0〜3及び、PAINT、CIRCLE命令の場合は、無効。
NEXT NEXT FOR〜NEXTのとき、オーバーフローチェックを行うかどうかを設定します。例えば…

オーバーフローチェックをする。
 10 '#N+
 20 FOR I%=0 TO &H7FFF:NEXT I%
この場合、オーバーフローチェックをし、オーバーフローになるので、ループから強制的に抜けます。

オーバーフローチェックをしない。
 10 '#N−
 20 FOR I%=0 TO &H7FFF:NEXT I%
この場合、オーバーフローチェックしないので、このままではオーバーフローしループから抜け出せず、無限ループになります。

※ちなみに、オーバーフローチェックをしないほうが、高速に動作します。


べーしっ君での方言

コマンド
BASICでの書式
ベーしっ君での書式
コメント
CIRCLE
CIRCLE (X座標,Y座標),半径,色,開始角度,終了角度,比率
CIRCLE (X座標,Y座標),半径,色
円弧の開始角と終了角の指定と、縦横比が指定できません。つまり、真円しか、描けません!
COPY
COPY(いろんな書式があります)
COPY (開始X座標,開始Y座標)−(終点X座標,終点Y座標),コピー元ページ TO (X座標,Y座標),コピー先ページ,論理演算子
グラフィックのコピー(VRAMのコピー)しかできません。
DEFDBL
DEFDBL 変数,変数,…   または、DEFDBL 変数−変数
DEFDBL 変数,変数,…   または、DEFDBL 変数−変数
書式は一緒だが、倍精度としては宣言されずに、全て単精度で宣言されます。
DIM
DIM
DIM
通常のBASICでは、どこに記述してもいいが、べーしっ君の場合、宣言命令以外のあとに記述しては、ならない。
INPUT
INPUT <”文字列”;>変数,変数,…
INPUT <"文字列";>変数
1つの変数にのみ、入力可能。
KEY
KEY (いろんな書式があります)
KEY(キー番号) ON/OFF/STOP
ON KEY GOSUB
キー割込命令のみ有効。
LOCATE
LOCATE <X座標>,<Y座標>,<カーソルスイッチ>
LOCATE X座標,Y座標
カーソルスイッチの指定が出来ません。また、X座標、Y座標を省略することができません。
NEXT
NEXT <変数>
NEXT 変数
変数の省略ができません。
PRINT
PRINT 1,2
PRINT 1,2
カンマを使った場合、通常のBASICの場合、最大有効桁数分空白を表示するが、べーしっ君の場合、TAB(chr$(9))分、空白を表示します。
RUN
RUN
RUN
通常のBASICの場合、変数を初期化して実行されるが、べーしっ君の場合、変数は不定の状態で実行されます。※初期化されません。
SCREEN
SCREEN <画面モード>,<スプライトサイズ>,<キークリック>,<ボーレート>,<プリンタオプション>,<インタレスモード>
SCREEN <画面モード>,<スプライトサイズ>
画面モードと、スプライトサイズのみ指定可能です。
SET
SET ADJUST , SET BEEP , SET DATE , SET PAGE , SET PASSWORD , SET SCREEN
SET TIME , SET TITLE , SET VIDEO , SET SCROLL
SET PAGE , SET SCROLL
べーしっ君では、この2つの命令のみ有効です。
STOP
STOP
STOP
べーしっ君では、CONTにより続行ができません。「END」と同じ意味になります。
USR
USRx(変数及び数値)
USRx(整数型変数及び数値)
数値または、整数型変数のみ指定可能です。
※xは、0〜9までの数値
VARPTR
VARPTR(変数)  VARPTR(#ファイル番号)
VARPTR(変数)
変数のメモリアドレスのみ求められます。


べーしっ君では、使えない命令
MSX−BASICで使えない命令
AUTO BASE BLOAD BSAVE CALL CDBL CINT CLEAR
CLOAD CLOAD? CLOSE CONT CSAVE CSNG DEFFN DELETE
DRAW EOF ERASE ERL ERR ERROR FRE GET
INPUT # KEY LIST LINE INPUT # LIST LLIST LOAD LPRINT USING
MAXFILES MERGE MOTOR NEW ON ERROR GOTO ON STOP GOSUB
OPEN PLAY PRINT # PRINT # USING PRINT USING PUT KANJI RENUM
RESUME SAVE SPC TAB TRON TROFF WIDTH  
MSX−DISK BASICで使えない命令
CVD CVI CVS DSKF FIELD FILES FPOS KILL
LFILES LOC LOF LSET MKD$ MKI$ MKS$ NAME
RSET              
使えない論理演算子
EQV IMP            


べーしっ君プチテク!
変数は、すべて整数型で使う!
ベーしっ君では、倍精度型は使えないし。だったら、すべて整数宣言した方が、速く動作します。
コメントは、『REM』ではなく、すべて『’』を使用する。
ベーしっ君では、メモリを結構使うので、できるだけ節約するために、3バイト消費するREMよりも、1バイトで済む’を使う。
割り算は、『/』ではなく、すべて『¥』を使用する。
あまりを切り捨てる割り算¥を使うと、演算スピードが速くなる!
べき乗『^』は、かけ算に展開する。
HO=FO^4ならば、HO=FO*FO*FO*FOとしたほうが、演算スピードが速くなる!
オーバーフローチェックをしないようにする。
『#N−』を宣言して、オーバーフローチェックをしないようにすると、速くなる!
DIMのサイズは、2のN乗にする。
DIMの添え字は、行列サイズが、2のN乗にアライメントされるように宣言した方が、早く検索されます。
良い例:DIM HO%(7,7) → 8×8の行列になり、サイズ64=2の6乗サイズになる。
悪い例:DIM FO%(6,5)  → 7×6の行列になり、サイズ42は、2のN乗サイズにならない。


Return Main




Copyright 2009-2010 up-c all rights reserved