Casio Basic - 機種間の互換性
Casio Basic - 機種別の互換性
2016/04/19
更新:2017/07/31
日本国内で正式発売されているカシオのプログラム電卓のうち、fx-5800P、fx-9860GII、fx-CG20、fx-CG50 に搭載されている Casio Basic の互換性について、まとめてみます。
Casio Basic プログラムの移植、Caso Basic 搭載の機種選定の参考になるかも知れません。今回 Casio Basic を複数の機種にわたって整理した結果、改めて fx-5800P の価値を見直し、カシオはよく考えて商品展開していることも分かりました。
▋ハードウェアの違い
Casio Basic のコマンドには、ハードウェアに依存するものが有るので、ハードウェアの主な違いをまとめてみました。

左から、fx-CG50、fx-CG20、fx-9860GII、fx-5800P
表1 ハードウェア仕様の主な違い
機種 | fx-5800P | fx-9860GII | fx-CG20 / fx-CG50 |
液晶ディスプレイ Casio Basic Graphics 出力 Casio Basic Text 出力 表示種別 | モノクロ、96 x 31 ピクセル なし 16 桁 x 4 行 テキストのみ | モノクロ、128 x 64 ピクセル 127 x 63 ピクセル 21 桁 x 7 行 テキスト、グラフィックス | カラー、384 x 216 ピクセル 379 x 187 ピクセル 21 桁 x 7 行 テキスト、グラフィックス |
寸法 (mm) | 163 x 82 x 15 | 184 x 91.5 x 21.2 | 188.5 x 89.5 x 20.6 |
重量 (g) | 150 | 260 | 220 |
電池 / 寿命 | 単4電池 x1 / 1年 | 単4電池 x4 | 単4電池 x4 |
仮数+指数 | 10桁+2桁 | 10桁+2桁 | 10桁+2桁 |
内部演算桁数 | 15桁 | 15桁 | 15桁 |
プログラムメモリ容量 | 最大28.5 KByte | 最大 62 KByte | 最大 61 KByte |
プログラムファイル名 | 最大12文字 | 最大8文字 | 最大8文字 |
ちなみに、最新の関数電卓、CLASSWIZ fx-JP900 / 700/ 500 の液晶はモノクロの高精細で実際に細かい表現が出来ていますが、192×63 ピクセルの液晶です。解像度でいえば fx-9860GII と fx-CG20 / CG50 の間です。
fx-5800P はテキスト出力のみ。fx-9860GII と fx-CG20 / CG50 のCasio Basic では、テキスト出力とグラフィックス出力を同時に行えず、切り替えて表示する仕様です。
[2016/10/13 追記]
fx-FD10 Pro については、持っていないので詳しく調べていませんが、カシオお客様サポートセンターによれば fx-FD10 Pro はアドインを使えない仕様とのことです。言い換えれば、Casio Basic 専用機の位置づけのようです。
▋互換性とは?
同じプログラムを異なる機種で使って同じ結果が得られるなら、そのプログラムは互換性があります。
一方で、コマンドレベルで言えば、グラフィックス出力やテキスト出力のコマンドは、その出力結果が同じならば、互換性があります。
例えば、以下のようなコードで円を描画する場合、
CoordOff
GridOn
AxesOn
LabelOff
ClrGraph
Circle 1,0,3
fx-9860GII と fx-CG20 / CG50 での出力は、次のように同じ結果になります。


fx-9860GII での出力結果 fx-CG20 / CG50 での出力結果
これらのコマンドについては、コマンドレベルでの互換性があります。
円を描画するコマンド Circle を使うと、コマンドレベルでの互換性を確保するために、高い解像度のLCDで表示(fx-CG20 / CG50を使用)する時 は、線を太く表示して、出力(表示)の互換性を維持する仕様になっています。
では、以下のようなコードで直線を描画する場合、
CoordOff
GridOff
AxesOff
LabelOff
ClrGraph
For 1→A To 31
PxlOn 15+A,45+A
PxlOn 47-A,45+A
Next
fx-9860GII と fx-CG20 / CG50 での出力は、次のように違った出力結果になります。


