Casio Basic - 機種間の互換性

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 のコマンドには、ハードウェアに依存するものが有るので、ハードウェアの主な違いをまとめてみました。

Graphing Calcs 
左から、fx-CG50、fx-CG20、fx-9860GII、fx-5800P


表1 ハードウェア仕様の主な違い

機種fx-5800Pfx-9860GIIfx-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 15184 x 91.5 x 21.2188.5 x 89.5 x 20.6
重量 (g)150260220
電池 / 寿命単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 での出力は、次のように同じ結果になります。

Circle_9860GII Circle_CG20 
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 での出力は、次のように違った出力結果になります。

Cross_9860GII Cross_CG20 
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 と、異なった値になります。
 
 
線のスタイル設定
描画コマンド LINEF-LINEVerticalHorizontalCircle  の線の太さを設定するコマンドで描画する実際の線の太さは互換性がありません。しかしそれによってコマンドレベルとプログラムレベルの両方で互換性を確保しています。

線の太さ (ピクセル)
前置コマンド / セットアップコマンドfx-9860GIIfx-CG20/CG50
SketchNormal / S-L-Normal13
SketchThick / S-L-Thick25
SketchBroken / S-L-Broken13
SketchDot / S-L-Dot13
SketchThin / S-L-Thinなし1
 
 
物理座標系のコマンド
Casio Basic の物理座標で使う以下のコマンドは、描画位置の座標が同じでも、液晶画面全体での相対的な描画位置が変わります。つまり、コマンドレベルでの互換性はあるが、画面全体でみると出力結果が異なるのでプログラムの互換性はありません。

PxlOnPxlOffPxlChgPxlTest(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 (軸目盛り)

プログラム
ClrGraph
GridLine
AxesScale
SketchThin F-Line 3,3,0,0


fx-CG20 / CG50 でしか使えない

fx-CG20/CG50 でグリッド線と軸メモリを指定

NewGrSet
プログラム
ClrGraph
GridOn
AxesOn
SketchThin F-Line 3,3,0,0


fx-CG20 / CG50 と fx-9860GII で互換性有り

fx-CG20/CG50 でグリッドOn、軸On を指定
NewGrSet2

fx-9860GII でグリッドOn、軸On を指定
GrSet 
 
 

 
入出力コマンドの互換性

詳細動作が異なる入出力コマンド

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(Send38KReceive38KOpenComport38KCloseComport38K
 
 


配列関連のコマンド

配列変数 Z[ ]
fx-5800P の Casio Basic では、配列変数 Z[ ] が使えます。
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-5800P の 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: グラフィックス画面を消去します。
 
 


Casio Basic の互換性

機種の違いによる Casio Basic の互換性を一覧にしました(表2)。
コマンド類の互換性については、以下のように分類しました;
  • 全機種の Casio Basic で完全互換のもの: で表記
  • 全機種の Casio Basic に用意されているが、機種によって詳細動作が異なるもの: で表記
  • 特定の機種の Casio Basic だけで使えるもの: で表記
  • 特定の機種の Casio Basic には用意されていないもの: --- で表記

表2 代表的なコマンドの互換性

記 述fx-5800Pfx-9860GIIfx-CG20/50
1入力命令(基本動作) ?------
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論理演算1And, Or, Not
10入力制御Getkey
11画面制御Locate
12クリア1(テキスト クリア)Cls------
13クリア2(テキスト クリア)ClrText---
14配列変数Z[ ]行列行列
15行列(非公式)
16論理演算2Xor---
17クリア3(グラフィックス クリア)Cls, ClrGraph---
18文字列処理、通信---
19コメントアウト ' ---
20グラフィックス1(モノクロ、論理座標系)---
21グラフィックス2(モノクロ、論理座標系)Xmin, Xmax, Xdot,
SketchNormal, SketchThick,
SketchBroken, SketchDot,
S-L-Normal, S-L-Thick,
S-L-Broken, S-L-Dot
---
22グラフィックス2(物理座標系)PxlOn, PxlOff, PxlChg,
PxlTest( ),
Text
---
23グラフィックス3(カラー、論理座標系)Plot/Line-Color,
Black, Blue, Red, Magenta,
Green, Cyan, Yellow,
SketchThin, S-L-Thin,
GridLine, AxesScale
------
  • fx-5800P で詳細動作が異なるものは  と表記
  • fx-9860GII と fx-CG20/50 では完全互換だが fx-58000P とは詳細動作が異なるのは  と表記
  • fx-9860GII と fx-CG20/50 で詳細動作が異なるものは  と表記しています。
[2016/04/25 追記]
こうして眺めてみると、115 のコマンドを使えばテキスト出力の殆どのプログラムが書けることが一目瞭然ですね。そのうち、3 ~ 9 までのコマンドが全機種で完全互換です。

つまり、機種が異なっても、主に 115  のコマンドを使えば、どの機種でも Casio Basic 共通(ほぼ互換)のプログラムを書け、最低限の手直しでプログラムが移植できることが改めて確認できました。

逆に言えば、価格面で最も入手し易い fx-5800P でCasio Basic が使いこなせるようになれば、作成したプログラムやCasio Basicに関する知識が、他のグラフ関数電卓にもそのまま使えると言えます。つまり、fx-5800P が Casio Baisc 入門に適していることが改めて分かります。

Casio Basic は階層的なブロック構造でコードを書ける (構造化プログラミングの考え方を適用できる)ので、特にテキスト表示のプログラミングについては一般的なBasicの感覚に近い仕様です。




応援クリックをお願いします。励みになるので...
にほんブログ村 IT技術ブログ 開発言語へ


 



keywords: fx-9860GIICasioBasic、グラフィックス, プログラミング入門プログラム関数電卓

リンク集 | ブログ内マップ


関連記事

テーマ : プログラム関数電卓
ジャンル : コンピュータ

コメントの投稿

非公開コメント

最新記事
検索フォーム
最新コメント
カテゴリ
C# (3)
Online Counter
現在の閲覧者数:
プロフィール

やす (Krtyski)

Author:やす (Krtyski)
since Oct 30, 2013


プログラム電卓は、プログラムを作って、使ってナンボ!

プログラム電卓を実際に使って気づいたこと、自作プログラム、電卓での Casio Basic, C.Basic そして Casio Python プログラミングについて書いています。

なお管理人はカシオ計算機の関係者ではありません。いつでもどこでもプログラミングができるプログラム電卓が好きな1ユーザーです。


写真: 「4駆で泥んこ遊び@オックスフォード郊外」

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

ブロとも申請フォーム

この人とブロともになる

QRコード
QR