LAST:2010-01-31

[BACK] [INDEX]

Pocket Basic

CASIOの名機PB-100風BASICインタープリタをつくりました。あくまで”風”なのでPB-100のリストがそのまま動く訳ではありません。

実行にはMATH.LIBが必要です。


≪ポケットベーシックのスクリーンショット1≫
≪ポケットベーシックのスクリーンショット2≫

各部の名称とはたらき

1 残りステップ数

1ステップ1バイトです。ひとつのプログラムエリアは4KBあります。

2 現在の行数

最大9999行まで入力できます。

3 現在の入力文字数

1行最大80文字まで入力できます。

4 現在のプログラムエリア

P0〜P9まであります。

5 1行分の入力フィールド

1行分の編集バッファ。ここにリストを入力していきます。

6 現在のプログラムエリアのクリア

現在のエリアをクリアします。

7 現在の行のクリア

現在の行をクリアします。

8 新しい行数の入力 10行刻み

現在の行+10された行番号が入力されます。

9 新しい行数の入力 100行刻み

現在の行+100された行番号が入力されます。

10 前の行の表示

ひとつ前の行を表示します。

11 次の行の表示

ひとつ後の行を表示します。

12 プログラムの実行

入力したプログラムを実行します。

13 コマンドの入力

よく使うBASICコマンドを入力します。

14 関数の入力

よく使う数値関数を入力します。

15 記号の入力

PBシリーズでおなじみの記号を入力します。

16 入力の確定

1行分のBASICリストを入力したら、[EXE]ボタンでバッファに格納されます。

プログラムの入力方法

フィールドに1行ずつリストを入れていきます。 リストが空の状態だと

10 'READY P?

と表示されています。(?は現在のプログラムエリア)

たとえば

10 PRINT"HELLO WORLD!!"

と入力して、最後に[EXE]ボタンを押せば1行入力した事になります。[EXE]ボタンを押とフィールがクリアされるので、続けて20行、30行とリストを入力していきます。

注意
改行では入力が確定したことにはなりません。
必ず[EXE]ボタンを押してください。

プログラムの実行方法

[RUN]ボタンで実行されます。

プログラムが正常に終了すれば”DONE.”と表示され、エラーがあればエラー行が表示されます。

[BREAK]ボタンで編集画面に戻ります。

注意点

文字列処理は2バイトコードを想定していません。

その他

遅いです。

ARM機種でやっとE500レベルのスピードになります。

グラフィックは扱えませんがドット単位で表示が出来、フォントの色も変えられます。

まだいろいろ不具合があるかもしれません。気がつかれたらメールや、掲示板等でお知らせください。


Pocket Basic リファレンス

2010-02-01
暫定版

変数

A〜Zの26メモリが数値変数として使用できる。

$をつけると文字変数として使用できる。数値変数も文字変数も同じ領域を使用しているので、AとA$を同時に使用できない。

数値変数はdouble型の浮動小数として扱われ、文字変数は7文字まで格納される。

例)

A=10
A=1.5
A$="ABC"
A$="ABCDEFG"

また、専用文字変数$がある。$は最大62文字まで格納できる。

[PB-100との違い]

数値変数は浮動小数で扱われるので浮動小数の一般的な問題に十分注意してください。(0.1を10回足しても1にならない等)

本インタープリタでは小数点以下10桁まで認識します。

比較する時は11桁で四捨五入されます。

配列

変数名のあとに括弧をつけて配列を指定できる。ただし、A(1)はBと同じ領域を指す。

例)

A(0)=1  Aと同じ
A(10)=1  Kと同じ
A$(0)="ABC"  A$と同じ

[PB-100との違い]

ありません。

演算子

数値関数、文字関数、加減乗除、剰余、括弧がある。

優先順位は

1 −,(),関数
2 ×,÷,%
3 +,−

となる。

[PB-100との違い]

剰余”%”が追加されています。

比較演算子

=,≠,<,>,≦,≧が使用できる。

[PB-100との違い]

ありません。

数値演算の式。

A+B
A+100+1.005
A(5)*100+(10/2)

など。

[PB-100との違い]

ありません。

文字式

文字列の連結式。

A$+B$
B$+"AAABBB"
A$(5)+$

など。