fx-9860GII での出力結果 fx-CG20 / CG50 での出力結果
各コマンドはエラーも無く、正常に動作します。しかし点描画コマンド PxlOn で描画するピクセルが1個分なので、fx-986oGII と fx-CG20 では、画面全体のピクセル数 (解像度) が大きく異なるので出力(表示)が異なります。PxlOn はコマンドレベルで互換性がありません。
▋グラフィックス・コマンドの互換性
▍詳細動作が異なるグラフィックス・コマンド
ClrGraph コマンドで設定されるデフォルトの論理座標系や、ViewWindow コマンドで設定する論理座標系で使うコマンドは、fx-9860GII と fx-CG20 / CG50では、出力結果がほぼ互換性があります。液晶の解像度の違いを Casio Basic で吸収していて、同じコードを書けば、同じ出力結果が得られます。
一方、物理座標系で使うコマンドは、出力結果が異なり、互換性がありません。
今のところ分かっている範囲で、詳細動作で互換性が無いコマンドを以下に紹介します。
▶ Xdot
Xdot と Xmax や Xmin との間の次の関係は、fx-9860GII でも fx-CG20 / CG50 でも正しいのですが、
H × Xdot = Xmax - Xmin
H の値は、Casio Basic のグラフィックス描画範囲と関係があって、fx-9860GII と fx-CG20 / CG50 では異なります。
H の値は、
・ fx-9860GII : H=378 なので、378 × Xdot = Xmax - Xmin の関係になります。
・ fx-CG20 / CG50 : H=126 なので、126 × Xdot = Xmax - Xmin の関係になります。
例えば、
1→Xmin
1→Xdot
を実行すると、Xmax が変更されますが、
fx-9860GII では Xmax が 127 となり、fx-CG20 / CG50 では Xmax が 379 と、異なった値になります。
▶ 線のスタイル設定
描画コマンド LINE、F-LINE、Vertical、Horizontal、Circle の線の太さを設定するコマンドで描画する実際の線の太さは互換性がありません。しかしそれによってコマンドレベルとプログラムレベルの両方で互換性を確保しています。
線の太さ (ピクセル) | ||
前置コマンド / セットアップコマンド | fx-9860GII | fx-CG20/CG50 |
SketchNormal / S-L-Normal | 1 | 3 |
SketchThick / S-L-Thick | 2 | 5 |
SketchBroken / S-L-Broken | 1 | 3 |
SketchDot / S-L-Dot | 1 | 3 |
SketchThin / S-L-Thin | なし | 1 |
▶ 物理座標系のコマンド
Casio Basic の物理座標で使う以下のコマンドは、描画位置の座標が同じでも、液晶画面全体での相対的な描画位置が変わります。つまり、コマンドレベルでの互換性はあるが、画面全体でみると出力結果が異なるのでプログラムの互換性はありません。
PxlOn、PxlOff、PxlChg、PxlTest(、Text
fx-9860GII のグラフィックス描画範囲は 127 × 63 ピクセルで、fx-CG20 / CG50 では 379 × 187 です。
例えば、fx-9860GII でこれらコマンドを使ったグラフィックス表示を、fx-CG20 / CG50 で実行すると左上に偏って表示されます。
逆に、fx-CG20 / CG50 でのグラフィックス表示コードを fx-9860GII で実行すると、より狭い fx-9860GII のグラフィックス領域の外側で描画を行うことになり、"Out of Domain" (領域外)エラーが出ます。
▍fx-CG20 / CG50 でしか使えないグラフィックス・コマンド
▶ カラー設定コマンド
fx-CG20 / CG50 には以下のカラー設定コマンドがあります。
Plot/Line-Color, Black, Blue, Red, Magenta, Green, Cyan, Yellow
当然ながらモノクロ液晶の fx-9860GII ではエラーとなって使えません(互換性がありません)。
▶ グラフ設定コマンド
fx-CG20 / CG50 では、以下のグラフ設定コマンドが追加されています。
GridLine (グリッド線), AxesScale (軸目盛り)
▋入出力コマンドの互換性
▍詳細動作が異なる入出力コマンド
▶ Locate コマンド
fx-9860GII と fx-CG20 / CG50 の Casio Basic でのテキスト出力範囲は同じで、21桁 × 7行 になっています。これら2機種でテキスト出力を行う Locate コマンドは互いに完全互換です。
一方、fx-5800P にも Locate コマンドがありますが、テキスト出力範囲が 16桁 × 4行 なので、範囲を超えた座標を設定すれば領域外エラーになり、領域外エラーが出ない場合は画面内でのテキスト出力の配置が異なりプログラム互換性はありません。表示位置のパラメータを手直しすれば、バランスの良い配置になったり、エラーを回避できます。
▶ Getkey コマンド
Caso Basic には、[AC] キー以外のキーに全てユニークなキーコードが割り当てられていて、どのキーが押されたかを返す Getkey コマンドがあります。
fx-9860GII と fx-CG20 / CG50 は、キーコードが完全互換なので、Getkey コマンドは完全互換です。
一方、fx-5800P のキーコードは、上記2機種とは全く異なるので、Getkey コマンドは上記2機種とは互換性がありません。
▶ 通信コマンド
fx-5800P の Casio Basic には通信コマンドがありません。
一方、fx-9860GII と fx-CG20 / CG50 の Casio Basic には、以下の同じシリアル通信コマンドが用意されています。
Send(、Rceive(、Send38K、Receive38K、OpenComport38K、CloseComport38K
▋配列関連のコマンド
▶ 配列変数 Z[ ]
● fx-5800P の Casio Basic では、配列変数 Z[ ] が使えます。
● fx-9860GII や fx-CG20 / CG50 には、配列変数が無いので、行列やリストを使います。fx-9860GII では、リストよりも行列の方が処理速度が速いので、配列変数の代わりに行列を使う方が良いかも知れません。
● fx-9860GII や fx-CG20 / CG50 には、配列変数が無いので、行列やリストを使います。fx-9860GII では、リストよりも行列の方が処理速度が速いので、配列変数の代わりに行列を使う方が良いかも知れません。
▶ 行列コマンド
● fx-5800P の Casio Basic では公式に行列がサポートされていませんが、使えます。
● fx-9860GII と fx-CG20 / CG50 の Casio Basic では、共通の行列コマンドがあります。
● fx-9860GII / fx-CG20 / fx-CG50 の行列コマンドは fx-5800P と互換性がありません。
● fx-9860GII と fx-CG20 / CG50 の Casio Basic では、共通の行列コマンドがあります。
● fx-9860GII / fx-CG20 / fx-CG50 の行列コマンドは fx-5800P と互換性がありません。
▶ 文字列処理コマンド
● fx-5800P の Casio Basic には文字列処理コマンドはありません。
● fx-9860GII と fx-CG20 / fx-CG50 の Casio Basic には、以下の同じ文字列処理コマンドがあります。
● fx-9860GII と fx-CG20 / fx-CG50 の Casio Basic には、以下の同じ文字列処理コマンドがあります。
StrLeft(、StrRight(、StrMid(、Exp▶Str(、Exp(、StrUpr(、StrLwr(、StrInv(、StrShift(、StrRotate(、StrJoin(、StrLen(、StrCmp(、StrSrc(
▋画面入出力制御コマンド
▶ ?(入力命令)
fx-5800P のみで使えて、fx-9860GII と fx-CG20 / CG50 ではエラーになる。
▶ ◢ と " " (表示命令)
全機種で使えるが、fx-9860GII / fx-CG20 /CG50 と fx-5800Pで、詳細動作が異なります。
⇒ 詳しくは fx-9860GII への移植 - 厄介な旧来の命令 参照
▶ Cls (クリアコマンド)
● fx-5800P: テキスト画面を消去します。
● fx-9860GII と fx-CG20 / CG50: グラフィックス画面を消去します。
● fx-9860GII と fx-CG20 / CG50: グラフィックス画面を消去します。
▋Casio Basic の互換性
機種の違いによる Casio Basic の互換性を一覧にしました(表2)。
コマンド類の互換性については、以下のように分類しました;
- 全機種の Casio Basic で完全互換のもの: ◎ で表記
- 全機種の Casio Basic に用意されているが、機種によって詳細動作が異なるもの: 〇 で表記
- 特定の機種の Casio Basic だけで使えるもの: △ で表記
- 特定の機種の Casio Basic には用意されていないもの: --- で表記
表2 代表的なコマンドの互換性
記 述 | fx-5800P | fx-9860GII | fx-CG20/50 | ||
1 | 入力命令(基本動作) | ? | △ | --- | --- |
2 | 表示命令(基本動作) | " ", ◢ | 〇1 | 〇2 | 〇2 |
3 | 旧来の命令(基本動作) | :, ?→, → | ◎ | ◎ | ◎ |
4 | 関係演算子 | =, ≠, >, ≥, <, ≤ | ◎ | ◎ | ◎ |
5 | ジャンプ | Goto ~ Lbl, Dsz, Isz, ⇒ | ◎ | ◎ | ◎ |
6 | 制御構造 | If ~ Then ( ~ Else) ~ IfEnd For ~ To ( ~ Step) ~ Next While ~ WhileEnd Do ~ LpWhile | ◎ | ◎ | ◎ |
7 | サブルーチン呼び出し | Prog | ◎ | ◎ | ◎ |
8 | プログラム制御 | Break, Return, Stop | ◎ | ◎ | ◎ |
9 | 論理演算1 | And, Or, Not | ◎ | ◎ | ◎ |
10 | 入力制御 | Getkey | 〇1 | 〇2 | 〇2 |
11 | 画面制御 | Locate | 〇1 | 〇2 | 〇2 |
12 | クリア1(テキスト クリア) | Cls | 〇 | --- | --- |
13 | クリア2(テキスト クリア) | ClrText | --- | 〇2 | 〇2 |
14 | 配列変数 | Z[ ] | △ | 行列 | 行列 |
15 | 行列 | (非公式) | 〇2 | 〇2 | |
16 | 論理演算2 | Xor | --- | 〇2 | 〇2 |
17 | クリア3(グラフィックス クリア) | Cls, ClrGraph | --- | 〇2 | 〇2 |
18 | 文字列処理、通信 | --- | 〇2 | 〇2 | |
19 | コメントアウト | ' | --- | 〇2 | 〇2 |
20 | グラフィックス1(モノクロ、論理座標系) | --- | 〇2 | 〇2 | |
21 | グラフィックス2(モノクロ、論理座標系) | Xmin, Xmax, Xdot, SketchNormal, SketchThick, SketchBroken, SketchDot, S-L-Normal, S-L-Thick, S-L-Broken, S-L-Dot | --- | 〇2 | 〇3 |
22 | グラフィックス2(物理座標系) | PxlOn, PxlOff, PxlChg, PxlTest( ), Text | --- | 〇2 | 〇3 |
23 | グラフィックス3(カラー、論理座標系) | Plot/Line-Color, Black, Blue, Red, Magenta, Green, Cyan, Yellow, SketchThin, S-L-Thin, GridLine, AxesScale | --- | --- | △ |
- fx-5800P で詳細動作が異なるものは 〇1 と表記
- fx-9860GII と fx-CG20/50 では完全互換だが fx-58000P とは詳細動作が異なるのは 〇2 と表記
- fx-9860GII と fx-CG20/50 で詳細動作が異なるものは〇2、 〇3 と表記しています。
こうして眺めてみると、1 ~ 15 のコマンドを使えばテキスト出力の殆どのプログラムが書けることが一目瞭然ですね。そのうち、3 ~ 9 までのコマンドが全機種で完全互換です。
つまり、機種が異なっても、主に 1 ~ 15 のコマンドを使えば、どの機種でも Casio Basic 共通(ほぼ互換)のプログラムを書け、最低限の手直しでプログラムが移植できることが改めて確認できました。
逆に言えば、価格面で最も入手し易い fx-5800P でCasio Basic が使いこなせるようになれば、作成したプログラムやCasio Basicに関する知識が、他のグラフ関数電卓にもそのまま使えると言えます。つまり、fx-5800P が Casio Baisc 入門に適していることが改めて分かります。
Casio Basic は階層的なブロック構造でコードを書ける (構造化プログラミングの考え方を適用できる)ので、特にテキスト表示のプログラミングについては一般的なBasicの感覚に近い仕様です。
応援クリックをお願いします。励みになるので...
- 関連記事
-
-
Casio Basic のバージョンとバグ 2017/10/10
-
Casio Basic で圧力換算プログラム 2017/08/16
-
Casio Basic - 機種間の互換性 2017/07/31
-
テンキーの数字からキーコードへの変換(2) 2015/10/11
-
テンキーの数字からキーコードへの変換式 2015/09/04
-