fx-CG20 の概要
初版: 2016/04/18
追記: 2016/06/04
更新: 2017/06/29
追記更新 2017/12/05
周期関数の積分について訂正 2020/05/23
追記: 2016/06/04
更新: 2017/06/29
追記更新 2017/12/05
周期関数の積分について訂正 2020/05/23
Casio fx-CG20
[2017/12/05 追記] fx-CG10 / CG20 ユーザーへ福音 - アドイン版 Casio Basic が fx-CG10 / CG20 に対応しました。遅い fx-CG10 / CG20 でも高速処理系を楽しめます。本稿最後に追記しました。
fx-CG20 を入手したので、概要を調べてみました。
fx-CG20 は、寸法や重さは fx-9860GII とほぼ同じで、キー配置や機能も fx-9860GII とほぼ同じです。
Casio Basic プログラムも fx-9860GII の上位互換となっているので、fx-9860GII の Casio Basicプログラムファイルは、一部のコマンドを除けば、ほぼそのまま fx-CG20 へ移植できます。
プログラムファイルのキーワードプロテクトの仕様が fx-9860GII から変更されていて、fx-9860GII では一旦設定したパスワードは削除できませんが、fx-CG20では削除可能です。[2016/06/04 追記]
fx-9860GII と大きく異なるのは、高精細カラー液晶を搭載していることです。精細度が高いので画面の物理的なピクセル数が増えています。従って、物理座標系で動作するコマンド(PxlOn、PxlOff、PxlChg、PxlTest、Text)は互換性がありません。また、Xmin, Xmax, Xdot に関する挙動も一部異なります。
このようなグラフィックスコマンドを用いたプログラムファイルは、fx-CG20 へそのまま移植すると描画動作が異なってしまいます。面白いことに、物理座標系で動作する Text コマンドだけは、そのパラメータで座標を指定する部分が、転送作業後自動的に変更されて、互換性が保たれます。
fx-9860GII と fx-CG20 の互換性という点では、キー配列と割り当て機能が殆ど同じ([5] キーに [SHIFT] [5] (FORMAT) が追加されているのが唯一の違い)で、関数電卓としては全く同じです。ちなみに積分計算は高速化されています。
ここでは、主に Casio Basicを使うことを念頭において、fx-CG20 の特徴やfx-9860GII から変化した点などを実際に調べて、その結果を紹介します。
[2017/12/05 追記] fx-CG10 / CG20 ユーザーへ福音 - アドイン版 Casio Basic が fx-CG10 / CG20 に対応しました。遅い fx-CG10 / CG20 でも高速処理系を楽しめます。本稿最後に追記しました。
fx-CG20 を入手したので、概要を調べてみました。
fx-CG20 は、寸法や重さは fx-9860GII とほぼ同じで、キー配置や機能も fx-9860GII とほぼ同じです。
Casio Basic プログラムも fx-9860GII の上位互換となっているので、fx-9860GII の Casio Basicプログラムファイルは、一部のコマンドを除けば、ほぼそのまま fx-CG20 へ移植できます。
プログラムファイルのキーワードプロテクトの仕様が fx-9860GII から変更されていて、fx-9860GII では一旦設定したパスワードは削除できませんが、fx-CG20では削除可能です。[2016/06/04 追記]
fx-9860GII と大きく異なるのは、高精細カラー液晶を搭載していることです。精細度が高いので画面の物理的なピクセル数が増えています。従って、物理座標系で動作するコマンド(PxlOn、PxlOff、PxlChg、PxlTest、Text)は互換性がありません。また、Xmin, Xmax, Xdot に関する挙動も一部異なります。
このようなグラフィックスコマンドを用いたプログラムファイルは、fx-CG20 へそのまま移植すると描画動作が異なってしまいます。面白いことに、物理座標系で動作する Text コマンドだけは、そのパラメータで座標を指定する部分が、転送作業後自動的に変更されて、互換性が保たれます。
fx-9860GII と fx-CG20 の互換性という点では、キー配列と割り当て機能が殆ど同じ([5] キーに [SHIFT] [5] (FORMAT) が追加されているのが唯一の違い)で、関数電卓としては全く同じです。ちなみに積分計算は高速化されています。
ここでは、主に Casio Basicを使うことを念頭において、fx-CG20 の特徴やfx-9860GII から変化した点などを実際に調べて、その結果を紹介します。
さて、fx-CG20 に搭載されている Casio Basic は、2006年に発売された fx-5800P 以降の機種に搭載されている 言語との互換性が高く、見かけによらず高機能です。当ブログでは、これらの言語を新世代 Casio Basic と呼んでいます。
< 新世代Casio Basic搭載機 >
- 2006年発売 fx-5800P
- 2007年発売 fx-9860G (OS Ver 2 以降)、生産中止
- 2009年発売 fx-9860GII
- 2010年発売 PRIZM fx-CG10 (北米のみ)、fx-CG20とほぼ同じ
- 2012年発売 fx-CG20
- 2013年発売 fx-FD10 Pro
新世代 Casio Basic については、Casio Basic の勧め を参考にしてください。
新世代 Casio Basic は、fx-5800P、fx-9860GII、fx-CG20 と機種が異なっても、一定の互換性が確保されています。当ブログでも fx-CG20 や 搭載 Casio Basic に関する記事を今後公開してゆくつもりです。
目 次
▋fx-CG20 の外観 / 概要
▍寸法 / 重さ
▍外装 / デザイン
▍表示 / 出力
▶ テキスト表示
▶ グラフィックス表示
● 1ピクセルの細線描画プログラム
● 3ピクセルの標準線秒がプログラム
▍カラー表示
▍キー配置 / キー入力
▍プログラムリストの利便性
▍関数電卓として
▶ メモリバックアップ機能
▶ ユーザーデータ・バックアップ機能
▶ 複素指数関数
▶ 積 分
▶ 周期関数の積分
▋fx-9860GII から fx-CG20 へのプログラム移植
▍電卓同士を繋いで直接転送
▍PCとのリンク
▋プログラムの動作比較
▶ テキスト表示のプログラム例
● 入力ボックス
● TempConv
● TimeZone
● HitBlow - Hit&Blow ゲーム
▍処理速度
▶ 計算主体プログラム例
● PRIME - 素因数分解
▶ 動きのあるテキスト表示プログラム例
● PYTHA - ピタゴラス数探索
▶動きのあるグラフィックス・プログラム例
● MONTECAR - モンテカルロ法
▋まとめ...のようなもの
▍互換性の利点
▍動きのあるプログラム
▍fx-CG20 に期待するもの
▋追 記
機種 | fx-5800P | fx-9860GII | fx-CG20 |
液晶ディスプレイ Casio Basic Graphics 出力 Caso 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 / 140時間 |
仮数+指数 | 10桁+2桁 | 10桁+2桁 | 10桁+2桁 |
内部演算桁数 | 15桁 | 15桁 | 15桁 |
プログラムメモリ容量 | 最大28.5 KByte | 最大 62 KByte | 最大 61 KByte |
プログラムファイル名 | 最大12文字 | 最大8文字 | 最大8文字 |
▲目次に戻る
▍寸法 / 重量
fx-9860GII と fx-CG20 はほぼ同じサイズ、重量は fx-5800P よりも厚みが1.5倍程度(カバーを付けると2倍程度)あって、一回り大きい感じです。
▍外装 / デザイン
fx-CG20 は、一言で言えばかっこいいですね。上半分の天板が透明プラスチックになっていて、矢印キーから液晶までの上全体をカバーしています。これがデザイン上の高級感を出しているように思います。しかし、透明天板は表面硬度が低くて傷つきやすく、使い込んでゆくと傷が目立ってくるのではないか気になります。スマホ用の保護シートを貼るなどの対策が良いかも知れません。保護ケースは、グレーの半透明で少し弾力性のあるプラスチック部材で、これもデザイン性が高いと思います。
▲目次に戻る
▍表示 / 出力
fx-CG20 は高精細カラー液晶を採用しているので、表現力が高いのが最大の特徴です。
▶ テキスト表示
Casio Basicでのテキスト表示の範囲は横21桁、縦7行。fx-9860GII と同じです。
▲目次に戻る
▶ グラフィックス表示
fx-CG20 のカラー液晶は、384×216 ピクセルありますが、Casio Basicでのグラフィックスプログラミングで使える描画エリアは、それより狭く制限されています。
Casio Basic での描画エリア制限は fx-9860GII にもあって、128 × 64 のドットマトリックスを搭載していて、Casio Basic で描画できるのは、127 × 63 ピクセルです(Casio Basic入門G01 参照)。
さて、fx-CG20 は fx-9860GII に比べると、Casio Basic で実際に使える描画エリアは、縦横ともに約3倍の精細度となっていて、
・横: (127 × 3 - 2) = 379 pixel
・縦: (63 × 3 - 2) = 187 pixel
となります。
ViewWindow コマンドによる座標系の設定は、fx-9860GII と互換性が保たれています。
例えば PlotOn コマンドで描画を行うと、fx-9860GII では液晶の1ピクセルが描画されますが、fx-CG20 では3 pixel x 3 pixel の 9 pixel の領域が1ドットとして描画されます。このようにしてグラフィックスが同じ位置に描画され、互換性が保たれています。
高精細液晶の fx-CG20 で、1ピクセルを1ドットに対応させようと思い、
ViewWindow 1,379,0,187,1,0
PlotOn 300,100
を実行すれば、1ドットが小さくなって細かい点が描画されることを期待しましたが、そこまで柔軟ではなくて、1ドットは 3x3 ピクセルのままです。PlotOn などのViewWindow 座標系やデフォルトの論理座標系で、ドット(点)を描画するコマンドは、3x3 の1ドットが描画の単位であり、fx-9860GII との互換性の確保が優先されているようです。
そこで、せっかくの高精細度液晶を活かすために、fx-CG20 の液晶の1ピクセル単位で描画したいと思って調べてみると、いくつかのコマンドは1ピクセル単位の描画に対応しています。
fx-CG20 で追加された細線のスタイル設定 SketchThin コマンド や S-L-Thin コマンドを組み合わせて使ってみると、1ピクセルの幅で直線や円を描画できました。さらに、1ピクセル単位で点を描画するためには、物理座標系で使える PxlOn、PxlOff、PxlChg、PxlTest( ) コマンドが有効だと分かりました。
そこで、高精細カラー液晶で1ピクセル単位で描画するサンプルプログラムを走らせて、概略を調べてみます。
▲目次に戻る
● 1ピクセルの細線描画プログラム
ファイル名: THINLINE.g3m
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
ViewWindow 1,127,0,63,1,0 ・・・(T-1)
Plot/Line-Color Black ・・・(T-2)
SketchThin Circle 63,31,25 ・・・(T-3)
Blue SketchThin F-Line 1,1,127,63 ・・・(T-4)
Red SketchThin Vertical 63 ・・・(T-5)
Magenta SketchThin Horizontal 31 ・・・(T-6)
For 1→A To 63×3-2 ・・・(T-7)
PxlOn A,A
Next
まず、このプログラムを入力しますが、キー操作は fx-9860GII と殆ど同じなので、fx-9860GII で慣れていると fx-CG20 で楽に入力できます。上のリンクからダウンロードできます。
Program を起動し、THINLINE を選んで実行します。
上のソースコードで、冒頭から (T-1) までは、 グラフィックスプログラムの設定です。ViewWindow座標系を設定しています。
ViewWindow 1,127,0,63,1,0 ・・・(T-1)
で、左上の座標が (1, 1) で、右下が (127, 63) になるような論理座標系を設定しています。これは、fx-9860GII の物理座標系に近い設定です。
fx-9860GII の Casio Basic グラフィックス座標系については、Casio Basic入門G01 や Casio Basic入門G07 でまとめていますので、参考にしてください。
続いて、
Plot/Line-Color Black ・・・(T-2)
では、デフォルトの色を Black に指定しています。
※ Plot/Line-Color コマンドの入力:
ショートカットキーが見つかっていません。
とりあえず以下で入力できます。
・[SHIFT] [7] (CATALOG)
で、現れるコマンドリストから探して入力。
※ 色指定コマンドの入力:
・ [SHIFT] [5] (FORMAT)
・ [1] (1:Color Command) ⇒ [EXE]
・ [1] ~ [7] で7色を選ぶ
なお、工場出荷状態では、デフォルトの色が Green になっているようで、Plot/Line-Color コマンドを使わないと、デフォルトは緑色になっているようでです。購入したもの以外に、実機が置いてあるお店で色々と試した結果です。
次の行の、
SketchThin Circle 63,31,25 ・・・(T-3)
は、SketchThin で1ピクセルの幅を指定して、Circle コマンドを実行しています。
続いて、
Blue SketchThin F-Line 1,1,127,63 ・・・(T-4)
では、色を Blue 、線の太さを SketchThin で1ピクセルに指定して、F-LINE コマンドで線を描画します。
さらに、
Red SketchThin Vertical 63 ・・・(T-5)
では、色を Red、線の太さを SketchThin で1ピクセル幅にして、垂直線描画 Vertical コマンドを実行しています。
今度は、水平線描画コマンド Horizontal に、色を Magenta に、線の太さを SketchThin で1ピクセルに指定して実行します。
Magenta SketchThin Horizontal 31 ・・・(T-6)
最後に以下の3行で、物理座標系で使う PxlOn で点を描画しますが、fx-CG20 の高精細液晶の1ピクセル単位での描画が可能になります。
For 文を使って、左上 PxlOn 1,1 から 右下まで 1ピクセルの点を順に描画してゆきます。
For 1→A To 63×3-2 ・・・(T-7)
PxlOn A,A
Next
ここで、63x3-2 は、187 ですが、分かり易いように計算式のままにしています。Casio Basic で使える描画エリアは、縦 187 ピクセル分です。
ところで、PxlOn コマンドの前に色指定をしていません。この場合は、Plot/Line-Color Black でデフォルト色に Black を指定しているので、これが活きて、自動的に Black 指定となります。
次に、上の THINLINE プログラムにある SketchThin コマンド を全て削除して、線の幅の1ピクセル指定を無効にして、描画がどうなるかを調べてみます。
ファイル名: NORMLINE.g3m
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
ViewWindow 1,127,0,63,1,0 ・・・(N-1)
Plot/Line-Color Black ・・・(N-2)
Circle 63,31,25 ・・・(N-3)
Blue F-Line 1,1,127,63 ・・・(N-4)
Red Vertical 63 ・・・(N-5)
Magenta Horizontal 31 ・・・(N-6)
For 1→A To 63×3-2 ・・・(N-7)
PxlOn A,A
Next
※ このプログラムファイルのダウンロード:NORMLINE (標準:NORM + 線:LINE)
これを実行すると、以下のように順次描画が進みます。
同じプログラムを fx-9860GII で実行すると、以下のような出力が得られ、同じようになりました。
fx-9860GII では円がデコボコになっていますが、高精細液晶の fx-CG20 ではスムーズな円になっていて、fx-CG20 の表現力の高さがはっきりと現れています。
fx-9860GII での標準の太さは1ピクセルなのに対して、fx-CG20 での標準の太さは3ピクセルで、互換性を保っていることが確認できました。
▲目次に戻る
▍カラー表示
テキスト表示やグラフィックス表示に7色(Black、Blue、Red、Magenta、Green、Cyan、Yellow)の色指定を各描画コマンドの前に設定すると描画の色を変えることができます。或いは、まとめて設定するコマンド Plot/Line-Color もあって、これらのカラー表示の様子は上で紹介しました。
テキストのカラー表示は、Locate コマンドの前に色指定を書けば良さそうです。
例えば、Locate コマンドを使ってテキストキャラクタの ■ を画面一杯に表示させ、■ の表示のたびに指定する色をランダムに変えています。このプログラムを何度か実行させると、以下のように色のパターンがランダムに現れます。カラー液晶搭載の fx-CG20 の楽しい部分ですね!
ファイル名: COLORTXT.g3m
For 1→Y To 7
For 1→X To 21
RanInt#(1,7)→N
If N=1:Then
Black Locate X,Y,"■"
Else If N=2:Then
Blue Locate X,Y,"■"
Else If N=3:Then
Red Locate X,Y,"■"
Else If N=4:Then
Magenta Locate X,Y,"■"
Else If N=5:Then
Green Locate X,Y,"■"
Else If N=6:Then
Cyan Locate X,Y,"■"
Else If N=7:Then
Yellow Locate X,Y,"■"
IfEnd:IfEnd:IfEnd
IfEnd:IfEnd:IfEnd
IfEnd
Next:Next
※ 色指定コマンドの入力:
・ [SHIFT] [5] (FORMAT)
・ [1] (1:Color Command) ⇒ [EXE]
・ [1] ~ [7] で7色を選ぶ
※ このプログラムファイルのダウンロード: COLORTXT (色:COLOR + テキスト:TXT)
これで、テキスト表示の色指定についても確認できました。
▲目次に戻る
▍キー配置 / キー入力
キーの数と配置はfx-9860GII と同一で、Getkey コマンドで得られるキーコードも全く同じです。
試しに、プログラムライブラリ - キーコード取得 に掲載しているプログラムを fx-CG20 に転送するか、或いはキー入力してから実行して、fx-9860GII と一緒に実行してみると、キーコードが同一であることが分かります。取扱説明書でも、キーコードが同一であることが確認できます。
▲目次に戻る
▍プログラムリストの利便性
プログラムの編集や実行を行う時のプログラムリストの利便性については、機種間の違いがあります。
例えば、fx-5800P のプログラムリストは、アルファベットを1文字入力すると、そのアルファベットから始まるファイル名までジャンプします。
○
一方、fx-9860GII のプログラムリストでは、アルファベットキー入力によるジャンプ機能はありません。
×
fx-CG20 では、例えばアルファベット M を入力してみると...
○
...このようにジャンプしました。fx-CG20 には、この使いやすいジャンプ機能があります。
▲目次に戻る
▍関数電卓として
fx-CG20 と fx-9860GII は、キーの数と配置が全く同じであるだけでなくて、計算の内部桁が15桁と同じで、各関数の精度範囲も同じなので、fx-CG20 の関数電卓としての使い勝手は fx-9860GII と同じだと分かります。
▶ ユーザーデータ・バックアップ機能
カシオの関数電卓は電源をオフにすると、作業内容やその際のユーザーデータが消えます。
一方、カシオのプログラム関数電卓 fx-5800P や、グラフ関数電卓 fx-9860GII や fx-CG20 (おそらく fx-FD-10 Proも ...) は、一旦電源をオフにしても、使用モードを変えても、各モードのユーザーデータはバックアップされています。
管理人は、この機能だけでもプログラム電卓を関数電卓として使う価値があると思っていて、日常的にプログラム電卓を関数電卓として使っています。
▶ 3桁区切り表示
カシオの最新の関数電卓 fx-JP900 / 700 / 500 では、関数電卓として3桁区切りが登場しました。標準電卓には搭載されているのに、なぜ関数電卓には無いのか?登場が遅すぎるようにも思います。
一方で、プログラム電卓には3桁区切り機能は無く、fx-CG20 にもありません。プログラムだけでなく関数電卓としても使う人は多いと思うので、是非とも追加して欲しい必須機能だと思います。
▲目次に戻る
▶ 複素指数関数
複素数を表示するように設定して、eπi を計算させてみると、fx-5800P はエラー、fx-9860GII は正しく -1 と結果を表示します。
fx-CG20 でも fx-9860GII と同様に、複素指数関数を正しく計算して、 -1 表示します。
他にも、以下のような計算結果が正しく得られます。
このあたりも、fx-9860GII と同じになっています。
▲目次に戻る
▶ 積 分
積分計算速度の比較をしてみます。[2016/04/19 ※の部分を修正]
機種 | ||
fx-JP900 | 5.5秒 | 48.7秒 |
fx-5800P | 10.1秒 | 56.7秒 |
fx-9860GII (SH4A) | 1.5秒 | 8.4秒 |
fx-CG20 | 1.0秒※ | 5.8秒※ |
※ 積分の詳細はこちら
fx-9860GII よりも速くなっていることが分かります。 ※
▲目次に戻る
▶ 周期関数の積分
積分計算にガウス・クロンロッド法が使われていることから、このアルゴリズムが苦手とする周期関数の積分を行って、タイムアウトする限界を比較してみます。
fx-9860GII よりも速くなっていることが分かります。 ※
▲目次に戻る
▶ 周期関数の積分
積分計算にガウス・クロンロッド法が使われていることから、このアルゴリズムが苦手とする周期関数の積分を行って、タイムアウトする限界を比較してみます。
機種 | 計算できる n | タイムアウトする n |
fx-JP900 | 8 | 9 |
fx-5800P | 8 | 9 |
fx-9860GII | n ≦ 60 Or (n = 64, 128, 256, 512) | n ≧ 61 Or n = 2m (m≧10) |
fx-CG20 | n ≦ 60 Or (n = 64, 128, 256, 512) | n ≧ 61 Or n = 2m (m≧10) |
▋fx-9860GII から fx-Cg20 へのプログラム移植
プログラムをfx-9860GII から fx-CG20 へ移植する方法を試してみます。
▍電卓同士を繋いで直接転送
fx-9860GII や fx-CG20 に添付されている 3ピンシリアルケーブルを使って、fx-9860GII と fx-CG20 を直接繋いで、Casio Basic プログラムファイルを転送できます。fx-CG20 ソフトウェアバージョン 2.02 取扱説明書の「第13章 データ転送」に書かれている通りに操作を行えば簡単に fx-9860GII にある Casio Basicプログラムファイルを転送できます。
下図のように、fx-9860GII と fx-CG20 の間でのデータのやりとりが簡単にできます。
...但し、オーバークロックしていると、接続完了までは問題無いのですが、実際に転送を行おうとすると、エラーになります。
電卓間を 3Pin シリアルケーブルで繋いでデータ転送する場合は、ノーマルクロックにしましょう。
▲目次に戻る
▍PCとのリンク
fx-CG20 に添付されている USBケーブルで、PCと電卓を繋いで、取扱説明書(上記と同じ第13章)に従って操作すると、PCから見て電卓が外部ドライブとして認識されるので、あとはPC上の操作だけで、ファイルの転送ができます。
そこで、私は、購入時の fx-CG20 内のデータを全てバックアップしました。バックアップしてあれば、電卓をリセットしてデータが無くなっても、元に戻せます。
PCとのリンクに関しては、オーバークロックしていても今のところ問題が出ていません。
=====
さて上記のいずれの方法でも、fx-9860GII のCasio Basicプログラムファイルを fx-CG20 へ転送すると、ファイルはfx-CG20 用に自動変換されます。プログラムファイルの拡張子が、g1m から g3m へ変換されます。さらに、Text コマンドの1つめと2つめのパラメータは座標を指定しますが、座標値設定は自動的に3倍 (x3 を付加) してくれます。
1例を挙げると、
fx-9860GII のソースコードが
Text 7,3," "
Text 13,3," "
となっていたものが、転送されると上図のように、自動的にパラメータの座標値に( ) を付け、さらに x3 を付加します。
但し、逆向きの転送、つまり fx-CG20 のCasio Basicプログラムファイルを fx-9860GII へ転送する場合は、Text コマンドのパラメータの座標値は、自動的に3で割る変換はしません。fx-CG20 が上位互換ということなのでしょう。
さて、fx-9860GII から fx-CG20 へプログラムファイルを転送する場合、Text コマンド以外の物理座標系で動作するコマンド PxlOn、PxlOff、PxlChg、PxlTest については、パラメータの座標値を自動的に3倍にしません。これらのコマンドが使われているプログラムは、転送しただけでは互換性が得られないので、手直しが必要です。
一部のコマンドを除き、上のいずれかの方法で fx-9860GII から fx-CG20 へ Casio Basic プログラムファイルを転送するだけで、殆どのプログラムがそのまま fx-CG20 で動作するのは、とても便利なことです。両機間の Casio Basic の互換性の確保をカシオが考えていることが分かります。
▲目次に戻る
▋移植プログラムの動作比較
▍互換性
▶ テキスト表示のプログラム例
一部のグラフィックスコマンドを使わなければ、そしてグラフィックスコマンドを一切使わないテキスト表示のプログラムは、fx-9860GII で動作するものは、ソースコードを全く変更しなくても fx-CG20 で動作します。
このエントリーで紹介するプログラムは、全て最初はfx-5800P で作ったオリジナルプログラムで、それを僅かに変更して fx-9860GII へ移植したものです。主に、Getkey コマンドで使うキーコードを変更し、Locate コマンドによる画面出力の配置を変更するだけで、そして旧来の命令を極力使わなければ、新世代 Casio Basic は互換性の高い言語と言えます。
さらに、ここで紹介した fx-9860GII用プログラム全ては、アドインCasio Basic "C.Basic" でも完全動作することを、強調しておきます。
⇒ C.Basic - アドイン Casio Basic 参照
● 入力ボックス
fx-9860GII用のソースコードを変更せず fx-CG20 に転送するだけで、完全に fx-CG20 で動作します。
※ ダウンロード
- fx-9860GII用 g1mファイル一式 (ZIPファイル)
- fxCG20用 g3mファイル一式 (ZIPファイル)
※ 詳しくは、入力ボックス 2.1G - fx-9860GII & fx-CG20 専用 を参照
▲目次に戻る
● TEMPCONV
fx-9860GII用のソースコードを変更せず fx-CG20 に転送するだけで、完全に fx-CG20 で動作します。
※ ダウンロード
- fx-9860GII用 g1mファイル一式 (ZIPファイル)
- fx-CG20用 g3mファイル一式 (ZIPファイル)
これらのZIPファイルには、このプログラムで使う 入力ボックス2.1G の IN.g1m か IN.g3m が含まれているので、解凍して得られるプログラムファイル(拡張子が g1m か g3m のもの) を電卓に全て転送すれば、プログラムが使えます。
※ 詳しくは、Casio Basic入門48 参照
fx-9860GII用のソースコードを変更せず fx-CG20 に転送するだけで、完全に fx-CG20 で動作します。
※ ダウンロード
- fx-9860GII用 g1m ファイル一式 (ZIPファイル)
- fx-CG20用 g3m ファイル一式 (ZIPファイル)
これらのZIPファイルには、このプログラムで使う 入力ボックス2.1G の INPI.g1m か INPI.g3m が含まれているので、解凍して得られるプログラムファイル(拡張子が g1m か g3m のもの)を電卓に全て転送すれば、プログラムが使えます。
※ 使い方など詳しくは、Casio Basic入門23 参照。この記事は fx-5800P 向けですが、プログラムの動作や使い方は全く同じです。
※ プログラムライブラリ - TimeZone も併せて参照 [2017/06/29 更新]
実は、上記の fx-9860GII用プログラムファイルは、現在開発進行中(テストバージョン)のアドインCasio Basic "C.Basic" で最適動作するように僅かに手を入れたものです(TIMEZONE.g1mの数行と C.Basic 専用サブルーチン TZL.g1mの追加のみ)。グラフィックスの一部のコマンドを使わなければ、或いはグラフィックスコマンドを一切使わなければ、fx-9860GII、fx-CG20、C.Basic そして、おそらく fx-FD10 Pro でも、ソースレベルで完全互換のプログラムを作れます。
C.Basic は、純正 Casio Basic のソースコードを極めて高速に動作させられるメリットがあので、fx-9860GII や fx-CG20 の純正 Casio Basic とのソースレベルでの完全互換には、大きな価値があります。
fx-9860GII用のソースコードを変更せず fx-CG20 に転送するだけで、完全に fx-CG20 で動作します。
※ ダウンロード
- fx-9860GII用 g1m ファイル一式 (ZIPファイル)
- fx-CG20用 g3m ファイル一式 (ZIPファイル)
※ 遊び方など詳しくは、fx-5800P;Hit&Blow【完成版】 参照。操作方法や遊び方は、fx-5800P 版と同じです。
※ プログラムライブラリ - Hit & Blow も併せて参照。[2017/06/29 更新]
fx-9860GII用のソースコードを変更せず fx-CG20 に転送するだけで、完全に fx-CG20 で動作します。
※ ダウンロード
- fx-5800P用 pdf ファイル
- fx-9860GII用 g1m ファイル
※ 使い方やプログラムソースの詳細は、fx-9860GII への移植 - 素因数分解 参照
<EXE> 表示が出たら、最後の行を示すので、これで素因数分解の全結果となります。
このように、プログラム PRIME を走らせると、計算中表示の更新は無く、CPUの殆どは計算に使われています。例外として、計算中はビジーマーカー表示がありますが、このプログラムは計算速度の比較に使えます。
そこで、以下の10桁の数の素因数分解の計算時間を比較してみます。
計算する数値: 7,849,516,203 = 32 x 9811 x 88897
fx-CG20 の画面は以下のようになります。
機種別、クロック別に計算処理時間の一覧は以下のようになりました。
CPUクロック | fx-5800P 純正 | fx-CG20 純正 | fx-9860GII 純正 | fx-9860GII×C.Basic |
? MHz | 444秒 | --- | --- | --- |
29 MHz | --- | 81秒 (Down) | 89秒 (標準クロック) | 3.8秒 |
59 MHz | --- | 63秒 (標準クロック) | 55秒 | 3.1秒 |
250 MHz | --- | 29秒 (最大クロック) | 26秒 | 0.55秒 |
280 MHz | --- | --- | 23秒 (最大クロック) | 0.50秒 (最大クロック) |
オーバークロック | --- | Ptune2 Ver 1.10 | Ftune2 Ver 1.10 | Ftune2 Ver 1.10 |
標準クロックでの結果を比較すると、fx-CG20 > fx-9860GII >> fx-5800P の順になります。
しかし、オーバークロックツールを用いてCPUクロックを揃えて比較すると、表から分かるように同じクロックでは fx-CG20 は常に fx-9860GII よりも少し遅いことが明らかです。fx-CG20 では演算中にカラーのアニメージョンが表示されるので、そのグラフィックス表示が律速になって足を引っ張っている可能性が高いです。
● fx-5800P のCPUクロックは不明ですが、ビジーマーカーが同様な fx-9860GII と同じ演算処理を行っているとして逆算すると、5~6MHz 程度と思われます。
● オーバークロックには、sentaro様作のアドインを使いました。fx-CG20 ではクロックを上げるだけでなく、敢えてクロックを下げて fx-9860GII の標準クロックに合わせました。
● Casio Basic 環境をアドインで提供する C.Basic も合わせて使ってみました。C.Basic は sentaro様によって現在開発中のアドインです。C.Basic の圧倒的な速さは、感動ものです (^_^)/
※ C.Basic について
現在は fx-9860GII 用の C.Basic がテストバージョンとして公開されていて、開発継続中です。 fx-CG20 用は将来の対応になるようです。C.Basic については、アドイン Casio Basic - トップページ を参照ください。
※ オーバークロックツールについて [2016/04/20 追記変更]
オーバークロックはメーカーの保証外の使い方なので、万一の場合電卓が再起不能になる可能性を受け入れ、自己責任で使って下さい。これば絶対の前提条件です。
fx-CG20用のPtune2 や fx-9860GII (SH4A)用のFtune2 では、5個の設定が [F1] ~ [F5] キーにプリセットされでいます。[F1] は電卓本来のクロック設定で、[F5] には5つの設定のうち最も高いクロック設定です。
比較的リスクが低いと思われるのは、
・ fx-9860GII: プリセットの [F5] を選んでおけば、低いリスクでオーバークロックが楽しめると思います。 なお、 [F5] を選んだ時は、235.95MHz(本来のクロック 24.49MHz)となると思います。
・ fx-CG20: プリセットの [F5] を選んでおけば、低いリスクでオーバークロックを楽しめると思います。なお、[F5] を選んだ時は、CPU 191.69MHz (本来のクロック 58.98MHz)になると思います。
これでは物足りないなら、さらに[→] キーを押すことで、段階的にクロックを上げられますが、リスクが上がることを意識してください。
私の経験では、クロックをかなり高く設定したらRAM異常が発生して、動作がおかしくなったことがあります。この時は必要なソフトウェアを再インストールして復活しました。まだ経験していませんが、一番怖いのが、ROMが書き換わったり消去される場合です。この場合は再起不能となります(危機一髪でこれを逃れた経験があります)。
私の場合は、fx-9860GII × Ftune2 では、目安としては可能な最大クロックから2段階落としたクロックで使っています。、fx-CG20/10 × Ptune2 では、目安として可能な最大クロックから3段落として使っています。
但し、製品に実際に使われている個別の電子部品の限界は製造ロットでも個体でも異なるので、上の私の目安が全ての製品に適用できないことは、申し添えておきます。作者の sentaro 様に質問すれば相談にのってもらえるかも知れませんが、自己責任を了承の上で相談してください。
私の場合は、fx-9860GII 向けに Ftune2 を1年以上使っていて今のところ大きなトラブルを経験していません。fx-CG20 用の Ptune2 は使い始めて数日ですが、既にRAM異常を経験していて、おそらくROM異常で再起不能になる一歩手前まで経験しています。
上の表では、用いたオーバークロックツールの種類とバージョンを併記しています。
[2016/04/24 最新バージョンを追記]
Ftune2 と Ptune2 については、fx-9860GII のオーバークロック を参照ください。ここから sentaro様のページを経由してダウンロードできます。ご質問があれば、このページにコメントを頂くか、sentaro様へ直接お問い合わせください。
fx-9860GII用のソースコードを変更せず fx-CG20 に転送するだけで、完全に fx-CG20 で動作します。
※ ダウンロード
- fx-5800P用 pdf ファイル
- fx-9860GII用 g1m ファイル
- fx-CG20用 g3m ファイル
※ ピタゴラス数探索プログラムの使い方など詳細は、fx-9860GII への移植 - ピタゴラス数 を参照。
このように、テキスト表示で動きのあるプログラムでは、fx-CG20 は fx-9860GII と比べて速いかどうかを調べてみます。
※ ピタゴラス数探索プログラムの使い方など詳細は、fx-9860GII への移植 - ピタゴラス数 を参照。
このように、テキスト表示で動きのあるプログラムでは、fx-CG20 は fx-9860GII と比べて速いかどうかを調べてみます。
[EXE] キーを長押しすると連続モードになって、A、B、C 1組のピタゴラス数が、次々に変化します。つまり、このピタゴラス数探索プログラムは、テキスト表示が常に更新し続けます。
そこで、500個のピタゴラス数が見つかるまでの時間を、機種別、クロック別に調べて比較してみました。
CPUクロック | fx-5800P 純正 | fx-CG20 純正 | fx-9860GII 純正 | fx-9860GII×C.Basic |
? MHz | 441秒 | --- | --- | --- |
29 MHz | --- | 291秒 (Down) | 93秒 (標準クロック) | 17.5秒 |
59 MHz | --- | 185秒 (標準クロック) | 61秒 | 13秒 |
250 MHz | --- | 60秒 (最大クロック) | 24秒 | 3秒 |
280 MHz | --- | --- | 22秒 (最大クロック) | 2.7秒 (最大クロック) |
オーバークロック | --- | Ptune2 Ver 1.01 | Ftune2 Ver 1.02 | Ftune2 Ver 1.02 |
標準クロックで比較しても fx-CG20 は fx-9860GII よりもかなり遅いことが分かります。
同じクロックでは fx-XG20 は fx-9860GII よりも大幅に遅くなっています。fx-CG20 での画面表示のオーバーヘッドが大きい ことがよく分かります。
なお、C.Basic は、この例でもかなり速いですね。
fx-9860GII用のソースコードを変更せず fx-CG20 に転送するだけで、完全に fx-CG20 で動作します。
[EXE] キーを押すと、ランダムに点を打ち始め、それが円内にある割合から円周率を求める、モンテカルロシミュレーションプログラムです。このプログラムは、動きのあるテキスト表示と動きのあるグラフィックス描画を行うもので、fx-CG20 は fx-9860GII と比べて速いかどうかを調べてみます。
そこで、500個のピタゴラス数が見つかるまでの時間を、機種別、クロック別に調べて比較してみました。
但し、プログラムファイルを fx-CG20 へ転送すると、Text コマンドのパラメータの座標値に x3 が自動的に付加されます。このままだと、x3 の計算を行うことになり、その計算時間が余分にかかることになって、比較には適当でないことになります。そこで、x3 の部分は計算結果の数値に書き換えました。この変更を行ったプログラムファイルを、上からダウンロードできます。
CPUクロック | fx-CG20 純正 | fx-9860GII 純正 | fx-9860GII×C.Basic |
29 MHz | 513秒 (Down) | 135秒 (標準クロック) | 8秒 |
59 MHz | 429秒 (標準クロック) | 95秒 | 6.4秒 |
250 MHz | 108秒 (最大クロック) | 26秒 | 1.1秒 |
280 MHz | --- | 23秒 (最大クロック) | 0.99秒 (最大クロック) |
オーバークロック | Ptune2 Ver 1.01 | Ftune2 Ver 1.02 | Ftune2 Ver 1.02 |
標準クロックで比較しても fx-CG20 は fx-9860GII よりも非常に遅いことが分かります。
同じクロックでも fx-XG20 は fx-9860GII よりも大幅に遅くなっています。fx-CG20 でのグラフィックス描画のオーバーヘッドが非常に大きい ことがよく分かります。オーバークロックにより CPUクロックや I/O バスを速くしても、純正 Casio Basic では画面更新に一定の時間がかかるため、特にグラフィックス描画が遅いという仕様上の問題がありそうです。
なお、C.Basic は今回の例でも極めて速いです。実は、C.Basic は画面更新のタイミングを最大限速くする工夫がなされているのです。後出しジャンケンで失礼しました。
▋まとめ...のようなもの
ざっと fx-CG20 について調べてみました。
▍互換性の利点
fx-CG20 の Casio Basic は、fx-9860GII と互換性が高いことが分かりました。特にテキスト表示のプログラムなら、ほぼ完全に互換性が確保されていると思います。その上で、カラー表示の一手間を加えると、表現力の高いプログラムに仕上がります。
さらに精細度の良い液晶を使っているので、とても見やすいプログラムになります。動きの少ないグラフィックス描画をを併用すれは、魅力的なプログラムを書けるでしょう。
これらの点は、fx-9860GII よりも fx-CG20 を使いたいと思わせる魅力です。高精細カラー液晶を最大に活かしたプログラムをいずれ作ってみたいと思います。
▲目次に戻る
▍動きのあるプログラム
今回のプログラムの処理時間の比較結果をグラフにしてみます。
計算処理だけなら、fx-CG20 は同じCPUクロックで fx-9860GII とほぼ同じ、fx-CG20 が若干遅い程度です。
同じCPU (SH4A) を使っているので、計算時間が変わるとは思えず、この差は演算中を示すビジーマーカーの表示によるものと考えられます。
計算だけでなく、テキスト表示の更新を頻繁に行うと、fx-CG20 は fx-9860GII よりも時間がかかるようになります。やはり fx-CG20 の画面更新処理が fx-9860GII よりも遅いことが分かります。
グラフィックスの頻繁な更新は、fx-CG20 をさらに低速化することが分かります。テキスト画面よりもグラフィックス画面の更新に時間がかかっていますが、fx-CG20 ではグラフィックス更新がより顕著に遅くなっています。
これらの傾向は、純正Casio Basic の仕様と言えます。グラフィックスは一旦VRAMに出力し、それをLCD(液晶画面)に転送して表示しますが、Casio Basic ではVRAMからLCDへの転送が頻繁に行われていることは、fx-9860GII で分かっています。これは、Casio Basic と C言語で作るアドインの両方で同じ動作を作って、VRAMからLCDへの転送頻度を色々と変えてみることで、確認できています。fx-CG20 でも同様なことになっていると思います。
頻繁な画面更新を行うプログラムは、Casio Basic には向かず、特にグラフィックス・プログラミングには向かないわけですが、fx-CG20 ではカラーデータの転送により時間がかかる筈で、それが表示速度を遅くするのは間違いないでしょう。
動きのあるプログラムは、 fx-CG20 では fx-9860GII 以上に向いていないことを前提にして、プログラミングを楽しみたいと思います。
▲目次に戻る
▍fx-CG20 に期待するもの
Casio Basic プログラミング機としてみた場合は、どうしても表示にカラーを使いたいという場合は別として、モノクロ表示に限れば、fx-CG20 のパフォーマンスは fx-9860GII より劣る、という結果が出てしまいました。
数学や物理の教育以外の目的で、Casio Basicプログラミングを楽しむのは、マイナーな趣味かも知れません。そんなマイナーな目的で fx-CG20 を評価するのは不適切かも知れません。
本来 fx-CG20 は、高精細カラー液晶を利用して、様々なアドインで数学を楽しく勉強することを主眼に設計されているのは、カシオのホームページやインターネットでの事例集からハッキリと伝わってくるので、その目的には fx-CG20 はとても魅力的でしょう。
残念なことの一つとして、カラーの高精細液晶を搭載しているなら、是非とも日本語表示にも対応して欲しいと思います。中文対応しているのだから日本語対応も簡単な筈です。そして、3桁区切りにも是非とも対応すべきです。
今回の評価では、C.Basic の圧倒的なパフォーマンスも紹介しました。オーバークロックよりも C.Basic が fx-CG20 に対応してくれると、プログラミングがとても楽しくなりそうです。
▲目次に戻る
▋追記 [2017/12/05]
アドイン版 Casio Basic - C.Basic は、上でみてきたように Casio Basic の上位互換で極めて高速に Casio Basicプログラムを実行できます。これまで fx-9860G シリーズにのみ対応していましたが、fx-CG10 / CG20 / CG50 についに対応し、C.Basic for CG として公開されました。
C.Basic for CG 開発が始動
この高速処理系を使うと、fx-CG10 / CG20 が突如高速Casio Basic機としてよみがえり、fx-9860Gシリーズよりも遙かにきれいな高精細カラー液晶を活かした表現力の高いプログラムを作って楽しめます。
fx-CG50 とほぼ同等のプログラミング環境が得られますが、fx-CG50 よりも消費電力が高いのがハードウェア上の欠点です。
▲ 目次に戻る
応援クリックをお願いします。励みになるので...
keywords: CasioBasic、プログラミング入門、プログラム関数電卓