[PB-100との違い]

ありません。

ステートメント

行番号 コマンド|代入文|注釈 [:コマンド|代入文]*

行番号は1〜9999まで指定できる。また、複数の命令を:で区切って1行に入力できる。

例)

10 INPUT"hoge",A$:PRINT A$
20 GOTO 10
30 END

[PB-100との違い]

ありません。

ステップ数の数え方

行番号は2ステップ、1行の文字数記録に1ステップ、BASICコマンド、関数は1ステップ、その他は1文字1ステップ、行末1ステップとなる。

他にバッファのアライメントを揃える為に1ステップ追加されることがある。

例)

100 IF A=0 ; PRINT"hogehoge" 20ステップ

[PB-100との違い]

1行の文字数を記録するための1ステップ、アライメントを揃えるための1ステップが余分に消費されます。

コマンド

VAC

すべての変数をクリアします。

CLS

画面をクリアします。

END

プログラムを終了します。

LET 数値変数=式 | 文字変数=文字式

左辺の変数に右辺の式の値を代入します。

LETは省略可能です。(というかいちいち書きませんよね)

'

'以降は注釈として扱われます。

INPUT ["メッセージ文",]変数名[,["メッセージ文",]変数名]*

キーボード、ガラフィティから文字列を変数に入力します。

メッセージ文がある場合は表示し、無い場合は?を表示して入力待ちになります。

入力は最下段のフィールドで受け付けます。

例)

10 INPUT "HANKEI?" , A
20 PRINT "MENSEKI"; A*A*π

KEY

リアルタイムに入力された文字コードを返します。

ハードキーは○△□×の文字コードを、上下スクロールキーは↑↓の文字コードを返します。

例1)

10 IF KEY="○" ; PRINT "OK!"

例2)

10 A$=KEY
20 IF A$="↑" ; PRINT "OK!"
30 GOTO 10

PRINT [式|文字式|数値変数|文字変数][;[式|文字式|数値変数|文字変数]]*

CSRで指定した位置に表示します。

数値変数は小数点以下がある場合は浮動小数形式で表示します。

PRINT文のみの場合は画面をクリアします。

;で区切ると前の表示に続けて出力します。

CSR 式,式

PRINT文のX,Y座標を設定します。

表示位置はドット単位で指定できます。

GOTO 式

式にジャンプします。

IF 比較式 THEN|; 文

比較式が真の場合THEN以降を実行します。
THENは;で代用できます。

FOR 制御変数=式 TO 終値式 [STEP 刻み値式]

NEXT 制御変数

FOR文からNEXT文までの間を制御変数を初期値から終値まで刻み値で変化させながら繰り返します。

4重まで入れ子にできます。

ループが終了したとき、制御変数は終値を越えた値になります。

例)

10 VAC
20 FOR A=1 TO 1000 STEP 10
30 PRINT A
40 NEXT A

GOSUB 式

サブルーチンへ分岐します。

8重まで入れ子に出来ます。

RETURN

サブルーチンから復帰します。

TICK

電源をオンにしてからの経過時間を返します。(TICK値)

LEN( 文字変数 )

文字変数の文字数を返します。

MID( 位置式[,文字数式] )

$に記憶されている文字列の、指定した位置から指定文字数を取り出します。

VAL( 文字変数 )

数字を数値に変換します。

STR$( 式 )

数値を数字に変換します。

SIN 引数

COS 引数

TAN 引数

三角関数を返します。

戻り値はラジアンです。

ASN 引数

ACS 引数

ATN 引数

逆三角関数を返します。

戻り値はラジアンです。

LOG 引数

常用対数を返します。

LN 引数

自然対数を返します。

EXP 引数

指数を返します。

SQR 引数

平方根を返します。

ABS 引数

絶対値を返します。

SGN 引数

符号を返します。

INT 引数

引数を越えない最大の整数を返します。

FRAC 引数

引数の小数部を値とする関数です。

RAN# 引数

0から引数までのランダムな値を返します。

COLOR 引数

引数のインデックス色にフォントカラーを変更します。

[BACK] [INDEX]


文書作成:崔 均
ご意見・ご感想は:kyun26★yahoo.co.jp
ホームページ:http://pocketgame.web.fc2.com/