Casio Basic - 機種間の互換性

Casio Basic - 機種別の互換性
<Casio Basic入門 - 目次>


2016/04/19
更新:2017/07/31


日本国内で正式発売されているカシオのプログラム電卓のうち、fx-5800P、fx-9860GII、fx-CG20 に搭載されている 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 で出力(表示)が異なり、互換性がありません。
 
 
グラフィックス・コマンドの互換性

詳細動作が異なるグラフィックス・コマンド
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行 なので、上記2機種とは画面内でのテキスト出力の配置が異なるか、領域外のエラーになります。表示位置のパラメータを手直しすれば、バランスの良い配置になったり、エラーを回避できます。
 
 
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で、詳細動作が異なります。
 
 
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表示命令(基本動作)" ", 〇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論理演算1And, 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論理演算2Xor---〇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 と表記しています。
[2016/04/25 追記]
こうして眺めてみると、115 のコマンドを使えばテキスト出力の殆どのプログラムが書けることが一目瞭然ですね。そのうち、3 ~ 9 までのコマンドが全機種で完全互換です。

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

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

Casio Basic は構造化プログラミング考え方を適用でき、特にテキスト表示のプログラミングについては他の高級言語に極めて近い仕様です。従って、fx-5800P で Casio Basic を学べば、プログラミング入門と言えるでしょう。




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



  


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

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


関連記事

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

コメントの投稿

非公開コメント

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

やす (Krtyski)

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


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

実際に触って気づいたこと、自作プログラム、電卓プログラミングについて書いています

おもしろい・役に立つならクリックしてください。励みになります。
にほんブログ村 IT技術ブログ 開発言語へ
にほんブログ村


人気ブログランキングへ


FC2ブログランキングへ


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

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

RSSリンクの表示
最新トラックバック
ブロとも申請フォーム

この人とブロともになる

QRコード
QR