戻る
BS-BASIC
RX-78 : バンダイ (BANDAI)

BS-BASIC

BS-BASICはRX-78用BANDAI/SHARP製BASICである。
RX-78自体がSHARPのOEMであり、IPLやBASICはSHARPのものをベースにしている。

全ての予約語は大文字しか受け付けないことに注意。

BS-BASIC 簡易リファレンス
コマンド
表記凡例使用例説明
AUTOAUTO [行番号][,増分]AUTO 100,5先頭に自動的に行番号を発生させる
(増分を省略した場合は10)
LISTLIST [行番号][-[行番号2]]LIST
LIST 100-200
メモリ上のプログラムを表示する
指定した範囲の行番号を表示する
NEWNEWNEWプログラムを全て消去し、変数を初期化する
CONTCONTCONTSTOPやBREAKキーで終了したプログラムの実行を再開する
RUNRUN [行番号]RUN 100指定した行番号からプログラムを実行する
(行番号を省略した場合は先頭から実行する)
SAVESAVE "識別名"SAVE "TEST"カセットテープにプログラムを保存する
LOADLOAD ["識別名"]LOAD "TEST"カセットテープからプログラムを読み込む
(識別名を省略した場合は最初に見つかったプログラムを読み込む)
VERIFYVERIFY ["識別名"]VERIFY "TEST"カセットテープのプログラムを照合する
(識別名を省略した場合は最初に見つかったプログラムを照合する)
APPENDAPPEND ["識別名"]APPEND "TEST"カセットテープからプログラムを読み込んでメモリ上のプログラムに追加する
(識別名を省略した場合は最初に見つかったプログラムを読み込む)
MONMONMONモニタに制御を移す
[戻る]
ステートメント:プログラム制御
表記凡例使用例説明
ENDENDENDプログラムを終了する
STOPSTOPSTOPプログラムを一時停止する
REMREM [注釈]REM TEST注釈を入れる(実行には無関係)
FOR...TO...STEP〜NEXTFOR 変数=開始値 TO 終了値 [STEP 増分]〜NEXT [変数1][,変数2][,...]FOR I=0 TO 10 STEP 2〜NEXT IFORからNEXTまでの処理を繰り返す
GOSUBGOSUB 行番号GOSUB 1000サブルーチンを呼び出す
RETURNRETURNRETURNサブルーチンから復帰する
GOTOGOTO 行番号GOTO 1000指定した行番号から実行する
IF...THENIF 論理式 THEN {文 | 行番号}IF A=0 THEN 10論理式の条件判断をする
IF...GOTOIF 論理式 GOTO 行番号IF A=0 GOTO 10論理式の条件判断をする
IF...GOSUBIF 論理式 GOSUB 行番号IF A=0 GOSUB 10論理式の条件判断をする
ON...GOTOON 式 GOTO 行番号1[,行番号2][,...]ON A GOTO 100,200式の値に応じて指定された行番号へ分岐する
ON...GOSUBON 式 GOSUB 行番号1[,行番号2][,...]ON A GOSUB 100,200式の値に応じて指定された行番号のサブルーチンを呼び出す
[戻る]
ステートメント:変数関連
表記凡例使用例説明
INPUTINPUT [文字列{; | , }]変数[,変数2][,...]INPUT "X=";Xキーボードから入力した値を変数に代入する
GETGET 変数GET A$変数に現在押されているキーを代入する
数値変数を指定した場合は数字キーのみを受け付ける
LETLET 変数=式LET A=1変数に値を代入する(LETは省略できる)
DATADATA 定数[,定数][,...]DATA "TEST",765READで読み込むデータを定義する
READREAD 変数[,変数][,...]READ A$,BDATAで定義したデータを変数に代入する
RESTORERESTORE [行番号]RESTORE 1000READで読み込むDATAの先頭行を設定する
DEF FNDEF FN関数名(パラメータ[,パラメータ2[,...]])=定義式DEF FNA(X,A,B)=X^2+AX+Bユーザ定義関数を定義する(関数名:A〜Zの1文字)
DIMDIM 変数名(最大値1[,最大値2][,...])[,...]DIM A(100,10),B$(100)配列変数の定義をする
CLEARCLEARCLEAR変数や配列を初期化する(FOR〜NEXT内やサブルーチンでは使用不可)
[戻る]
ステートメント:データ関連
表記凡例使用例説明
WOPENWOPEN /T ["データ名"]WOPEN /T "TEST"データを書込モードでオープンする
PRINT /T{PRINT | ?} /T [式[{, | ;}[式2[,...]]]]PRINT /T A$データに書き込む
ROPENROPEN /T ["データ名"]ROPEN /T "TEST"データを読込モードでオープンする
INPUT /TINPUT /T 変数INPUT /T A$データから読み込む
CLOSECLOSE /TCLOSE /Tデータをクローズする
[戻る]
ステートメント:マシン語関連
表記凡例使用例説明
LIMITLIMIT {アドレス($0000〜$FFFF) | MAX}LIMIT $AFFF
LIMIT MAX
指定したアドレス+1以降をユーザ領域(マシン語プログラムを置く領域)に指定する
BASICプログラム領域を最大限確保する
USRUSR(アドレス[,入力文字列])USR(A)指定したアドレスのマシン語を実行する
POKEPOKE アドレス,数式[,...]POKE $A000,$C9指定したアドレスに値を書き込む
[戻る]
ステートメント:I/O関連
表記凡例使用例説明
INP@INP@ ポート(0〜255),数値変数INP@ 0,A指定ポートから数値を受信する
OUT@OUT@ ポート(0〜255),数式OUT@ 128,128指定ポートに数値を送信する
[戻る]
ステートメント:エラー関連
表記凡例使用例説明
ON ERROR GOTOON ERROR GOTO 行番号ON ERROR GOTO 1000エラー発生時に指定した行番号に移動する(エラー割込)
RESUMERESUME [{NEXT | 行番号 | 0}]RESUME
RESUME NEXT
RESUME 1000
RESUME 0
エラー発生行に戻る
エラー発生行の次に戻る
指定した行番号に戻る
メインの最初に戻る
[戻る]
ステートメント:画面関連
表記凡例使用例説明
CLSCLS [n]CLS画面を消去する
0:プレーン指定なし(消去しない)
n:プレーン指定(n:1〜6)
7:全プレーン指定
COLORCOLOR [カラーコード][,バックグラウンドカラーコード]COLOR 7,0グラフィック色を指定する
CURSORCURSOR X,YCURSOR 10,10表示位置を指定する(X:0〜39,Y:0〜22)
PRINT{PRINT | ?} [式[{, | ;}[式2[,...]]]]PRINT "HELLO,WORLD"画面上に表示する
PRINT USING{PRINT | ?} USING 書式;データPRINT USING "#####";T画面上に書式で定義したものを表示する
[戻る]
ステートメント:グラフィック関連 画面サイズ:192×184、バンク番号指定:W0/W1
表記凡例使用例説明
LINELINE [カラーコード[,バンク番号]] X1,Y1,X2,Y2[,...,Xn,Yn]LINE [2,W0]0,0,100,100直線を描画する
PAINTPAINT [カラーコード] X,Y[,N1[,N2,...]]PAINT [2]0,0,7画面を塗りつぶす (Nn:境界色指定)
BOXBOX [カラーコード[,バンク番号]] X1,Y1,X2,Y2BOX [2,W0]0,0,100,100四角形を描画する
CIRCLECIRCLE [カラーコード[,バンク番号]] X1,Y1,半径[,[比率][,[始点][,[終点][,0]]CIRCLE [2,W0]100,100,50円を描画する
比率は0以上の数値(省略時は真円に近い最適値[1.5]となる)
始点、終点はラジアン角指定
「0」を付けると中心点から始点・終点に線分を描写(扇)
PATTERNPATTERN [カラーコード[,バンク番号]] 縦方向ドット数,文字列式[,...]PATTERN [2,W0]16,"A"グラフィック画面に指定のドットパターンを表示する
POSITIONPOSITION X,YPOSITION 10,10PATTERNの表示位置を指定する
SETSET [カラーコード[,バンク番号]] X,YSET [2,W0]10,10指定した座標にドットを表示する(X=0〜16383,Y=0〜16383)
RESETRESET [カラーコード[,バンク番号]] X,YRESET 10,10指定した座標のドットを消去する
[戻る]
ステートメント:サウンド関連
表記凡例使用例説明
TEMPOTEMPO 数値(1〜7)TEMPO 4MUSICのテンポを設定する
MUSICMUSIC [文字列]MUSIC M$MMLで指定した音楽を演奏する
SOUNDSOUND [n,m]SOUND
SOUND 1,1
音を消す
音を鳴らす
n:0 単音
n:1 ノイズ
n:2 (指定可能だがエラーになる)
m:0〜2:音程
m:3 (指定可能だがエラーになる)
SOUND@SOUND@ nSOUND@ 15音量(n:1〜15)を指定
[戻る]
ステートメント:ジョイスティック関連
表記凡例使用例説明
JOYJOYSn 変数JOYS1 Jジョイスティック(n=1,2)の情報を取得する
[戻る]
文字列関数
表記凡例使用例説明
ASCASC(文字列式)ASC("TEST")文字列先頭のキャラクタコードを返す
VALVAL(文字列式)VAL("123")文字列を数値に変換する
CHR$CHR$(数式[,...])CHR$(41)指定したキャラクタコードの文字を返す
STR$STR$(数式)STR$(A)数値を文字列に変換する
TABTAB(数式)TAB(A)指定した長さのタブを返す(出力文字式内でのみ使用で始点は行頭)
LENLEN(文字列式)LEN(A$)文字列の文字数を返す
LEFT$LEFT$(文字列式,式)LEFT$(A$,2)文字列の左側から式で指定した桁数の文字列を返す
MID$MID$(文字列式,式1[,式2])MID$(A$,2,1)文字列の式1で指定した位置から式2で指定した桁数の文字列を返す
RIGHT$RIGHT$(文字列式,式)RIGHT$(A$,2)文字列の右側から式で指定した桁数の文字列を返す
SPACE$SPACE$(式)SPACE$(2)式で指定した桁数の空白を返す
STRING$STRING$(文字列式,式)STRING$(2)文字列式の先頭文字を式で指定した桁数分の文字列として返す
EOFEOFEOF読み込んだデータが終端(EOF)か判定する
[戻る]
数値関数
表記凡例使用例説明
INTINT(数式)INT(A)数式の整数値を返す(数式の値を超えない整数値)
SGNSGN(数式)SGN(A)符号を返す
数式>0: 1
数式=0: 0
数式<0:-1
RNDRND(数式)RND(A)0以上1未満の乱数を返す
 1 : 次の乱数を発生する(省略した場合も同様)
-1 : 乱数係数を変更する
 0 : 同じ乱数を生成する
[戻る]
数学関数
表記凡例使用例説明
πππ円周率(3.1415927)を返す(「π」は[SFTLOCK]押下後[CTRL]→[<]で入力)
ABSABS(数式)ABS(-1000)絶対値を返す
SINSIN(数式)SIN(3.14)正弦(サイン)の値を返す
COSCOS(数式)COS(3.14)余弦(コサイン)の値を返す
TANTAN(数式)TAN(3.14)正接(タンジェント)の値を返す
ATNATN(数式)ATN(3.14)逆正接(アークタンジェント)の値を返す
EXPEXP(数式)EXP(1)自然対数の低(e)に対する指数関数の値を返す
LNLN(数式)LN(1)自然対数の値を返す
LOGLOG(数式)LOG(1)常用対数の値を返す
SQRSQR(数式)SQR(2)平方根の値を返す
[戻る]
その他関数
表記凡例使用例説明
PEEKPEEK(アドレス)PEEK($D000)指定したアドレスの値を返す
SIZESIZESIZEフリーエリアの値を返す
ERNERNERNエラー番号を返す
ERLERLERLエラー時の行番号を返す
CSRCSRCSR詳細不明(調査中)
POSPOSPOS詳細不明(調査中)
[戻る]

※ モニタ
アドレスは4文字の16進数、データは2文字の16進数で指定
省略可能なアドレスを省略した場合は直前の指定アドレスとなる

「MON」からBASICに戻るときは
J$2000:BASICテキストエリアをクリアして復帰
J$2084:BASICテキストエリアをクリアしないで復帰

Dダンプリスト
Mメモリセット
J実行(IPL)
S開始〜終了で指定したアドレスの値を実行アドレスを指定してカセットテープに機械語プログラムをセーブ
Lカセットテープから機械語プログラムをロード
Vカセットテープの機械語プログラムを確認
R未使用(HALT)

[戻る]

※ PRINT書式
; : 式を続けて表示する(A;B) 例 1;2
 1 2
, : 式をTABで区切って表示する(A,B) 例 1,2
 1         2

CHR$関数(Microsoft系と違うので注意)で特殊機能を使用可能
更に1〜8までは[CTRL]キーと同時押下でキー機能と同等の反転文字を入力可能
・ 1:カーソルを下へ移動
・ 2:カーソルを上へ移動
・ 3:カーソルを右へ移動
・ 4:カーソルを左へ移動
・ 5:[CLR/HOME]キー HOME相当 カーソルをHOME(左上)へ移動
・ 6:[CLR/HOME]キー CLR相当  カーソルをHOME(左上)へ移動して画面をクリア
・ 7:[INST/DEL]キー DEL相当
・ 8:[INST/DEL]キー INST相当

・10:[SFTLOCK]キー相当
・15:通常入力に戻す

・16〜31:グラフィックキャラクタ文字

PRINT/Pによるプリンタへの出力時は一部異なる
・ 5:フォームフィード
・ 6:動作モードの初期化
・16:行間にスペースを空けるモード
・17:行間圧縮モード
・18:倍文字モード
・19:倍文字モード解除
・20:縮小文字モード
・21:縮小文字モード解除

[戻る]

※PRINT USING書式
USING使用時は指定書式以外の文字があった場合エラーとなるので注意

# : 数値を桁数指定して出力する(少ない場合は右詰め)
例 "[#####]";100
[  100]
. : 小数点位置を指定する(冗長部分は0が出力される)
例 "[##.#####];3.1415
[ 3.14150]
- : 最後につけた場合、負符号を出力する
例 "[###-]";-10
[ 10-]
例 "[###-]";10

[戻る]

※ カラーコード
一部のグラフィック関連ステートメントにおいてW0/W1でバンク指定可能
バンクとプレーン1〜6を使って最大27色利用可能
(BASICからの利用はかなり複雑になるので省略)

0Black
1Blue
2Red
3Magenta
4Green
5Cyan
6Yellow
7White

[戻る]

※ MML
MMLを「,」「;」で続けておくと1つ目のMMLの演奏が終わってから次のMMLを演奏する

音階指定:CDEFGAB
休符:「R」

音長指定は以下の通り
「Pn」(n=0〜9)で以降省略時の音長指定

032分
116分
2付点16分
38分
4付点8分
54分
6付点4分
72分
8付点2分
9

オクターブ指定
音階の前に「-」で1オクターブ下げ(指定した音階のみに有効)
音階の前に「+」で1オクターブ上げ(指定した音階のみに有効)

半音指定
音階の前に「#」で半音上げ

音量指定
「Ln」(n=0〜5)

※BEEPの代わりにUSR($010B)を実行すると短い880MHzの音が鳴る

[戻る]

※ ジョイスティック
JOYSn : n=1〜2
10 : 中立状態
 3 : 上
 2 : 右上
 1 : 右
 8 : 右下
 7 : 下
 6 : 左下
 5 : 左
 4 : 左上

10 : 中立状態
 0 : トリガ1押下
 9 : トリガ2押下

[戻る]

※ 定数型・変数型
±0.27105055E-19〜±0.92233720E+19までが指定できる範囲である
負の指数表記(小数点)は範囲外では0になる(E-99まで形の上では有効)
通常表記の有効桁数は8桁

A$ : 文字列型(A$="TEST")
$  : 16進数形式($FFFF)

[戻る]

※ 演算子
+   : 加算・結合(A+B、A$+B$)
-   : 減算(A-B)
*   : 乗算(A*B)
/   : 除算(A/B)
^   : べき算(A^B)
=   : 等号・代入(A=3、A=B+C)
> < : 不等号・比較(A>3、A<=2)

[戻る]

※ エラーメッセージ一覧

エラーメッセージ一覧
番号エラー意味
1Syntaxコマンド、またはステートメントの書き方が間違っている
2Overflow値が許容範囲を超えた
3Illegal data異常なデータを指定した
4Data type変数または定数の型が合わない
5String length文字列の文字数が255を超えた
6Memory capacityメモリの領域を超えた
7Array definition配列の定義が異常
8Line length行の長さが異常
10GOSUB nestingGOSUBの入れ子が15を超えた
11FOR-NEXTFORの入れ子が15を超えた
12DEF FN nestingDEF FNの入れ子が6を超えた
13NEXTNEXTに対応したFORがない
14RETURNRETURNに対応したGOSUBがない
15Undefined Function未定義のユーザ定義関数を呼び出そうとした
16Undefined line number未定義の行番号を指定した
17Can't continueCONTによるプログラムの再開ができない
18Memory protectionメモリが保護されている
19Instruction modeダイレクトステートメントが実行できない
24READREADに対応したDATAがない
43Already openデータが既にオープンされている
44Not openデータがオープンされていない
63Out of dataデータの読込時データ長を超えた
70Check sumCMT読込時にチェックサムの異常が発生

[戻る]

[TOPに戻る]