fx-9750GIII の概要

 
初版: 2020/05/24
更新: 2020/05/31


Casio fx-9750GIII POWER GRAPHIC 3 

2020年4月、北米(アメリカとカナダ)限定で fx-9750GIII が発売されました。
2020年3月にヨーロッパ限定で発売された fx-9860GIII とは色が違うだけで機能はほぼ同じ製品です。モデル名を見るだけでは北米とヨーロッパで販売されている fx-9750GII の後継機ではないかと思われるが、機能の点では fx-9860GII の後継機と言えます。

つまり、fx-9860GII の後継機として、ヨーロッパでは fx-9860GIII、北米では fx-9750GIII が発売されたと考えられます。

fx-9750GIII_large   fx9860GIII
  fx-9750GIII     fx-9860GIII

2020年5月24日現在、Amazon USA での fx-9750GIII の価格は $51.34、一方 Amazon France での fx-9860GIII の価格は €123.77 で、日本への送料がそれぞれ掛かります。fx-9750GIII が半額近く安い設定になっています。 fx-9750GIII は、機能と価格の点で、最も推奨するモノクロ液晶グラフ関数電卓です。2020/05/31 時点で7千円台で入手できます。

ヨーロッパ向けグラフ関数電卓の紹介ページ
 - CASIO INTERNATIONAL のグラフ関数電卓のページ
 - CASIO WORLDWIDW EDUCATION WEBSITE のヨーロッパ向けグラフ関数電卓のページ

北米 (アメリカとカナダ) 向けグラフ関数電卓の紹介ページ
 - CASIO USA のグラフ関数電卓のページ
 - CASIO WORLDWIDE EDUCATION WEBSITE の北米向けグラフ関数電卓のページ

現在のところ最も安く入手する方法は Amazon USA からの購入で、この状況は続くと思われます。管理人が購入した時は COVID-19 によるロックダウンの影響でアメリカから日本への配送が止まっていたので、セカイモンで購入しました。購入時に支払った総額は ¥7,651 でしたが、Amazon USA から購入すれば 本体 $51.34 + 国際輸送料 $18.48、為替レートが 1ドル = 108円とすれば、¥7,541、1ドル = 109円としても ¥7,610 となり、セカイモン価格以下になる可能性が高いと思います。為替レートと本体価格は随時変化するので、購入検討時に両者を比較することをお勧めします。

なお、日本国内市場ではモノクロ液晶のグラフ関数電卓 fx-9860GII は既に販売していないので、国内販売の後継機種がどうなるのか気になるところです。

fx-9860GIIfx-9860GIII は、モデル名の末尾の I が1つ違うだけなので分かりにくいです。


はじめに

Casio Basic の機能に着目すると、以下に列挙したモデルが同じカテゴリに含まれます。

 - 2006年発売 fx-5800P 
 - 2007年発売 fx-9860G (OS Ver 2 以降)、生産中止
 - 2009年発売 fx-9860GII (国内販売中止)
 - 2011年発売 fx-CG10 PRIZM (北米のみ)
 - 2012年発売 fx-CG20 (fx-CG10 PRIZM の約1年後)
 - 2013年発売 fx-FD10 Pro
 - 2017年発売 fx-CG50 (欧米先行、2017/10/20国内発売)
 - 2020年発売 fx-9860GIII (ヨーロッパ限定発売)
 - 2020年発売 fx-9750GIII (北米限定発売)

fx-9860GIIIと fx-9860GIII / fx-9860GII との比較
 fx-9750GIIIfx-9860GIIIfx-9860GII
 電池 単四 x 4 単四 x 4 単四 x 4
 電池寿命 (メーカー測定基準) 230 時間 230 時間 200 時間
 サイズ (mm) 18.7 x 83.5 x 175.5 18.7 x 83.5 x 175.5 21.2 x 91.5 x 184
 重さ (g) 190 190 225
 液晶ディスプレイ
 ・Casio Basic グラフィック
 ・Casio Basic テキスト
 ・バックライト
 64 x 128 pixel
・63 x 127 dot
・7 x 21 文字
なし
 64 x 128 pixel
・63 x 127 dot
・7 x 21 文字
なし
 64 x 128 pixel
・63 x 127 dot
・7 x 21 文字
・あり
 仮数 + 指数 10桁 + 2桁 10桁 + 2桁 10桁 + 2桁
 内部演算桁数 15桁 15桁 15桁
 プログラムメモリ容量最大 ~62 KB 最大 ~62 KB 最大 ~62 KB
 メインメモリ (利用可能) 62 KB ROM ~62 KB ROM ~64 KB ROM
 ストレージメモリ  ~3 MB SDRAM ~3 MB SDRAM ~1.5 MB SRAM
 プログラムファイル名 最大8文字 最大8文字 最大8文字
 CPU SH4A (SH7305) SH4A (SH7305) SH4A (SH7305)
  クロック ~59 MHz ~59 MHz ~29 MHz
 - FLL:  14.75 MHz x900 14.75 MHz x900 14.75 MHz x900
 - PLL:  FLLx16, 235.93 MHz FLLx16, 235.93 MHz FLLx16, 235.93 MHz
 - IFC: CPUコアクロック 1/4 PLL, 58.98 MHz 1/4 PLL, 58.98 MHz 1/8 PLL, 29.49 MHz
 - SFC: SuperHywayバスクロック 1/8 PLL, 29.49 MHz 1/8 PLL, 29.49 MHz 1/8 PLL, 29.49 MHz
 - BFC: メモリバスクロック 1/8 PLL, 29.49 MHz 1/8 PLL, 29.49 MHz 1/8 PLL, 29.49 MHz
 - PFC: I/Oクロック 1/16, 14.74 MHz 1/16, 14.74 MHz 1/16, 14.75 MHz
 PCリンク Screen Receiver  Screen Receiver  FA-124
 OSバージョン 3.21  3.21  2.09
 Casio Basic あり あり あり
 Python あり あり なし

fx-9750GIII は色以外は fx-9860GIII とほぼ同じだと分かります。

fx-9860GII からの主な変化を列挙します;
CPUクロックは、fx-9860GIII と同様に fx-9860GII の倍になりました。
ストレージメモリは、fx-9860GIII と同様に fx-9860GII の倍になりました。
PCリンクが fx-CGシリーズと同様にUSBマスストレージになり、PCリンクがとても楽です。
 fx-9860GIII と同様に Pythonが追加されています。
サイズが小さく、薄くなり、軽くなりました。

以下は、改悪と思われる変化です; 
液晶のバックライトが無くなりました。
液晶サイズが小さくなりました。
液晶画面は、fx-9860GIII と同様に fx-9860GII より視認性が低下、応答性も悪化しました。

個人的には、十分に明るい場所で使う限り液晶画面の視認性は気にならず、黒い筐体は白よりも気に入っています(汚れが芽出しにくい)。液晶の問題を除けば fx-9750GIII は良いモデルだと思います。特に小型・薄型になったことで、1万円未満で国内販売されれば、fx-5800P の代わりに使えるモデルになるかも知れません。
 

 
目 次

1. 到着したパッケージ

2. 外 観

3. ソフトウェアダウンロード
 3.1 OSアップデート
 3.2 取扱説明書
 3.3 アドインプログラム
 3.4 サポートソフトウェア

4. データ転送
 4.1 PCとのリンク
 4.2. 電卓同士のデータ転送

5. バックアップ

6. ハードウェア
 6.1 液晶画面の応答性悪い NEW!

7. 関数電卓としての機能 [2020/05/31 追記]

8. Casio Basic の互換性

9. カタログ機能

10. プログラムリスト

11. Casio Bsic の処理速度
 11.1 計算主体のプログラム
 11.2 動きのあるテキスト出力プログラム
 11.3 動きのあるグラフィック出力プログラム

12. さらなる高速化
 12.1 オーバークロック
 12.2 アドイン版Casio Basic (C.Basic)
 

 
到着したパッケージ

fx9750GIII_Package_1 fx9750GIII_Package_2 
分厚いプラスチックがガッチリと融着されているものではなく、楽に開けらます。
TI-84 Plus が想定ライバル機のようです。

fx9750GIII_Delivered 
パッケージを開けると、fx-9750GIII 本体、英語版 Quick Start Guide、単四アルカリ電池4本 (試供品)、英語版保証書、英語版注意書きが入っています。PCリンク用のUSBケーブル、電卓同士を接続する3Pinケーブル、CDは同梱されていません。

 
<目次に戻る>
外 観

fx-9750GIII_large   fx9860GIIIfx991es_2
  fx-9750GIII     fx-9860GIII    fx-991ES PLUS
                          2nd edition


fx-9750GIII (写真左) と fx-9860GIII (写真中央) は、色以外は全く同じデザインです。
ところで、スタンダート関数電卓 - ESシリーズ 2nd edition - 例えば fx-991ES PLUS 2nd edition (写真右) とデザインがよく似ており、カシオの最新モデルの共通コンセプトのようです。また、このスタンダート関数電卓のサイズと大きく変わらず、小型化が進んでいることが分かると思います。

9750GIII_Backside 9750GIII_Cover 
fx-9750GIII のケース裏側のデザインは、凝った美しい凹凸模様が入っています (fx-9860GIII と同様)。模様の中心にリスタートボタンがあります。ハードカバーは CASIO の刻印が入っているだけのシンプルなデザインになっています。

なお、ケース裏側をよく見ると MADE IN THAILAND とあるので、カシオもいよいよ脱中国に動いているのかも知れません。

 
<目次に戻る>
ソフトウェア ダウンロード

 
OSアップデート 
fx-9750GIII 本体で、[MENU] - [System] - [F4] (Version) で確認すると、OSバージョンは 03.21.0200 となっていました。
今のところ、これが最新です。

 
<目次に戻る>
取扱説明書 
日本語取扱説明書はまだ公開されていません。

英語版は、Casio World Education Website の Download Resources のページからダウンロードできます。
- fx-9750GIII のマニュアル
 
<目次に戻る>
アドインプログラム
グラフ関数電卓のDownload Resourcesのページで、SOFTWARE LICENSE AGREEMENT に [Accept] クリックすると、OS、マニュアルと各種アドインプログラムをダウンロードできます。アドインの中で、購入した fx-9750GIII にインストールされているのは Geometry のみです。

なお、ここで OS アップデートファイルもダウンロードできますが、購入した製品にインストールされている Ver 3.21 よりも古いものなので、今はダウンロードの意味がありません。
 
<目次に戻る>
サポートソフトウェア
Screen Receiver - 電卓画面をPCで表示するソフト
Screen Receiver はPC画面に電卓の画面を表示するだけでなく、画面イメージを画像ファイルで保存できます。fx-9750GIIIDownload Resources のページで、Support Software をクリックし、Screen Receiver がダウンロードできます。バージョンは 3.02 で、fx-9860GIIIfx-CG20 /10 用と同じバージョンで、共通して使えます。

  
<目次に戻る>
データ転送
 
PCとのリンク


標準添付の USBケーブルを使います。
USBケーブルで fx-9750GIII と PC を繋ぐと、fx-9750GIII の液晶での表示が接続モード (Connection Mode) になります。
ここで、[F1] (USB Flash :[F1]) を押すと、ポップアップウィンドウで Preparing USB と表示され、少し待つと接続完了です。

後は、エクスプローラで fx-9750GIII がドライブとして表示されるので、PC上と同じ操作でファイルのやりとりができます。 

Calc_Drive 
fx-9750GIII 内のフォルダ / ファイル はこのように表示されます。上の画像は、Ftune3C.Basic がインストールされた状態のものです。

fx-9750GIII を接続した時のドライブには最初は名前が無いので、FX-9860GIII と名前を付けました。ドライブを右クリックしてプロパティを選び、そこでドライブの名前を入力できます。

E_Drive_9750GIII 

アドインプログラムのインストールは、ドライブのルートにアドインファイルをコピーします。リンクを終了するには、Windows PCの通知領域 (タスクトレイ) で「ハードウェアを安全に取り外してメディアを取り出す」で [DEVICE の取り出し] をクリックします。外付け USBハードディスクや USBメモリの取り出しと同じ操作です。

 
<目次に戻る>
電卓同士のデータ転送

3Pinコネクタの接続ケーブル (SB-62) を使って2つの電卓を繋ぎ、接続する両方の電卓で CABLE (ケーブルの選定) で [F2] (F2:3Pin cable) を設定後、一方で TRANSMIT (送信)、他方で RECV (受信) に設定すれば、データのやりとりができます。

プログラムを含むデータのやりとりができる他のモデルは、fx-9850Gシリーズ、fx-9860Gシリーズ、fx-9860GIIシリーズ、fx-9860GIIIfx-9750GIII、そして fx-CGシリーズで、Menu に Link 項目があって、3Pin コネクタが付いている機種です。なお、fx-5800P との間でのデータ転送はできません。

詳しくは、Sofware Manual に書かれているので確認できますが、使ってみれば分かると思います。

fx-CGシリーズ から fx-9750GIII へ転送すると、ファイル形式は g3m から g1m へ自動変換され、カラーや細線設定など、fx-9750GII で未対応のコマンドは @ に自動的に置き換えられます。

 
<目次に戻る>
バックアップ

万一に備えて、電卓内部のデータをバックアップしておくことを勧めます。PCに保存フォルダを作り、PCとのリンク機能を使って電卓内のデータをPCの保存フォルダに丸ごとコピーしておきます。
Backup_Factory_State 
上は、購入時のバックアップです。そして適宜バックアップをすると良いと思います。特にチューンアップツールでオーバークロックを行う場合は、エラー発生時に電卓のリセットが必要になりプログラム、データやプログラムが失われることもあるので、バックアップしてあればこれらを簡単に戻せます。

 
<目次に戻る>
ハードウェア
 
 
液晶画面の応答性が悪い NEW!
fx-9750GIIIfx-9860GIII のモノクロ液晶の応答性が悪いと感じています。

GIII_GII_G 
左から、fx-9750GIIIfx-9860GIIfx-9860G の液晶画面

fx-9750GIII の液晶画面は、少し見づらい感じがしています。せめてバックライトがあれば視認性が向上する筈ですが、何故かバックライトの採用が見送られていて、非常に残念です。

これらのモデルでは、実験の結果から実際に液晶画面の応答性が悪いことが分かりました。
sentaro様が作成された C.Basic for FX で動作するプログラムを走らせると分かります。
※ プログラムのダウンロード:
  https://egadget2.web.fc2.com/archives/fx-9860GII/C.Basic/LCD_Test.html

  3つのプログラムを同梱しています;
  ・LCDBALL.g1m
  ・LCDGRAY.g1m
  ・LCDSCRL.g1m

LCDBALLの実行結果
  ボールが跳ね回るテストプログラム、64fps固定。


グラフィックス描画の見え方の比較です。右が一番古い fx-9860G、中央が fx-9860GII、左が一番新しい fx-9750GIII です。一番左の fx-9750GIII が最も残像が多くボールの移動が長く尾を曳くように見えます。そして一番右の fx-9860G が最も残像が少ないことが分かります。fx-9860GIIIfx-9750GIII とほぼ同様の結果になります。つまりモデルが新しくなるにつれて、液晶の応答性が悪くなっています。プログラムは 64fps で表示していますが、YouTubeにアップした動画は 30fpsなので実際の見え方を正しく再現してません。それでも残像の違いは顕著に分かります。

LCDSCRLの実行結果
 縦横スクロールで文字の見え方テストプログラム。
 一番速いのから順に128fps、64fps、32fps、16fpsとなってる。  


文字の見え方の比較です。Youtubeにアップした動画は 30fps なので、実際とはかなり違って見え、縦横スクロールでの文字の見え方の違いはとても顕著です。fx-9750GIII は残像が激しく文字が殆ど認識できない一方、fx-9860G は格段に文字を認識できます。

LCDGRAY
  4階調表示をしてみるテストプログラム。128 fps固定です。


YouTubeには 30fps でアップしているので、この画像では動きが殆ど見えません。実際は fx-9860G では動きが見えることから、一番古いモデル fx-9860G の応答性が最も高く、見やすいことが分かります。fx-9750GIII は残像が激しく、実際はちらつくだけに見えます。

撮影に用いたカメラが 30fps までなので、うまく動画をアップできませんでした。これらの古いモデルをお持ちの場合は、是非実際に試して頂きたいと思います。

fx-9750GIIIfx-9860GIII の液晶画面は、過去のモノクロモデルに比べて応答性が悪く、視野角を変えた時のコントラストの変化が大きく少し見づらいのにも関わらず、バックライトが無いという残念な仕様になっています。

<目次に戻る>
関数電卓としての機能

fx-9750GIII のハードウェアは fx-9860GIII とほぼ同じで、関数電卓としての機能も同じです。
fx-9860GIII の関数電卓としての機能 参照

[2020/05/31 追記]
fx-9750GIII には、これまでのグラフ関数電卓にない新しい機能が追加されています。
乗算記号を省略したときの優先度の扱いは、日本とアメリカや他の国では異なって教えられているようです。日本では省略した場合の優先度が高いのですが、アメリカでは省略しても × と同等の優先度だと教えていたようです。例えば、

6÷2(1+2)

は、日本では 6÷(2×(1+2)) = 1、アメリカでは 6÷2×(1+2) = 9 が正しいとされます。

これについては、面白い記事を紹介します ⇒ 関数電卓マニア - 関数電卓コラム 6÷2(1+2)?
この記事によれば、この優先度については、すでに決着がついているとのことです。しかし慣れ親しんだ優先順位は簡単に変えづらいのでしょう。アメリカ仕様の電卓を使うと、期待した計算結果にならないわけです。ならば切り替えられると良いわけです。

これまでの電卓では、乗算機能省略時の優先度はどちらかで決まっており、選択できませんでした。fx-9750GIII で初めてこの仕様を切り替えられるようになりました。

[SHIFT]-[MENU] (SETUP) で現れる設定画面の一番下の項目で、乗算記号省略時に優先度を上げる(On) か上げない(Off) かを設定できます。
Menu_Imp_Multi 

工場出荷時は、乗算省略時の優先度を高くする設定(On) になっています。
この設定の時、RUN・MAT モード(関数電卓の計算モード) で、6÷(1+2)を入力して [EXE] を押すと、括弧 ( ) が自動的に追加されて、計算結果が 1 となります。
equation Result_1 

Imp Multi を off にし、同じ計算をすると、括弧の自動追加は行われずに、結果が 9 になります。
Menu_Imp_Multi_off Result9 

この設定は、Casio Basic プログラムにも反映されます。この新機能に対応して、省略された乗算記号に優先度を On / Off する新たなコマンドも追加されています。
ImpMultiOn
ImpMultiOff 
但し、現在の設定値を返すコマンドは無いので、例えば以下のようなコードで On か Off かを判定する方法が考えられます。

4÷2(2)-4⇒"ImpMulti On":"ImpMulti Off"

If 4÷2(2)-4
Then "On"
Else "Off"
IfEnd

 
ちなみに、ヨーロッパ専用の fx-9860GIII は、6÷2(1+2) = 1 となります。他の fx-9860Gシリーズ、fx-CGシリーズ、fx-5800P も計算結果は 1 になります。

どちらにも解釈できる式を使わず、括弧 ( ) を使った表記にすれば問題はありません。
<目次に戻る>
Casio Basic の互換性

fx-9750GIII に搭載されている Casio Basic は、2006年に海外で発売された fx-9860G とそれ以降に発売されたグラフ関数電卓、そして fx-5800P に搭載さているものと同じカテゴリに属します。これらの Casio Basic は、構造化風コーディングができて意外に高機能です。当ブログでは、このカテゴリを新世代 Casio Basic と呼んでいます。

< 新世代Casio Basic搭載機 >
 - 2005年発売 fx-9860G (生産中止)
 - 2006年発売 fx-5800P
 - 2009年発売 fx-9860GII
 - 2010年発売 PRIZM fx-CG10 (北米のみ)、fx-CG20と同じ
 - 2012年発売 fx-CG20
 - 2013年発売 fx-FD10 Pro
 - 2017年発売 fx-CG50
 - 2020年発売 fx-9860GIII
 - 2020年発売 fx-9750GIII

新世代 Casio Basic については、Casio Basic の勧め を参考にしてください。

fx-9750GIII 搭載の Casio Basic は、fx-9860GIII と異なる点が見つからず、さらに fx-9860GII 搭載の Casio Basic とも完全互換と言って良いと思います。

 ⇒ fx-9860GII への移植 - 厄介な旧来の命令
 ⇒ Casio Basic 機種間の互換性

当ブログで公開している Casio Basic入門逆引きCasio BasicCasio Basicコマンドリファレンスプログラムライブラリ は、fx-5800Pfx-9860GII の違いを理解しておけば、そのまま fx-9750GIII に適用できます。
 
 
<目次に戻る>
カタログ機能

[SHIFT] [4] (GATALOG) を押すと、カタログ画面が現れます。

fx-9750GIII OS3.21fx-9860GIII OS3.21 では違いが認められません。
fx-9860GIII のカタログ機能 参照


プログラムリスト

ProgMenu 

fx-9750GIII のプログラムリストは、fx-9860GIII と変わっていません。fx-CGシリーズのように、アルファベットキーを押した時にそのアルファベットで始まるプログラム名にジャンプする機能は無く、fx-9860GII から進化していません。


<目次に戻る>
Casio Basic の処理速度

fx-9860G シリーズ用に作成したプログラムが そのまま fx-9750GIII で動作します。そこで、いくつかのプログラムの処理速度を fx-5800P、fx-9860GII、fx-CG50 と比較してみます。fx-9750GIII は g1m ファイルが動作します。

fx-9750GIII のCasio Basic 処理速度は fx-9860GIII とよりも速いという意外な結果が得られました。


 計算主体のプログラム

PRIME - 素因数分解

ダウンロード
- fx-5800P用 pdf ファイル
- fx-9860GIII / fx-9860GII 用 g1m ファイル
- fx-CG50 / fx-CG20用 g3m ファイル

※ 使い方やプログラムソースについては、fx-9860GII への移植 - 素因数分解 参照

プログラムを起動すると...

Prime_1  
数値を入力して [EXE] で素因数分解を始め、[EXE] を押しながら結果を1行ずつ表示させる。
このプログラムの実行中は、ビジーマーカー以外に表示の更新が無いので、計算速度の比較に向いています。今回は、以下の10桁の数の素因数分解の計算時間を比較します。

計算する数値: 7,849,516,203 = 32 x 9811 x 88897

fx-CG50 の画面は以下のようになります。

   Prime_2 Prime_3 

機種別処理時間の比較
fx-CG50fx-9750GIIIfx-9860GIIIfx-9860GIIfx-5800P
118 MHz59 MHz59 MHz29 MHz---
46秒61秒69秒89秒444秒
11.351.501.939.65
0.7411.111.447.16
0.670.9011.297.05
0.520.700.7818.73

fx-9950GIII の計算処理は、fx-9860GIII より 10% 程度速くなっています。
fx-9750GIII と fx-9860GIII で使っていた乾電池を交換しても、fx-9750GIII が速く、同じ結果になったので、速度の違いは電源電圧の盛況ではないことは確認しています。また、メインメモリの空き領域は双方とも 20,000バイト程度なので、メモリの影響も考得られません。上記の積分計算速度は差が無かったので、関数の処理速度に大きな差はありません。

OSバージョンは双方とも 3.21 と同じなので、fx-97500GIII が速い理由がよく分からないのが正直なところです。

  
<目次に戻る>
動きのあるテキスト出力プログラム

PYTHA - ピタゴラス数探索

ダウンロード

- fx-5800P用 pdf ファイル
- fx-9860GII用 g1m ファイル
- fx-CG50 / fx-CG20用 g3m ファイル

※ 使い方やプログラムソースについては、fx-9860GII への移植 - ピタゴラス数 を参照。

このプログラムを起動すると1つめのピタゴラス数を表示して一旦停止します 。
 [EXE] キーを長押しすると、連続的に次々とピタゴラス数が表示し続けます。
そして、500個のピタゴラス数を探索して表示するまでの時間を計って比較します。
    Pytha_1

このピタゴラス数探索プログラムは、テキスト表示が常に更新し続けます。
500個のピタゴラス数が見つかるまでの時間を、機種別に比較してみました。

機種別処理時間の比較
fx-CG50
fx-9750GIII
fx-9860GIII
fx-9860GII
fx-5800P
87秒
56.0秒57.2秒93秒
441秒
10.640.661.075.07
1.5511.021.667.88
1.520.9811.637.71
0.940.600.6214.74

fx-9750GIII は、fx-9860GIII より2%ほど速いことが分かりました。両方のモデルを並べて同時にプログラムを実行させると、何度やっても fx-9750GIII が速い結果になりますので、僅かではありますが処理速度の差はあります。
fx-9750GIII が速い原因がよく分かりません。
 
<目次に戻る>
動きのあるグラフィック出力プログラム

MONTECAR - モンテカルロ法による円周率計算

ダウンロード
- fx-9860GII用 g1m ファイル
- fx-CG50 / fx-CG20用 g3m ファイル

※ 使い方やプログラムソースについては、fx-9860GII グラフィックス - モンテカルロ法 を参照。この記事では、実際の画面の変化を動画で見られます。

 GIII_Monteca_1 GIII_Monteca_2

[EXE]
キーを押すと、ランダムに点を打ち始め、それが円内にある割合から円周率を求める、モンテカルロシミュレーションプログラムです。このプログラムは、グラフィックスの Textコマンドと Plotコマンドによる表示更新を頻繁に行うものです。そこで、Text と Plot を500回繰り返す時間を、機種別に調べて比較してみました。
機種別処理時間の比較 
fx-CG50
fx-9750GIII
fx-9860GIII
fx-9860GII
174秒87.3秒
87.5秒
135秒
10.500.500.78
1.9911.001.55
2.001.0011.54
1.20.650.651

fx-9750GIII は、fx-9860GIII より若干速いですが、ほぼ同じ結果になりました。双方を並べて同時にプログラムを実行すると、何度やっても fx-9750GIII が必ず速いことが分かりました。
fx-9750GIII が僅かでも速い理由がよく分かっていません。

 
<目次に戻る>
さらなる高速化

fx-9750GIII は、Casio Basicによる内部演算速度が速く、テキストならびにグラフィックス出力処理速度も少し速いことが分かりました。

プログラムをより高速化するには、現在のところ2つの方法があります。1つはチューンアップ (オーバークロック)ツール による高速化、もう一つはアドイン版 Casio Basic - C.Basic の利用です。

チューンアップ
これまで、fx-9860Gfx-9860GIIfx-9860GIII そして fx-CG10 PRIZM / fx-CG20 そして fx-CG50 に対応したオーバークロックツールが、sentaro様により提供されています。いずれも比較的安全性が確保されており、私も愛用しています。但しオーバークロックは、最悪ROM に記録されている内容が損傷をうけて電卓が起動できなくなってもメーカー保証を受けられないので、自己責任で利用しましょう。

fx-9750GIIIfx-9860GIII には、Ftune3 が提供されています。
 Casio グラフ関数電卓を限界までチューンアップ

当ブログでは、作者の sentaro様から直接サポートを受けられるように、以下の以下のエントリーを用意していて、そこでは Ftune3 のダウンロードと質問ができます。
グラフ関数電卓のオーバークロック - Ftune / Ptune -

安全に使う第一歩は、デフォルトの[F5]での設定を使うことです。

なお、チューンアップは、CPUコアクロックだけでなく、メモリバスクロック、I/Oバスクロック、ウェイトなどを機種に応じて調整します。
 
アドイン版 Casio Basic (C.Basic)
C.Basic は、fx-9750GIII や fx-9860GIII に加えて fx-9860Gシリーズ、そして fx-CGシリーズに対応しています。開発者はチューンアップツールと同じ sentaro様です。

C.Basic は、純正Casio Basic のソースをほぼそのまま実行可能で、特にグラフィック描画の高速化は目を見張るものがあります。
どのくらい速いかは、ここ にある動画を見れば一目瞭然です。開発開始以来、現在でも国内外のユーザーの要望に応えつつ、デバッグや機能追加によるバージョンアップが継続しています。

fx-9860G シリーズ用の C.Basic for FXfx-CGシリーズ用の C.Basic for CG が公開されており、fx-9750GIII には C.Basic for FX が対応しています。

C.Basic のトップページ

 




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


 



keywords: CasioBasicプログラム電卓、fx-CG50

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

アドイン Casio Basic - トップページ

C:Basic - アドイン Casio Basic
<Top Page>

内容の更新や修正を随時行います.

初版 2015/12/18
更新 2020/05/31



C.Basic for FX 最新版: Ver 2.45 beta build 20 [2020/05/21]
C.Basic for CG 最新版: Ver 1.45 beta build 20 [2020/05/23]


目 次
  C:Basicとは?
  最新バージョンのダウンロード
  C.Basic のインストール
  C.Basic の使い方とコマンドリファレンスなど
  チューンアップツール・アドイン
  C.BasicC:Basic の潜在能力 - サンプルプログラム
  C.Basic 英語版Webマニュアル 
[作成中]
  最近のアップデート履歴
  サポートページ
  
 C.Basic for FX はこのページでサポートします
  
 C.Basic for CG は以下のページでサポートします
   ・C.Basic for CG ベータ版公開 - Part 1

    ・
C.Basic for CG アルファ版公開 - Part 3 (旧版)
   ・
C.Basic for CG アルファ版公開 - Part 2 (旧版)
   ・
C.Basic for CG アルファ版公開 (旧版)



最近のアップデート履歴

  C.Basic for CG
  [2020/05/23] C.Basic for CG Ver 1.45 beta build 20 が差替えアップデート 
   - さらに使いやすく色々と変更していってみる版

    ⇒ 詳しくは C.Basic for CG サポートページへ

  C.Basic for FX 
  [2020/05/21] C.Basic for FX が Ver 2.45 beta build 20 にアップデート
  - さらに使いやすく色々と変更していってみる版


(build 20)
  • If [Flase] ~ ElseIf 間の飛越キャッシュの不具合を修正しました。
  • Syetem()コマンドでOSのマイナーバージョンが取得できるようになりました。
    (書式)System(-22)
  • やす(Krtyski)様作成のSystem()コマンドサンプルプログラム(Graph90+E対応版)をアップデートしました。(System_sampleフォルダ)
(build 19)
  • System(-1)での機種判定にfx-9750GIIIを追加しました。
    0:fx-9860G
    1:fx-9860G Slim
    2:fx-9860GII(SH3)
    3:fx-9860GII(SH4A)
    4:Graph35+EII(SH4A)
    5:fx-9860GIII(SH4A)
    6:fx-9750GIII(SH4A)
  • やす(Krtyski)様作成のSystem()コマンドサンプルプログラム(fx-9750GIII対応版)をアップデートしました。(System_sampleフォルダ)
  • Try~TryEndコマンドからBreakで脱出した場合、それ以後、[AC]中断もAcBreakも効かなくなる不具合を修正しました。
  • ReadGraph/WriteGraph/DotGet/DotPutコマンドを現在のVRAMに作用するように仕様変更しました。
  • 描画対象VRAMを退避されているテキストVRAM領域とグラフィックスVRAM領域に変更するScreen.Vコマンドを追加しました。
    (書式)Screen.V
     デフォルトのVRAMに戻します。
    (書式)Screen.VT
     テキストVRAMの退避領域を描画対象にします。
    (書式)Screen.VG
     グラフィックスVRAMの退避領域を描画対象にします。
(build 18)
  • エディタのカーソル位置記憶がプログラム実行終了後にリセットされていいた不具合を修正しました。(build12でのエンバグです。)
  • 行列表示を修正しました。
  • セット・アップで隠しメモリのOn/Offは確認ポップアップを出すようにしました。
(build 17)
  • プログラム開始時に?入力でアルファモードになっていた不具合を修正しました。(build16エンバグ)
  • CPLXの行列表示が異常に遅かったのを修正し、3列から4列表示に変更しました。
  • 隠しメモリの初期化を修正しました。
(build 16)
  • System(-1)での機種判定にfx-9860GIIIを追加しました。
    0:fx-9860G
    1:fx-9860G Slim
    2:fx-9860GII(SH3)
    3:fx-9860GII(SH4A)
    4:Graph35+EII(SH4A)
    5:fx-9860GIII(SH4A)
  • やす(Krtyski)様作成のSystem()コマンドサンプルプログラム(fx-9860GIII対応版)をアップデートしました。(System_sampleフォルダ)
  • 自動インデント機能でのSwitch~Case~SwitchEndの自動整形を改善しました。
  • ElseIfコマンドの直後にコメントがある場合、次のコマンドがIfの場合に終了していた不具合を修正しました。
  • 行列の初期化後に文字列から文字列への代入で代入されない不具合を再修正しました。
    (コピーされない例)
         ClrMat
      "ABC"->Str 1
      Str 1->Str 3
  • Seqコマンドで刻み値が少数の場合に終値に到達しないことがある不具合を修正しました。
    (例)Seq(X, X, 0.1, 1, 0.05 )
  • CPLXモード以外で虚数を使うと無限ループになる不具合を修正しました。(build15でのエンバグです。)
  • 省略乗算の不具合を修正しました。(build15でのエンバグです。)
(build 15)
  • Colon様のサポートにより関数メモリの実装を開始しました。
  • デフォルトのインデックス開始値が0の場合にListの自動確保が出来なかった不具合を修正しました。
  • ファンクションメモリー(Fn)のStore/Recall/SEEのSEEをEditに変更しました。
(build 14)
  • ファンクションメモリー(Fn)のStore/Recall/SEEのSEEで[F5](Edit)を追加し編集可能になりました。
  • ファンクションメモリー(Fn)のStore/Recall/SEEの不具合を修正しました。
(build 13)
  • ファンクションメモリー(Fn)およびグラフメモリー(Y)をデフォルトで数式評価とし、
     文字列関数内および文字列に続く場合は文字列として評価するように変更しました。
     (数式評価)
      fn1->A
      fn1(123)->A
      Locate 1,1,fn1
      Text 1,1,fn1(123)
     (文字列評価)
      "123"+fn1->Str 1
      fn2->Str 2
      StrJoin(fn1,Str 1)
  • 文字列から文字列への代入で代入されない不具合を修正しました。
    (fn3にコピーされない例)
      ClrMat
      "123"->fn1
      "ABC"->Str 1
      Str 1->fn3
  • ファンクションメモリー(Fn)のStore/Recall/SEEを追加しました。
     (※エディタではクリップボードの内容がストア対象です。1行入力では1行全体がストア対象になります。)
  • F_Start/F_End/F_pitchを独立変数に変更しました。
  • ?コマンドで文字列が表示される場合にアスキーコードにデコードしないように修正しました。
(build 11)
  • Screen#、Screen%を連続実行するとエラーになる不具合を修正しました。
  • Screen#、Screen%からListAnsに転送した場合の不具合を修正しました。
    (例)Screen#0,0→List Ans
  • ファイルモードの検索機能を改善しました。
     アルファベットキーを押すと検索窓が開き検索モードになります。
     検索窓では左右移動等、通常の入力が可能です。
     検索窓を解除するには[EXIT]を押してください。
     カーソル上下、[EXE] [F1](EXE) [F2](EDIT) [F3](NEW)キーは検索窓を閉じること無く実行できます。
(build 10)
  • ファイルモードでアルファベットキーによるダイレクト選択時に[SHIFT]、[ALPHA]、小文字や数字が指定が出来るようになりました。
     [F4](A<>a): 大文字小文字切り替えです。
     [F5](CHAR)
     [F5](→Folder): フォルダサーチに切り替わります。
     [DEL]: 一文字戻ります。
     [AC]: 全部消します。
     [EXIT]: 元に戻ります。
     [X^2]: ~
     [^]: '
     [(-)]: @
     [・]: スペース
     [EXP]: "
(build 09)
  • ””コマンドの実行速度が遅かった不具合を修正しました。
  • ファイルモードでアルファベットキーによるダイレクト選択時に2文字以上の指定が出来るようになりました。
     [DEL]:一文字戻ります。
     [AC]:全部消します。
  • ファンクションメモリー(Fn)およびグラフメモリー(Y)に引数が無い場合は文字列として評価するようにしました。
  • インデントの必要なコマンド(If,Else..)の直前で改行した場合にインデントが余分に付加される不具合を修正しました。
(build 06)
  • エミュレータの判定方法をハードウェアID判定に変更しました。(0x8000FFD)
(build 03)
  • ラベルの検索時にコメントでの'#に続くオプションの設定が変更されてしまう不具合を修正しました。
(build 02)
  • VarPtr()コマンドで行列/List/Vctを指定した場合、その添字が常に実数評価されていた不具合を修正しました。
  • FKeyMenuコマンドにカラー引数があってもエラーにならないように修正しました。
(build 01)
  • SortA()/SortD()コマンドに文字配列のソートを追加しました。
    (例)SortA($Mat A)
     Mat Aの文字列が昇順にソートされます。
  • ReadMe、マニュアル更新しました。
  • 行列画面で53以降の拡張領域の一覧表示をサポートしました。
    [←]:26戻ります。
    [→]:26進みます。
  • FkeyMenu(コマンドを拡張しました。
    (書式)FKeyMenu( n[~m], "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L [,アイコン色 [,アイコン背景色]]] )
     ※ "アイコン色" はデフォルトで黒い部分の色指定です。
     ※ "アイコン背景色" はデフォルトで白い部分の色指定です。
     ※ 3 番目以降の引数は省略可能です。引数を省略した場合でも”,"は必要です。
    (書式)FKeyMenu( n[~m], "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L] )
     ※ 3番目以降の引数は省略可能です。引数を省略した場合でも”,"は必要です。
     3番目のオプションは順不同です。
     C:消去します。
     M:マスク処理します。
     m:枠だけマスク処理します。
     N:ノーマル白アイコン。(省略可)
     R:右下が欠けた黒アイコン
     I:四角い黒アイコン
     S:縁取りのある黒アイコン
     U:文字列を1ドット上側に表示。
     L:表示範囲を左右2ドット広げます。
    (例)FKeyMenu (1, "string")
    (例)FKeyMenu (2~3, "longstring",R)
    (例)FKeyMenu (4~5, "longstring",I)
  • やす(Krtyski)様 & CalcLoverHK様 & Colon様作成のFKeyMenu(コマンドのサンプルプログラムを同梱しました。(C.Basic_sample\FKeyMenu_sample)
  • エディタで[SHIFT]を押したときに編集可能空きエリアのサイズをステータスエリアに表示するようにしました。
  • System()コマンドにエミュレータ判定を追加しました。
    (書式)System(-7)
     実機では0、エミュレータでは1が返ります。
  • DBL#モードにおいて、一時停止と変数表示での虚数表示がされていたのを修正しました。
  • 変数表示をINT%,DBL#,CPLXで独立させました。




C:Basic とは?


C:Basic は Casio Basic で楽にコーデイングしたものを高速動作させようというコンセプトでスタートした Casio Basic 上位互換を目指したプログラミング環境で、アドインプログラムとして提供するものです。

fx-9860G 以降で Add-in 機能のある Casio グラフ関数電卓で動作し、純正 Casio Basic プログラムとの互換動作を目指し、さらに純正コマンドの機能を拡張したり、新規コマンドを追加しています。

[2020/05/31 追記]


以前は fx-9860G や fx-9860GII の Add-in プログラムを作成するための Casio純正 SDK が提供されていましたが、これらのモデルは国内では販売中止となっているので、C言語で作成して高速動作する Add-in プログラムは過去のものになっています。2015年に開発が始まった C.Basic は 現在では Add-in プログラム並の処理能力を提供できるレベルにまで進化しています。海外の Planet Casio ではプログラミングコンテストの開発環境の1つに C.Basic が選ばれています (CPC #26 - At the limit of pysics! 参照)。


C:BasicC.Basic
C:Basic は2つの要素を含み、インタープリタ動作するものを C.Basic (ドット1つ)、コンパイラ機能によりさらに高速化するものを C:Basic (ドット2つ) と呼びます。現在は C.Basic のみを提供中、その後 C:Basic を提供予定です。
C.Basic は当初 fx-9860G および fx-9860GII で動作するものから開発が始まりましたが、最近になって 高精細カラー液晶を搭載した fx-CG10 / CG20 および fx-CG50 で動作するものも提供しています。前者の fx-9860Gシリーズ専用版を C.Basic for FX、後者の fx-CFシリーズ専用版を C.Basic for CG と呼んでいます。

C.Basic for FX は国内外でユーザーに鍛えられてきて、Ver 2.00 以降からようやく正式版としてリリースされました。
一方、C.Basic for CG はアルファ版として提供してきましたが、Ver 1.00 以降からベータ版としてリリースされました。

純正Casio Basic と C.Basic / C:Basic について
純正Casio Basic は、言語機能がシンプルで電卓に直接入力して気楽に使えるのが最大の特徴です。限られたハードウェアリソースしか持たない電卓でのプログラミング環境として、最低必要限の機能を有しています。PC上の開発言語と同じことを Casio Basic に要求するのはそもそも考え違いでしょう。

とは言っても Casio Basic は "構造化プログラミング" の考え方でプログラミング可能なので、実用的なプログラムを効率的に作成可能です。ここでいう "構造化プログラミング" は、Donald Knuth, "Structured Programming with goto statement" ACM Comuting Surveys (CSUR) Volume 6 Issue 4, Dec. 1974  (リンク) で主張されている実用的な構造化プログラミングに近いものです。教条主義に陥いることなく、とにかくプログラムソースが分かり易く、バグが出にくく、改造や機能追加が楽なコーディングの方針としてCasio Basicに適用でき有用です。当ブログでは、構造化プログラミングの考え方で、Casio Basicの使いこなしを紹介しています。
Casio Basic は楽に記述できる反面、計算量の大きな処理を行ったり、ビットマップをグラフィックスで描かせると、とても時間がかかります。C.Basic (現行インタープリタ版)は、Casio Basic とほぼソースレベル互換でありながら10~20倍のスピードで実行できます。C:Basic (将来のコンパイラ版) は、予備実験の結果、さらに C.Basic (インタープリタ) の10倍の程度の処理速度になりそうです。
C:Basic プロジェクトは、sentaro様 (本アドインの作者、海外では sentaro21)、Colon様 (システムコールなどOSの深いところまで探索し本質的なところで開発に寄与頂いている), Krtyski (開発のコミュニケーションの場を提供する当ブログの管理人、海外でも Krtyski)、さらに国内外の有志のユーザーの皆様により推進しています。

  ⇒ C:Basic プロジェクト


▋ C.Basic 最新バージョンのダウンロード

 ▶ C.Basic for FX (fx-9860Gシリーズ用ベータ版)
  ⇒ C.Basic for FX Ver 2.45 beta build 20 (公式最新版)
  C.Basic for FX Ver 2.44 beta build 16 (1つ前の公式最新版)
   ・ C.Basic for FX の入手 (少し前のバージョンも入手できます)

 ▶
C.Basic for CG (fx-CGシリーズ用アルファバージョン)
  ⇒ C.Basic for CG Ver 1.45 beta build 20 (公式最新版)
  ⇒ C.Basic for CG Ver 1.44 beta build 16
 (1つ前の公式最新版)
   ・C.Basic for CG の入手 (少し前のバージョンも入手できます)

注意: 万一に備えて、電卓内のプログラムやデータをバックアップしておくことを勧めます。



C.Basicのインストール

  C.Basic for FX
ダウンロードしたZIPファイルに含まれている CBASIC.g1a を fx-9860G シリーズ、fx-9750GIII、Graph35+EII のストレージメモリに転送します。転送には PCリンクソフト FA-124を用い、電卓とPCをUSBケーブルで接続します。併せてFontフォルダと FontEditフォルダをストレージメモリに転送し、HELPフォルダにある ~~HELP1.g1m をストレージメモリに転送します。
  C.Basic for CG
ダウンロードしたZIPファイルに含まれている CBCGxxx.g3a (xxxはバージョンを示す) を fx-CGシリーズ、Graph90+E のストレージメモリに転送します。転送には、USBケーブルで接続し Windows標準のエクスプローラでファイルやフォルダを操作します。併せて@FontフォルダとFontEditフォルダをストレージメモリに転送し、HELPフォルダにある ~~HELP1.h1m と ~~HELP3.g3m をストレージメモリいに転送します。

 詳しくは、C.Basicのインストール を参照。



C.Basicの使い方とコマンドリファレンスなど [最新バージョンに対応しています]

C.Basic for FX

C.Basic for CG
これらのドキュメントは、ダウンロードしたZIPファイルに含まれているものです。



 チューンアップツール - アドイン

電卓内部のクロックを調整して高速動作させるチューンアップツールを C.Basic と一緒に使うと、さらに高速化が可能です。
このプログラムの評判については、下記参照ください;
- @ Unversal Casio Forum
- @ CEMETECH
- @ TI-Planet

管理人は2年以上使っていますが、今のところ問題は起きていません。安全対策がよく考えられていて、おそらく電卓を壊すことは無いでしょう。但し、念のため電卓のデータバックアップは行って下さい。

機種毎に用意されています。

- fx-9860G、fx-9860GII USB POWER GRAPHIC(前期バージョン SH3採用品): Ftune
- fx-9860GII USB POWER GRAPHIC 2(後期初期 SH4採用品): Ftune2
- fx-9860GIII、fx-9750GIII、Graph35+EIIFtune3
- fx-CG10 / CG20: Ptune2
- fx-CG50、Graph90+E: Ptune3


※    違う機種のものを利用しないよう注意してください。

充電池のご紹介
チューンアップすると消費電力が大幅に増えて、1日で電池が空になることもあります。そこで充電池が経済的です。カシオのグラフ関数電卓は、単4アルカリ電池(1.5V) と 単4ニッケル水素充電池(1.2V) が使える。そこでニッケル水素充電池と充電器のお勧めをまとめました。⇒ こちら



C.Basic と C:Basic の潜在能力 - サンプルプログラム

サンプルプログラムを使って、C.BasicC:Basic の潜在能力を見てみましょう。.

ライフゲーム (Conway's Game of Life) - 高速グラフィック描画

C.Basic は純正 Casio Basic の上位互換であり、拡張コマンドや言語機能があります。

高速なビットマッププログラムを純正Casio Basic で作ろうと考えるのは無謀なことだと言えます。しかし C.Basic を使えば、例えばライフゲームを楽しめます。



- ダウンロード: ライフゲーム Ver 0.74

これには、C.Basic Ver 0.63 以降のバージョンが必要です。.


以下の動画では、Ftune2 を使って クロックを 236MHz にチューンしています。
.
=====

コンパイラ版の C:Basic をシミュレートするため、ライフゲーム の繰り返し処理部分を、ネイティブコードの特別なコマンド "DotLife" に置き換えて実行したのが以下の動画です。 

・ダウンロード: ライフゲーム Ver 0.84



ご覧のように非常に高速で、517世代までの時間を測ると約10倍高速化しています。将来のコンパイラ版 C:Basic では、これよりも速くなるはずです。

ライフゲームの詳しい説明


2D迷路

以下のような画面全体のグラフィックス描画は、純正Casio Basicではとても時間がかかります。これを C.Basic で走らせると極めて短時間で描画が完了します。

Maze1 

2D迷路プログラムの詳しい説明とダウンロード


3D迷路ゲーム

3D_Maze 

左側の迷路マップの描画は、C.Basic を使うことで極めて高速化できます。右側の3D表示はポリライン処理により純正Casio Basic でも3D描画が軽くなるよう工夫されています。このプログラムでは、C.Basic の独自拡張機能を使いながら 純正 Casio Basicでも動作可能なようになっているのが特徴です。

3D迷路ゲームの詳しい説明とダウンロード


アクションゲーム - DRAGON



これは、C.Basic 独自拡張機能を活用したサンプルプログラムで、高速で多彩なビットマップ処理機能をうまく活用しています。
ゲームとしても飽きないチューニングがされています。このプログラムのソースは、C.Basic 独自拡張機能の理解に役立ちます。

アクションゲーム - DRAGON の詳しい説明とダウンロード


シューティングゲーム - AlienCG

AlianCG1.png AlianCG3.png 

C.Basic の独自コマンドを使い、高精細カラー液晶を活かして、全画面表示、独自フォント、高速グラフィック描画が可能になる例です。
シューティングゲーム - AlienCG のダウンロード


疑似3Dゲーム - Triangle Fieled Ver 0.91 [2020/03/26 アップデート]

TriangleField-FirstScreen 
Planet Casio でのプログラムコンテスト CPC #26 において、アドイン作成用の C / C++ に加えて C.Basic も使用言語として認められた。そこで sentaro様が応募作品として発表したのが Triangle Field。fx-CGシリーズ用が本命だが、参考までに fx-9860Gシリーズ用にも作成された(液晶の応答性が低いのでゲームとしては難易度が高い)。
なお、類似のアドインゲーム CubeFiled があるが、アドインレベルのプログラムが C.Basic で提供できることを示している。
疑似3Dゲーム - Triangle Field のダウンロード


カラー表示確認ツール - RGB

RGB5a_CC2.png RGB5a_QH.png 

C.Basic の独自コマンドを使い、高精細カラー液晶を活かして、全画面表示、バッテリーモニタアイコン表示、16bit RGBカラー表示 (テキストとグラフィックス)、テキストのスクロール表示、QRコード表示が可能になる例です。但し、fx-CG50搭載のカラー液晶は見る角度で色合いが異なって見える廉価版液晶であり、さらに24bit(フル)カラーではなくて16bitカラー表示なので、設定したRGB値に対して実際の液晶上のカラー表示を確認するためのツールです。 
カラー表示確認ツール - RGB の詳しい説明とダウンロード


日本語表示プログラム - YearConv

YC_cb4f YC_cb9f 

fx-CGシリーズ内蔵の GBフォントを用いて日本語風表示を可能にする例です。エディタ画面ではミニフォントが使えてソースコードの視認性が向上し、ソースコードで漢字フォントを表示してプログラミングできる例でもあります。
日本語表示プログラム - Year Conv の説明とダウンロード







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


 


 


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

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



関連記事

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

Casio Basic の勧め

.
更新 2020年5月31日

Casio Basic は、最近の カシオ 製プログラム電卓(プログラム関数電卓やグラフ関数電卓)に搭載されているプログラミング言語で、意外に高機能なので実用的なプログラムが作れます。科学技術計算目的以外にも実用的なプログラムを作れます。私自身、技術計算以外のために作った自作プログラムをほぼ毎日使い、技術計算プログラムはたまに使う程度です。

カシオのプログラム電卓で新世代 Casio Basic を勧めたくなるには、幾つかの理由があります。
例えば、コマンド体系がシンプルなためプログラミングは敷居が低く、初心者にも覚えやすいこと、プログラミング経験者はスグに使えること、Casio Basic が意外に構造化プログラミング風のコーディングが可能な高機能言語であることなどが、その理由に挙げられます。


目 次
  1. プログラミングは特殊技能なのか?
  2. 新世代 Casio Basic とは?
  3. Casio Basic 搭載機種の選定
  4. Casio Basic の習得は容易
  5. fx-5800P の勧め
  6. Casio Basic を勧める背景
  7. fx-5800P の利点と弱点
  8. Casio Basic の使いこなし


プログラミングは特殊技能なのか?

プログラミングは、理系や文系、男女差、年齢や経験などとは無関係に習得可能なことはよく知られており、IT企業ではごく普通に文系出身のSEやプログラマが活躍しています。特に Casio Basic は覚えることが少なく、簡単なので、誰でも電卓プログラミングが出来ると思います。
なお、最先端でクリエイティブなプログラミングには数学(論理学含む)が得意であることは必須だと思いますが、それは別の世界の話であって、プログラム電卓でプログラムを書くには殆ど関係ありません。

参考:
<トップへ戻る>

新世代 Casio Basic とは? [2020/05/30 更新]

実際にCasio Basic を使いながら、取扱説明書には記載のない機能や仕様が分かってくると、以下に挙げる機種に搭載されている Casio Basic が意外によくできていることが明かになってきました。

1) fx-5800P                            (プログラム関数電卓)
2) fx-9860Gシリーズ
                (グラフ関数電卓)
3) fx-9860GIIシリーズ             (グラフ関数電卓)
4) fx-CG10
/CG20/CG50 
      (カラーグラフ関数電卓)
5) fx-FD10
pro                        (プログラム関数電卓 - 土木測量向け)
6) fx-9860GIII
                       (グラフ関数電卓)
7) fx-9750GIII
                       (グラフ関数電卓) 

これらに搭載されている言語は、私は 新世代 Casio Basic と呼び、CFX-9850G で初めて搭載された Casio Basic とは区別しています。

新世代 Casio Basic は、上から下へ処理が流れるようなブロック構造のコードが書けます。Getkey コマンドと Locate コマンドがあるため、スクロールを抑えて1画面で自由に入出力できるプログラムが作れます。また、条件判定は基本的に 0 で偽、0 以外で真としてコーディングできます。引数と戻り値のある関数/プロシージャをユーザーが作ることが仕様上できないので、厳密な意味での構造化Basicとは言えません。そこで 新世代Casio Basic は、構造化言語と敢えて言います。
  • Getkey[AC] キー以外の全てのキーに異なるキーコードが割り当てられ、押したキーをリアルタイムで判定できるコマンド。
  • Locate: パラメータに、即値以外に変数、式、コマンドを指定して位置を柔軟に指定して出力するコマンド。
  • 条件判定を 0 で偽、0 以外で真とできること
  • ブロック構造のコーディングGoto に頼らずにプログラムの制御を記述し、可読性の高いブロック構造でプログラミングする方法。
実は、仕様上厳密な意味で 構造化Casio Basic は既に fx-CP400 や fx-CG500 に搭載されています。これらを使えばスグに分かるのが、処理速度が極めて遅い上、代表的な問題点として If ブロックから Goto で脱出できない(動作が保証されていない)、3項演算子が無いなどの中途半端な実装により、効率の悪いコーディングを強要されるので冗長なコーディングが必要になり、さらに処理速度がかかる、といった問題があります。これに対して構造化Casio Baisc は、よく作り込まれていることが分かります。

プログラミング経験者(特にPCでのプログラミング経験者)なら、新世代 Casio Basic は違和感なく使えます。

旧来の命令
新世代 Casio Basic には、以前のプログラム電卓に搭載されていた旧来の命令も搭載されています。カシオによれは従来のユーザーの利便性を考慮して旧来の命令を残しているとのことです。最近、この旧来の命令を使いこなして、どの程度のプログラムを作れるのか色々と試して、それを反映させたエントリーを Casio Basic入門38から連載を始めています。使いこなしを検討してみると、確かに一定レベルの実用プログラムを比較的楽に作れることが分かります。

旧来の命令は表記はシンプルでも、多彩な機能を持っています。プログラミング経験の少ない人でも簡単に使えて便利です。しかし、旧来の命令が機能が多彩であることが、逆にプログラミングの自由度を減らしているとも言えます。この旧来の命令では実現できないプログラムを作るには、Basicコマンドを積極的に使えばよいのです。旧来の多彩な命令と Basic コマンドを併せて使いこなすことで、自由度が高く、実用的なプログラミングが可能になります。

<トップへ戻る>

Casio Basic 搭載機種の選定

[2020/05/30 更新]
上でリストアアップした新世代 Casio Basic を搭載した機種にはは、既に国内で販売中止になった機種と国内では発売されず海外でのみ発売されている機種を含んでいます。現時点で国内での購入に限定すれば、fx-5800P と fx-CG50 のどちらかを選ぶことになります。

但し、セカイモンやAmazon USAなどのネット通販を利用すれば、日本に居ながら海外から購入できますので、管理人はよく利用しています。fx-CG50については、並行輸入品を国内通販で購入するか、海外から直接購入すると、半額近い価格で入手できます。最近の例でいえば、アメリカ専用モデルのモノクログラフ関数電卓 fx-9750GIII が fx-5800P とほぼ同じ価格(千円程度の違い)で入手できます。そこで上でリストアップした機種は、日本で入手可能なものという前提で、機種選定について説明しようと思います。

プログラム関数電卓 fx-5800P は最も小型軽量で、最も安価、そして関数電卓としても使いやすく、ハードウェアとソフトウェアのバランスが良いので、実用に適しており推奨機種の1つです。グラフ機能はありませんが、プログラムを実用的に使うには十分な能力があります。

グラフ関数電卓はデータや数式から様々なグラフを描画できますが、主に教育用に設計されているので、実用には fx-5800P ほど向いていないと感じています。しかしグラフ関数電卓は fx-5800P に比べてCPUパワーが遙かに高いので、Casio Basic プログラムの処理能力が高く、プログラミングを楽しむにはお勧めです。なおグラフ関数電卓には、モノクロ液晶を搭載した機種と高精細度のカラー液晶を搭載した機種があります。日本国内では、fx-9860G と fx-9860GII は既に販売されておらず、高精細カラー液晶を搭載した fx-CG20 と fx-CG50 のみが発売されています。従って、グラフ関数電卓を購入する場合は fx-CG50 を推奨します。

但し、モノクロ液晶で良いならば、現在発売されている機種ならば、fx-5800P か fx-9750GIII (Amazon USA) の二択だと思います。仮に中古機を含めるならば、fx-9860G Slim が管理人の一押しです。

Casio Basic の機能は、fx-9860G に OS2.00 以降を導入したもの以降の全ての機種がほぼ同じで、互換性があります。fx-CGシリーズは高精細カラー液晶に特化したコマンドが追加されていますが、モノクロのグラフ関数電卓の Casio Basicプログラムはそのまま動作します。

各機種の概要を以下の記事でまとめていますので、参考にしてください。

fx-CG50: fx-CG50 の概要
fx-CG20: fx-CG20 の概要
fx-9860GIII: fx-9860GIII の概要
 fx-9750GIII: fx-9750GIII の概要
 fx-9860G Slim: fx-9850G Slim の勧め


 fx-9860GII: fx-9860GII USB POWER GRAPHIC 2
 fx-5800P: 本記事は主に fx-5800Pの勧め になっています

 Casio Basic - 機種間の互換性
 Casio プログラム電卓の価格動向


fx-5800P 以外のグラフ関数電卓の Casio Basicには、グラフィックス機能があり、高機能ですが fx-5800P よりも高価です。これらの中で安価な fx-9750GIII は、fx-5800P と価格差が極めて少な点が魅力です。

[2020/05/31 更新]
国内で既に販売中止になっている fx-9860G や fx-9860GII は Casio純正の開発環境 - Casio SDK を使えば、パソコン上で C言語を使ってプログラムを作り、それを電卓に転送して Add-in プログラムとして利用できます。C言語で作った Add-in プログラムは、Casio Basicに比べてかなり高速動作し、Casio Basic では無理な処理も可能です。しかしこれらのモデルはもはや販売されていません。その代わりに C.Basic を推奨します。C.Basic は純正Casio Basic の上位互換を目指しつつ、多くの独自コマンドにより Cプログラミングに近いコーディングが可能で、Cで作った Add-inプログラム並の高速処理が可能です。C.Basic は fx-9860G 以降の Add-in プログラムを使えるグラフ関数電卓があれば、もはや Casio SDK は不要です。C.Basic を使うモデルとしては、個人的には fx-9750GIII か fx-CG50 を勧めます。

fx-5800P
グラフィックス機能の無い fx-5800Pは、処理速度が相対的に低いものの、価格が圧倒的に安く(実売6~7千円程度)、関数電卓としてもプログラム電卓としてもバランスが取れた使いやすい機種です。

fx-5800P には プログラムリストを 通常の電卓モード (Comp モード) で呼び出して使えますが、グラフ関数電卓ではプログラムリストを表示するには一旦プログラムモードに入る必要があります。Casio Basicで作ったプログラムを日常的に使う場合は fx-5800P の方が利便性が高いことは、使ってみて分かります。fx-5800P と グラフ関数電卓を実際に使い比べてみると、日常使いには、バランスの良い fx-5800P が優れていると思います。

fx-9750GIII
プログラムの高速性やグラフィックス処理を重要と考えるなら、fx-9750GIII も選択肢に入れるべきです。もし使いたい Add-in プログラムがあれば fx-9750GIIIを推奨します。このモデルは北米専用モデルで国内販売されていませんが、Amazon USA や セカイモンを利用して7千円台(少なくとも1万円未満)で入手できます。有用な Add-In プログラムの1つとして、当ブログで紹介しているあCアドイン版 Casio Basic (Casio Basic の上位互換) は fx-9750GIII のアドインとしても使え、Casio Basicプログラムが極めて高速に実行できるだけでなく、多くの独自コマンドで Casio Basicでできない処理ができます。C.Basic が使いたいなら fx-9750GIII がお勧めと言えます。

fx-FD10 Pro
fx-FD10 Pro は、屋外使用を想定した堅牢な作りが特徴です。私自身が実機を持っていないので、取扱説明書から得られる内容から判断すると、上記の fx-5800P の使いやすさを備えていますが、実売2万円程度と高価で、さらに Add-in プログラムが使えません。堅牢な作りが必要ならば選択肢に含めるべきでしょう。そうでなければ、fx-5800P か fx-9750GIII を推奨します。

fx-CG50
fx-CG50 は、高精細度カラー液晶が特徴で、内蔵の関数計算も高速化されています。表現力の優れた高精細カラー液晶が必要だと考えるなら fx-CG50 を選択すべきです。 
 
<トップへ戻る>

Casio Basic の習得は容易

過去にPCでプログラミング経験があれば、Casio Basic はスグに使えると思います。私自身も過去にPCでのプログラミング経験があり、fx-5800P を買ってすぐにプログラミングができました。但し細かなところは取扱説明書に書かれていないので、自分で色々と調べました。その結果が当ブログです。

プログラミング経験があれは、当ブログの「Casio Basic コマンドリファレンス」、「Casio Basic入門」、「逆引き Casio Basic」を参考にすれば、すぐに使いこなせると思います。[2017/01/03 追記修正]

これからプログラミングをやってみようと思われる方の場合、新世代 Casio Basic を覚えることはPCで使う Basic 習得に有効だと思います。上で紹介した機種の中で特に fx-5800P は、ハードウェア的には最も非力ですが、最も安価で入手しやすく、さらに使いやすいので、学習用に向いています。僭越ながら、当ブログの Casio Basic 入門をほぼ理解できれば、Visual Basic の習得の敷居はかなり下がると思います。

Casio Basic のコマンドは、殆どが他のBasic と同じなので、覚えたことが将来無駄になりません。さらに必要最小限度の機能まで絞り込まれているので、覚えることが少いことが初心者向きの理由です。この点をもう少し説明してみます。

一般にプログラムを作る際、実現したい機能には無数の方法があります。無数の方法から適切な方法を選び出すことが、プログラミングの主な作業になるのですが、それは初級者には逆に習得の妨げとなります。Casio Basic は機能が少ないので、選択肢が限られます。従って、プログラミングの方法の選択で悩むことなく、必要なことを覚えやすいと言えます。色々なプログラムを作れば、効果的な反復学習になるわけです。

またコマンドが絞り込まれているので、アルゴリズムの工夫や計算式の応用で対応することになり、これも学習に向いていると考える理由の1つです。

機能が限定されていても、実用的なプログラムやゲームが作れることは、当ブログで紹介しています。実際にこれらのプログラムを作りながら、新世代 Casio Basic の良さに気付いたのです。実際に使ってみないと分からないものです。

<トップへ戻る>

fx-5800P の勧め

電卓でプログラミングを始めてみようと思う方には、私は fx-5800P を勧めます。

1.関数電卓としての fx-5800P
fx-5800Pは、関数電卓として見た場合、十分な機能を実現しています。プログラム機能の無い fx-995ES とほぼ同等の機能と操作性が有り、fx-5800P は高機能関数電卓と位置づけられます。カシオの関数電卓は電源を切ると、計算履歴もメモリの内容も全て消去されます。一方 fx-5800P は電源を切っても全てメモリに保存されたままです。これが関数電卓として fx-5800P を推奨する最大の理由です。

2.携帯型コンピュータとしての fx-5800P
携帯型コンピュータとして見た場合、手軽に実用プログラムを作れるので、パソコンでは真似のできない圧倒的な携帯性が最大の利点です。搭載されている Casio Basic は、ちょっとしたアクションゲームも作れます。実際に、fx-5800P のハードウェアの能力と Casio Basic の機能を確かめる目的で、「もぐら叩き」を作ってみました。結構遊べることが分ったので、冒頭で 『意外に良くできている』 と書きました。

3.Casio Basic
fx-5800Pに搭載されているCasio Basicは、グラフ関数電卓 fx-9860GII や fx-CG20 さらに 土木測量向けプログラム電卓 fx-FD10 pro に搭載されている Casio Basic と比べて、グラフィック機能や文字列処理、外部との通信機能を使うコマンドが省略されていますが、それ以外の機能は同じです。そして、fx-5800Pで作った Caso Basic プログラムは、上位機種への移植性が高いことは確認済みです。

<トップへ戻る>

Casio Basic を勧める背景

新世代 Casio Basic 搭載のプログラム電卓を勧めるには、いくつかの背景があります。

1. パソコンと同様な機能を求めない
パソコンでできることはパソコンでやれば良い。それをわざわざ電卓でプログラムを作る必要はありません。


2. サッと取り出し、パッと使える
必要な場所で、必要なタイミングで、上着やかばんのポケットからサッと出して、スグ使うのはパソコンでは絶対に出来ません。プログラムを作るだけで自分専用のオリジナル関数電卓が手に入ります。今や電卓は誰でも1台は持っている文房具です。プログラムを書くことで自分専用の機能にカスタマイズした文房具が手に入ります。


3. プログラムを簡単に作れる
ゲーム繰返し技術計算金融計算その他お金の計算単位や年月の換算時差計算 など作っておくと便利なプログラムが多くあります。自分に必要なプログラムを予め作っておくと、プログラム電卓のメリットは絶大です。

関数電卓の各種関数キーが[SHIFT]キーなどと併用しないと使えない(裏機能などと言われます)のは、2ステップキータッチが必要で効率が悪いとの評価基準があります(関数電卓マニアの部屋)。学生への関数電卓選びのガイダンスとしては、教育的配慮を斟酌すれば、私も100%同意するところです。しかし、この主張を金科玉条の如く受け売りする気になれないのも正直なところです。

実際に何度もキーを叩いて繰り返し計算を行う際には、プログラムを作ったり、数式記憶機能を使えば良いわけです。

道具は相応しい目的で正しく使えば良い。幸なことにfxー5800Pは、今や新品でも6000円程度で買えるので、2000円から3000円で関数電卓を買う変わりに、プログラム関数電卓を買うメリットを十分に感じる人は非常に多く居るはずです。ここでは、簡単なプログラミング・スキルがあれば良く、幸いなことにBasicを搭載しています。


4. 上位機へのプログラム互換性
高価で高機能なグラフ関数電卓や土木測量専業電卓への移植性が高いことは重要です。

fx-5800Pのハードウェア仕様に依存した部分を除けば、互換性、移植性が高いので、1からプログラムを作り直す手間はありません。上位機種を入手して、そこへfx-5800P のプログラムを容易に移植できるのは、Casio Basicの大きな利点です。

なお、カシオのグラフ電卓には、C、Lua、Python といった言語の開発環境(公式や非公式を含む)もあり、Casio Basic のプログラムを移植せずに別の言語でプログラミングする選択肢もあります。

fx-5800P の Casio Basicプログラムの fx-9860GII や fx-CG20 への移植をいくつか行いましたが、機種のハードウェアに依存するコマンド (GetkeyLocate)、旧来の命令 (出力命令 ◢ 、" "、入力命令 ? など) の動作の違いに適切に対処し、配列変数を行列やリストに置き換えれば、他の Basic コマンド類は互換性があります。


5. グラフ機能の優先度は低い
パソコンでできることはパソコンを利用する...と考えれば、プログラム電卓にグラフ機能は必ずしも必要ではないと思います。グラフィックスを利用したプログラムを電卓で使いたい場合は fx-CG50 のようなグラフ関数電卓を利用でき、Windows プログラミングよりは Casio Basic の方がプログラミングは遙かに楽です。

ゲームではなく、実用面からグラフ描画機能が欲しいと言う場合もあるでしょう。例えば、実験をしながらグラフを書くのは大変重要なことです。しかしそのために、プログラム電卓でわざわざプログラムを書く必要はあるでしょうか?
パソコンでエクセルを使えば、簡単にグラフを書けます。報告書、レポート、論文を書くのに最近ではエクセルのグラフが普通に使われているわけで、それなら最初からエクセルを使えば良いと思います。

私は、実用を強く意識して fx-5800P を使っていますが、グラフ機能がことさら必要だと思うことは殆どありません。本当に必要なら fx-CG40 などのグラフ関数電卓で、ブラフ表示をプログラミング可能です。しかし、正直に言えば グラフ機能の無い fx-5800P で十分に実用的なプログラムを作って、利用できます。

敢えて言えば、適材適所でしょう。そして Casio Basic 搭載機のなかでも fx-5800P は、プログラム利用の利便性が高く、小型軽量で、グラフ関数電卓よりもプログラム入力が格段に楽で、電池の持ちも長く、ハードウェアとソフトウェアのバランスが良いことは間違いありません。処理速度の遅い fx-5800P でも工夫次第で実用プログラムを作成できるので、プログラミング自体も楽しくなってきます。当ブログでは、その工夫について多く取り上げています。


6. 最も簡単にプログラミングできる携帯機器
Casio Basicを使うのなら、電卓本体のみでプログラミングできるので、いつでもどこでもプログラムを作れます。そして自分だけの付加機能を、恐らく最も簡単に追加できる携帯機器がプログラム電卓です。オリジナルプログラムを作りそれを使う楽しみと利便性があります。

<トップへ戻る>

fx-5800P の利点と弱点

fx-5800P は、新世代Casio Basic を搭載している点に最大の価値があり、同時に関数電卓としても使いやすい点が評価できます。関数電卓としてみた場合は、グラフ関数電卓 fx-9860GII よりも fx-5800P の方が必要な機能へのアクセスが速いので、使いやすいでしょう。しかもプログラミング時のコマンドや関数をメニューから探しやすいなどの使いやすさの点でも fx-5800P が優れています。

fx-5800P のもう1つの利点は価格で、他の機種に比べて圧倒的に安価です。

fx-5800P は、非常にバランスの良い製品と言えます。

fx-5800P に対する唯一にして最大の弱点は、プログラムコードのバックアップややりとりをパソコンとの間で行えるPCリンク機能が用意されていない点にあります。少なくとも fx-5800P 同志のプログラムデータのやりとりはできるので、外付けの3Pin - USB アダプタと対応ソフトウェアを発売して頂ければ実現するはずです。カシオ製でなく、サードパーティーでも良いのです。

PCとリンクしてプログラムを転送する機能の実現は、是非ともお願いしたい。

私の場合は仕事などで実用プログラムを作って、毎日のように使っていますので、電子データのバックアップ機能がどうしても欲しくなり、2台目の fx-5800p と専用通信ケーブル (SB-62)を購入しバックアップしています。なお、グラフ関数電卓を購入すれは、通信ケーブル(SB-62)は付属しているので、fx-5800P のために新たに購入する必要はありません。

[2017/08/18 追記] 最近はグラフ関数電卓に 3Pin ケーブルが付属していません。別途購入する必要があります。

[2017/09/28 追記] 2017年10月から国内販売される fx-CG50 には 3Pinケーブルが付属します。

[2018/02/26 追記] ついに fx-5800P のPCリンクが可能になりました ⇒ こちらの記事


<トップへ戻る>

Casio Basic の使いこなし

fx-5800P 搭載の Casio Basic は、使いこなしてみて初めてその価値が分かると思います。PCで一定以上のプログラミング経験があれば、この新世代 Casio Basicが 非常に使いやすく、効率的な制御構造を作れる点がすぐに分かると思います。カシオ自身がこの Casio Basic に関する情報発信を殆ど行っていないので、当ブログでは Casio Basic の使いこなしについて、異なる3つの切り口で紹介しています。

CasioBasic入門 / 目次
じっくりと読みながらプログラムを入力して Casio Basicの使いこなしやプログラムの作り方を修得する。題材のプログラムは、ある程度の完成度があり、実用的に使えるレベルになっている(と思う...)。

CasioBasic コマンドリファレンス 目次
Casio Basic のコマンドや命令を、出来るだけ詳しく調べた結果に基づいて解説している(抜けが無いことを祈るばかり...)。

逆引き Casio Basic 目次
Casio Basic で何か実現したいこと、やりたいことに対して、ピンポイントで実現方法、サンプルプログラム、考え方を紹介している(思いついたことから順次拡充中...)。

<トップへ戻る>



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


 


keywords: fx-5800PCasioBasicプログラム関数電卓

リンク集 | ブログ内マップ
関連記事

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

fx-5800P【ゲーム】:もぐら叩き~まとめ~

fx-5800Pでもぐら叩き
e-Gadget


fx-5800P で作る「もぐら叩き」ゲームのまとめ
コード修正 2014/03/20
fx-FD10 proに関する記述追加 2014/09/28
コード誤記修正 2016/05/12
  fx-CG20 に関する記述修正 2017/01/04
fx-CG50 に関する記述追加 2017/07/24
追記 2017/08/06
追記 2020/05/30



普通のプログラム作成の記事と異なり、多少冗長な内容になっており、(1)~(8)で、徐々にプログラムを作ってゆく様子を複数の記事で紹介した。


最終的なプログラムは、本ページの一番下に掲載した。またこれを一部改善したもの、および各機種へ移植したものを プログラムライブラリに収録している。[2017/08/06 追記]

プログラムライブラリ - もぐら叩き (fx-5800P)
プログラムライブラリ - もぐら叩き (fx-9860GII)
プログラムライブラリ - もぐら叩き (fx-CG20 / fx-CG50)


以下の記事は作りながら書いているので、プログラミング本のように最終形を想定した進め方になっていない。途中でロジックの変更や、バグ対策や、変数の変更など、実際にどうやって完成させたかをそのまま書いている (fx-5800P版)。

fx-5800P【ゲーム】:もぐら叩き(1)

fx-5800P【ゲーム】:もぐら叩き(2)

fx-5800P【ゲーム】:もぐら叩き(3)

fx-5800P【ゲーム】:もぐら叩き(4)

fx-5800P【ゲーム】:もぐら叩き(5)

fx-5800P【ゲーム】:もぐら叩き(6)

fx-5800P【ゲーム】:もぐら叩き(7)

fx-5800P【ゲーム】:もぐら叩き(8)


fx-5800P に搭載されているプログラミング言語は、Casio Basic というカシオの味付けをした BASIC言語 だ。

特に、もぐら叩きのようなゲームを作る際に特に重要かつ必要なものは、以下の機能だろう。
1) 広い表示画面
2) Getkeyコマンドによる、リアルタイムキー入力監視機能
3) Locateコマンドによる、柔軟な表示機能
4) 真 (0以外) と 偽 (0) による条件判定


さらに、昔のプログラム電卓に搭載されていた BASIC と異なり、構造化プログラミングの考えでコーディング可能な点も特筆できる。昔のプログラム電卓やポケコンに搭載されていた BASIC は行番号と GOTO コマンドでプログラムの流れを作っていたが、現在の Casio Basic は Goto コマンドを使わずに制御構造を作れるので、上から下へのシンプルな直線構造のコードの中に、1まとまりの処理ブロック1本に繋げる、いわゆるブロック構造にできるので、分かりやすくバグの入りにくいコードが書けるようになっている。

これらの機能が、fx-5800P を魅力的にしている。


CASIOの電卓の中で、上記を満たすプログラミング言語を搭載されているのは、下記のモデルだ。

・fx-9860Gシリーズ: グラフ関数電卓(生産終了)
 取扱説明書

・fx-9860G IIシリーズ: グラフ関数電卓(生産終了)
 メーカーサイト / 取扱説明書

・fx-9860GIII: グラフ関数電卓 (現行品、ヨーロッパ専用モデル)
 メーカーサイト / 取扱説明書

・fx-9750GIII: グラフ関数電卓 (現行品、北米専用モデル)
 メーカーサイト / 取扱説明書

・fx-CG20 / fx-CG10: カラーグラフ関数電卓(生産終了)
 メーカーサイト / 取扱説明書

・fx-FD10 pro:土木測量向けプログラム関数電卓 (現行品)
 メーカーサイト / 取扱説明書

・fx-CG50:カラーグラフ関数電卓 (現行品 - 2017/10/20 国内発売)
 メーカーサイト / 取扱説明書

・fx-5800P: プログラム関数電卓(現行品)
 メーカーサイト / 取扱説明書


fx-FD10 pro fx-FD10 pro < fx-9860GII版もぐら叩き >


fx-CG50 noce photo fx-CG50 < fx-CG50版もぐら叩きのダウンロード


fx-9860GII  fx-9860G II  fx-9860GII版もぐら叩きのダウンロード >


               fx9860GIII             fx-9860GIII  < fx-9860GIII版もぐら叩きのダウンロード


               fx-9750GIII_large             fx-9750GIII   < fx-9750GIII版もぐら叩きのダウンロード


fx-CG20  fx-CG20 fx-CG20版もぐら叩きのダウンロード >


    fx5800P_calc         fx-5800P <fx-5800P版モグラ叩き - ダウンロードも可 > 


各機種の画像の右に、対応する「もぐら叩き」プログラムのダウンロードリンクを示している。ダウンロードして転送するだけで楽しめる (fx-5800P は CcLinker を使ってダウンロードしたプログラムファイルを転送できる) ので、先ずは遊んでみてください。

完全互換でないのには理由がある。電卓の機種が異なると、ハードウェアの違いからキー配置が異なる。従って、Getkeyで得られるキーコードが異なるため、ソースレベルでの互換性は無い。これを除けば fx-5800Pのプログラムからの移植性は比較的高いと(旧来の命令の互換性については、少し注意が必要だ⇒こちらを参照)。

fx-5800P、fx-9860Gシリーズ (さらにOS載せ替えしたfx-9750Gシリーズ)、fx-CGシリーズ以外ではこのゲームは走らない。例えば、fx-72F、fx-71F 、fx-3600P、fx-3950Pなどはプログラム機能が十分でないので適用外だ。

ところで、fx-9860GII、fx-CG20、fx-CG50、fx-FD10 Pro は、1万円以上の価格だ。一方で、fx-5800P は 6千円台前半 (2017/01/01時点の Amazon価格) と格段に手軽な価格だ。この価格で、上記4つの条件を満たす言語を搭載しているのだから、改めて魅力的なマシンと言える。

※ 興味があれば、最近のCasio プログラム電卓の価格動向 をご参照。


当初は、fx-5800P のような電卓で、遊べるアクションゲームを作れるとは思っていなかった。たまたま、Goto~Lbl コマンドで、カウントタイマーを作ってみると、意外に速いことから、実際に遊べるレベルのアクションゲームを作れるかどうかを試したくなったのが、もぐら叩きを作り始めた動機だった。

パソコンで作るゲームと異なり、最初にゲーム仕様を作るのではなく、機能を追加した時にゲームとしてのスピード感を損なわないように探りつつ、様子を見ながら後付けでゲーム仕様を考えた。実際に私自身が考えたり試したりした事柄を、時系列で実況中継風に書いた結果、冗長な記事となってしまった。

できあがったゲームは、バリバリのゲーマーには物足りないのだが、普段からあまりゲームで遊ばない人間(=私)には、少しすつスキルアップして、得点が増えてゆくのが愉しい。


ご興味の有る方は、是非一度プログラムを入力して、遊んでみて欲しい。


もぐら叩きが意外にうまくいったので、最近はシューティングゲームができないものか?と、色々と動きのあるルーチンを作って遊んでみている。ひょっとしたら、何かシューティングゲームができるのかも知れない。

電卓の遅い処理速度、完全シングルタスク、広いといっても16×4 しかない画面で、動きやロジックを試しながら、遊べそうなゲームを模索してみようと思っている。


おしまい( ^o^)ノ



以下は、プログラムコード: [2016/05/15 誤記修正]

[2017/08/06 追記]
メインルーチンの3行目 Lbl 0 の下に、2行追加したものをプログラムライブラリに収録している。
追加した2行は、
While Getkey
WhileEnd


もぐら叩き: Wack -a-Mole by やす(Krtyski)

Wack-a-Mole_src 



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


 



keywords: fx-5800Pfx-CG20fx-9860G IIゲーム、プログラミングもぐら叩きプログラム関数電卓

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

関連記事

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

fx-5800P 素因数分解 - 高速化

追記修正 2020/05/25

[2020/01/24]
ソースコード表示を追加し、C.Basicでの実行例の説明を追加しました。
[2020/05/25] 動作可能モデルの記述を更新しました。


今回は、fx-5800P の素因数分解プログラムの高速化の話題です。

素因数分解の一般的な方法は、"エラストテレスのふるい" と言われるものです。最初に入力した数 N を小さい順に素数で割り算を繰り返す方法です。最大の素因数は N の平方根以下の整数なので、平方根以下の整数を対象に2と3以上の奇数で割り算を行う方法で fx-5800P での素因数分解プログラムを作っています。
⇒ fx-5800P 素因数分解 - バグ修正と表示変更

さらに高速化する方法は無いものかと、色々と考えたり、試したりしていました。
例えば Casio 関数電卓の素因数分解 など。



最速の素因数分解プログラム

最近、目からうろこの高速化を達成した記事を見つけました。
A fast prime factorizing program for Casio fx-5800P 
このトピックで、作者の slugrustle 様 は、2つのプログラムを公開されています。いずれもプログラム名は FACTOR です。
オリジナルは、上のサイトをご覧ください。

これらには、面白い工夫がなされています。その部分には手を付けず、表示やユーザーインターフェースの不具合(と私が思うだけですが...)を解消するために、チョット変更しました。


1本目のプログラムの変更版:
結果の表示を 3^2 と乗数を表示し、List にも乗数の結果が FREQ に反映するように変更しました。
FACTOR-M1 のダウンロード

FACTOR-M1_1 FACTOR-M1_2 
FACTOR-M1 の結果出力 - 左: 乗数表示、- 右: [MODE] [3] で現れる List表示


2本目のプログラムの変更版:
オリジナルプログラムでは、結果表示画面を、複数ページで切り替えて自由に見られるようになっています。[EXE] [▲] [▶] [+] で次のページを表示、[(ー)] [▼] [◀] で前のページを表示、[EXIT] [DEL] でプログラムを終了するようになっています。計算が高速化しているだけでなく、結果表示も良くなっています。

このキーの使い方がチョット馴染まないので、[▼] で次のページ、[▲] で前のページ、[+] は使えないようにし、指定以外のキーを押した時の誤動作を抑制するように修正しました。時間をかけて計算できた結果が、誤動作で見えなくなるのは嫌ですから...
さらに、オリジナルはキーを軽く押しても応答せず長押しが必要、つまり応答がとても悪いので、キー入力待ちを最小のループにして応答を十分高速にしました。軽くキーを1回押すだけで、チョット待ちますが必ず画面が変わります。
またオリジナルでは結果表示一覧で素因数として 1 が表示されますが、1 は素数ではないので、素因数として 1 が表示されないように修正しました。
FACTOR-F1 のダウンロード
ソースコードはこのページの一番下に掲載

FACTOR-F1_1  FACTOR-F1_2 
FACTOR-F1 の結果表示 - 全結果を画面切り替えで確認、左: 2/1ページ、右: 2/2ページ


比較のための以前作った PRIME DECOMP:
PRIME DECOMP のダウンロード

Prime_Decomp_2 Prime_Decomp_3 


上記でダウンロードしたZIPファイルには、それぞれ CCL ファイルと TEXT ファイルが含まれています。CCL ファイルは CcLinker を使って fx-5800P に転送できます。或いは、下のリンクからテキストファイルを参考にしてください。



計算時間の比較

先ずは、fx-5800P でどのくらい高速化されたかの結果を示します。

PRIME DECOMP
ソースコード
FACTOR-M1
ソースコード
FACTOR-F1
ソース (メインルーチン)
ソース (サブルーチン)
123,456,789
= 32 x 3607 x 3803
170 秒60 秒
3 倍高速化
42 秒
4 倍高速化
6,666,666,667
= 19 x 1627 x 215659
77 秒27 秒
3 倍高速化
20 秒
4 倍高速化
7,849,516,203
= 32 x 9811 x 88897
458 秒165 秒
3 倍高速化
111 秒
4 倍高速化

1本目の FACTOR-M1 で3倍高速化、さらに2本目の FACTOR-F1 は4倍高速化されていることが分かります。

素因数分解は、与えられた数を小さい数から順に割ってゆく時、その操作の回数を減らせば、高速化に繋がります。
PRIME DECOMP では入力した数に、先ず平方根をとって一気に探査範囲を狭め、2と3以上の奇数で小さい方から順に割り算してゆく作戦です。

一方で、理想的なのは、小さい素数から素数だけで順に割り算してゆくことです。それには素数リストが必要ですが、それがあれば苦労しません。素数を算出する計算式などありません。

さて、slugursite様の工夫は、高い確率で素数を見つけるだけでなく、割り算する候補 (例えば、2 や 3 だけでなく、一旦割り算で使った素数の倍数) を効果的にふるい分ける手法にあります。そして、最初の FACTOR-M1 よりも 次の FACTOR-F1 の方が、素数を見つける確率が高くなっているので、さらに高速化されています。



最速プログラムでの工夫 [2019/07/31]

読者のまつ様から、高速プログラムの考え方をご説明頂きました。私はこれに大変納得しましたので、それを掲載致します。以前の記述は撤回させて頂きます。

素因数分解プログラムで通常行われている割り算では,「2,および,3以上の奇数」を割る数としています。
これですと,ご存知のように,例えば3で割り切った後に9でも割るという無駄が出てしまいます。
FACTOR-M1は,「2, 3, 3より大きい3の倍数を除く奇数」を割る数としており,3で割ったあと9や15で割ることはないようにしています。

3より大きい3の倍数を除く奇数について考えてみます。

まず,3より大きい3の倍数でない整数は次の(1),(2)のどちらかです。
 3m+1 (1)
 3m+2 (2)
 (m>=1)

次に(1),(2)が奇数となる式をそれぞれ求めます。

(1)は (2m+1)+m と変形できます。2m+1 は奇数ですから,(1)が奇数であるためには m が偶数である必要があります。そこで m=2n (n>=1) とおけば,(1)は 6n+1 となります。

(2)は 2(m+1)+m と変形できます。2(m+1) は偶数ですから,(2)が奇数であるためには m が奇数である必要があります。そこで m=2n+1 (n>=1) とおけば,(2)は 6n+5 となります。

5とこれらの式を並べ,さらに,隣り合う式の差も書き加えると次のようになります。(n=1とします)
式の並び隣り合う式の差
52
6n + 14
6n + 52
6(n+1) + 14
6(n+1) + 52
6(n+2) + 14
6(n+2) + 52
:
:
:
:
このような訳で,2, 4, 2, 4, ... と加算していると思われます。
この繰り返しは,6n+1 および 6n+5 の式からも分かるように,2と3の最小公倍数6を周期としています。

FACTOR-F1は,これを拡張して,割る数として
 奇数,かつ,3の倍数でない,かつ,5の倍数でない,かつ,7の倍数でない整数
を順番に求めていく方法をとっていると思われます。
2,3,5,7の最小公倍数は210ですから,隣り合う割る数の差(2,4,6,8など)の並びは210が1周期です。
FACTOR-F1の場合は,13+210n〜13+210(n+1)-1 [n>=0]の範囲で,2,3,5,7のいずれの倍数でもない整数を並べて,隣り合う整数の差をリストにしていると思われます。

ちなみに,13〜222の210個の整数のうち,
 奇数,かつ,3の倍数でない,かつ,5の倍数でない,かつ,7の倍数でない整数
の個数は,FACTOR-F1の「While 1」の下にある
 B+2→B:A÷B→D:Frac(D)=0⇒Prog "WFSUB":B>C⇒Goto 1
のパターンの行数と同じ48個です。

48個となる理由は次の通りです。

まず,2,3,5,7の倍数に関わるそれぞれの個数を求めます。

2の倍数の個数=210/2=105
3の倍数の個数=210/3= 70
5の倍数の個数=210/5= 42
7の倍数の個数=210/7= 30
 
2と3の公倍数の個数= 6の倍数の個数=210/ 6=35
2と5の公倍数の個数=10の倍数の個数=210/10=21
2と7の公倍数の個数=14の倍数の個数=210/14=15
3と5の公倍数の個数=15の倍数の個数=210/15=14
3と7の公倍数の個数=21の倍数の個数=210/21=10
5と7の公倍数の個数=35の倍数の個数=210/35= 6
 
2,3,5の公倍数の個数= 30の倍数の個数=210/ 30=7
2,3,7の公倍数の個数= 42の倍数の個数=210/ 42=5
2,5,7の公倍数の個数= 70の倍数の個数=210/ 70=3
3,5,7の公倍数の個数=105の倍数の個数=210/105=2
 
2,3,5,7の公倍数210の個数=210/210=1

重複を考慮すると,
2,3,5,7のいずれかの倍数の個数
=(105+70+42+30)-(35+21+15+14+10+6)+(7+5+3+2)-1
=162

従って,2,3,5,7のうちどの倍数でもない整数の個数は,
 210-162=48
で 48個となります。


素因数分解の正しい動作を検証

この作者は自分のプログラムを検証するテストプログラムまで作って、ソースコード (C++) を公開しています。fx-5800P 用なので、素因数分解する数は最大10桁と決まっています。この条件下でアルゴリズムの正しさを検証しています。

検証プログラムのソースコードが公開されています。そこで Visual Studio 2019 Community でビルドしました。


 FACTOR-F1 のテストプログラム Factor.exe のダウンロード [2019/08/28 リンクを修正]

コマンドプロンプトで、Factor.exe のあるデイレクトリに移動し、そこで

 Factor 1000 50000 4

と入力してエンターキーで実行すると、1000 から 50000まで 4 刻みで入力を変化させて FACTOR-F1 を実行した結果を一気に連続して自動実行してくれます。そして、結果が素数がどうか判定し、素数でないものが出てくるとエラーを出し、素数であれば実行を継続します。正常終了すれば、正しく素因数分解が実行されたことになります。

factor_1
正常終了しているので、1000 から 50000 までの素因数分解は問題ないことが検証されました。


fx-5800P 用のプログラムなので、入力値は 1 ~ 9,999,999,999 (10桁) の範囲なので、完璧にテストするには、

 Factor 1 9999999999 1

とすれば良いのですが、試しに私のPCだと、1晩で150億回分の検査が済みました。 10桁に相当する (1000億 - 1) 個全部のテストは、夜のみ終夜運転で計算させるとして1週間程度必要になりそうです。

factor_2
1 ~ 9,999,999,999 までのテスト中

テストが正常終了すれば、このアルゴリズムが正しいことが検証されます。但し、他のパラメータ設定でも正しい組み合わせは有りそうです。



グラフ関数電卓用に移植 [2020/05/25 更新]

FACTOR-F1 をグラフ関数電卓用に移植しました。素因数分解の計算部分は変更の余地がありませんが、結果表示は7行全部を使うように変更しました。

グラフ関数電卓用 FactorG のダウンロード

FactorG 
FactorG の結果表示

ここで作成したプログラムは、Casio Basic が搭載されたグラフ関数電卓で動作すると思われます。
カシオが過去に発売したグラフ関数電卓全てを調べていませんが、おそらく 1995年発売のフランス専用モデル GRAPH20、そして1996年発売の世界モデル fx-7400G 以降のモデルでは、このプログラムが動作すると思われます。 

実際に動作確認したモデル (若干の手直し移植を含む)
 ・CFX-9850G (若干の手直し、プログラムダウンロード)
 ・CFX-9850GC PLUS (若干の手直し、プログラムダウンロード)
 ・fx-9860G / fx-9860G Slim (そのまま動作)
 ・fx-9860GIIシリーズ - SH3/SH4A、SDモデル (そのまま動作)
 ・fx-CGシリーズ - CG10/CG20/CG50 (そのまま動作)
 ・fx-9750GIII / fx-9860GIII (そのまま動作)
※ これらは純正Casio Basic での動作

なお、上の画面は、fx-CG50 にインストールした アドインCasio Basic  - C.Basic for CG で実行した画面です。C.Basic は純正Casio Basic のほぼ上位互換なので、グラフ関数電卓用 FactorG.g3m がそのまま実行できます。C.Basic は純正Casio Basic よりもかなり高速に動作するので、上記の例だと一瞬で結果が表示されます。
アドインCasio Basic - トップページ



Factor-F1 (fx-5800P用) のソースコード

FACTOR-F1_src



今回は、slugrustle 様の Universal Casio Forum への投稿プログラムの解説記事になってしまいましたが、私としては十分楽しませてもらったので、記事にして残そうと思いました。



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


 


keywords: プログラム関数電卓、fx-5800P、素因数分解、プログラミング、Casio Basic

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


関連記事

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

C.Basic for CG ベータ版がリリース Part 1 (Ver 1.00α以降)

アドイン版 Casio Basic - C.Basic for CG ベータ版 - Part 1
<トップページ>

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します

更新:2020/05/23


[2020/05/23] C.Basic for CG Ver 1.45 beta build 20 が差替えアップデート
- さらに使いやすく色々と変更していってみる版
※ お試し版なので正式版より実行速度が遅くなる部分があります。

目次へ


C.Basic for CG Ver 1.45 beta の更新履歴

(build 20)
  • System(コマンドの引数(-1)での機種判定にGraph90+Eを追加しました。
    (書式)System(-1)
     返り値:10 CG10
     返り値:20 CG20
     返り値:50 CG50
     返り値:90 Graph90+E
  • If [False] ~ ElseIf 間の飛越キャッシュの不具合を修正しました。
  • Syetem()コマンドでOSのマイナーバージョンが取得できるようになりました。
    (書式)System(-22)
  • やす(Krtyski)様作成のSystem()コマンドサンプルプログラム(Graph90+E対応版)をアップデートしました。(System_sampleフォルダ)
(build 19)
  • スタックエラーになる前にシステムエラーになっていた不具合を修正しました。
  • Try~TryEndコマンドからBreakで脱出した場合、それ以後、[AC]中断もAcBreakも効かなくなる不具合を修正しました。
  • ReadGraph/WriteGraph/DotGet/DotPutコマンドを現在のVRAMに作用するように仕様変更しました。
  • 描画対象VRAMを退避されているテキストVRAM領域とグラフィックスVRAM領域に変更するScreen.Vコマンドを追加しました。
    (書式)Screen.V
     デフォルトのVRAMに戻します。
    (書式)Screen.VT
     テキストVRAMの退避領域を描画対象にします。
    (書式)Screen.VG
     グラフィックスVRAMの退避領域を描画対象にします。
(build 18)
  • 行列表示を修正しました。
  • セット・アップで隠しメモリのOn/Offは確認ポップアップを出すようにしました。
(build 17)
  • RGB565形式の16ビットBMPのセーブ/ロードに対応しました。デフォルト形式は16ビットBMPになります。
  • CPLXの行列表示が異常に遅かったのを修正し、3列から4列表示に変更しました。
  • 隠しメモリの初期化を修正しました。
(build 16)
  • 自動インデント機能でのSwitch~Case~SwitchEndの自動整形を改善しました。
  • ElseIfコマンドの直後にコメントがある場合、次のコマンドがIfの場合に終了していた不具合を修正しました。
  • 行列の初期化後に文字列から文字列への代入で代入されない不具合を再修正しました。
    (コピーされない例)
        ClrMat
        "ABC"->Str 1
        Str 1->Str 3
  • Seqコマンドで刻み値が少数の場合に終値に到達しないことがある不具合を修正しました。
    (例)Seq(X, X, 0.1, 1, 0.05 )
  • CPLXモード以外で虚数を使うと無限ループになる不具合を修正しました。(build15でのエンバグです。)
  • 省略乗算の不具合を修正しました。(build15でのエンバグです。)
(build 15)
  • Colon様のサポートにより関数メモリの実装を開始しました。
  • デフォルトのインデックス開始値が0の場合にListの自動確保が出来なかった不具合を修正しました。
  • ファンクションメモリー(Fn)のStore/Recall/SEEのSEEをEditに変更しました。
(build 14)
  • ファンクションメモリー(Fn)のStore/Recall/SEEのSEEで[F5](Edit)を追加し編集可能になりました。
  • ファンクションメモリー(Fn)のStore/Recall/SEEの不具合を修正しました。
(build 13)
  • ファンクションメモリー(Fn)およびグラフメモリー(Y)をデフォルトで数式評価とし、
     文字列関数内および文字列に続く場合は文字列として評価するように変更しました。
     (数式評価)
      fn1->A
      fn1(123)->A
      Locate 1,1,fn1
      Text 1,1,fn1(123)
     (文字列評価)
      "123"+fn1->Str 1
      fn2->Str 2
      StrJoin(fn1,Str 1)
  • 文字列から文字列への代入で代入されない不具合を修正しました。
  • (fn3にコピーされない例)
      ClrMat
      "123"->fn1
      "ABC"->Str 1
      Str 1->fn3
  • ファンクションメモリー(Fn)のStore/Recall/SEEを追加しました。
     (※エディタではクリップボードの内容がストア対象です。1行入力では1行全体がストア対象になります。)
  • F_Start/F_End/F_pitchを独立変数に変更しました。
  • ?コマンドで文字列が表示される場合にアスキーコードにデコードしないように修正しました。
(build 12)
  • GraphYとfnの確保数と文字列の長さをStr変数と同等に変更しました。
  • GraphYの格納仕様を6バイトのプレフィックス付きに変更しました。
    (行列への直アクセス以外は以前と変更ありません。)
  • エディタでファイルモードの切替でファイルリストが更新されない不具合を修正しました。
  • セットアップで機能しない場合はアイコンをマスク化しました。
  • System()コマンドでメインメモリに保存されるC.Basicのシステムファイルを取得できるようになりました。
    (インデックス開始値は0で固定です。)
    (例)System(10000,1)
     @CBASIC/Cbasicの内容をListAnsに取得します。
    (例)System(10000,2)
     @CBASIC/Cbasic2の内容をListAnsに取得します。
(build 11)
  • CGモードでScreen#で座標変換した場合に2ドットずれる不具合を修正しました。
  • Screen#、Screen%を連続実行するとエラーになる不具合を修正しました。
  • ファイルモードの検索機能を改善しました。
     アルファベットキーを押すと検索窓が開き検索モードになります。
     検索窓では左右移動等、通常の入力が可能です。
     検索窓を解除するには[EXIT]を押してください。
     カーソル上下、[EXE] [F1](EXE) [F2](EDIT) [F3](NEW)キーは検索窓を閉じること無く実行できます。
(build 10)
  • ファイルモードでアルファベットキーによるダイレクト選択時に[SHIFT]、[ALPHA]、小文字や数字が指定が出来るようになりました。
     [F4](A<>a): 大文字小文字切り替えです。
     [F5](CHAR)
     [F5](→Folder): フォルダサーチに切り替わります。
     [DEL]: 一文字戻ります。
     [AC]: 全部消します。
     [EXIT]: 元に戻ります。
     [X^2]: ~
     [^]: '
     [(-)]: @
     [・]: スペース
     [x10x]: "
(build 09)
  • ファイルモードでアルファベットキーによるダイレクト選択時に2文字以上の指定が出来るようになりました。
     [DEL]:一文字戻ります。
     [AC]:全部消します。
  • ファンクションメモリー(Fn)およびグラフメモリー(Y)に引数が無い場合は文字列として評価するようにしました。
  • インデントの必要なコマンド(If,Else..)の直前で改行した場合にインデントが余分に付加される不具合を修正しました。
(build 08)
  • OS側のステータス表示フラグがONの場合はステータスエリアの書き換えをしないように変更しました。
(build 07)
  • エミュレータで隠しメモリが使えるようになりました。
(build 06)
  • 以下のコマンドでステータス表示が更新されるようにしました。
    '#CBASIC
    '#CBDBL
    '#CBINT
    '#CBCPLX
  • 一行入力時のステータスエリアの表示を改善しました。
  • エミュレータの判定方法をハードウェアID判定に変更しました。(0x8001FFD)
(build 05)
  • CHAR選択画面から戻る時にステータスエリアの表示が戻らない不具合を修正しました。
  • CG10/20でエディタのサーチ画面で[SHIFT]+[4](CATALOG)が使えなかった不具合を修正しました。(1.44build14でのエンバグです。)
(build 04)
  • GetHSV()/GetHSL()コマンドで変換できない色をエラーにするようにしました。
    (書式) GetHSV(16ビットカラー値[,N])
    (書式) GetHSL(16ビットカラー値[,N])
     Nオプションでエラーを無視します。
  • HSV() / HSL() での色飽和での反転を修正しました。
(build 03)
  • RGB→HSV/HSLのカラーコード変換の誤差を修正しました。
  • ラベルの検索時にコメントでの'#に続くオプションの設定が変更されてしまう不具合を修正しました。
(build 02)
  • VarPtr()コマンドで行列/List/Vctを指定した場合、その添字が常に実数評価されていた不具合を修正しました。
  • RGB()、HSV()、HSL()コマンドの引数がListの場合、インデックス開始値が0の場合の不具合を修正しました。
(build 01)
  • SortA()/SortD()コマンドに文字配列のソートを追加しました。
    (例)SortA($Mat A)
     Mat Aの文字列が昇順にソートされます。
  • ReadMe、マニュアル更新しました。
  • 行列表示の←→表示を修正しました。
  • g3mモードにおいてストレージメモリへのでのStoPictを無効にしました。


ついにアルファ版からベータ版になりました!

C.Basic for CG 開発が始動 - Part 3 (Ver 0.86アルファ版まで)
 
 の続きです



はじめに - Part 1 - C.Basic for CG ベータ版 (Ver 1.00β以降)

完成度の高い fx-CG50 が登場し、この機種で走る アドイン版 Casio Basic - C.Basic for CG がアルファ版がリリースされ国内外のユーザーの皆様のご協力でアップデートが繰り返され、ようやく安定してきたのでベータ版になりました。

作者の sentaro様を皆で応援し、作者とユーザーの情報交換を継続するために、ベータ版の Part 1 を作りました。



目 次

現行ベータ版について

最新版のダウンロードとインストール


操作法・コマンドの説明・更新履歴など

C.Basic for CG プログラミングのための役立ちツール
 

C.Basic for CG を活かしたプログラム 

 お勧めの充電池と充電器   

チューンアップツール - Ptune3



現行ベータ版について
C.Basic for CG は、ベータ版 (お試し版) です。現行バージョンは安定してきましたが、まだ未完成と考えて下さい。バグの可能性があります。作者 (sentaro様) に連絡して応援する...というのが当ブログのスタンスです。

<目次に戻る>


最新版のダウンロードとインストール

   C.Basic for CG Ver 1.45β build 20 (公式最終版)
  
C.Basic for CG Ver 1.44β build 16 (1つ前の公式最新版)
  • 解凍して得られる CBCGxxx.g3a ファイルを fx-CG20 / CG50 のストレージメモリに転送してアップデート完了!
  • 詳しいインストール方法はこちら 
  • 取扱説明書:同梱テキストファイルを参照。但し以下でも同じものが確認できます。マニュアルのデバッグも進行中です
  • 過去のバージョンこちら
   C.Basicのインストール
<目次に戻る>


操作法・コマンドの説明・更新履歴など [最新バージョンに対応しています]
以上のドキュメントは、ダウンロードしたZIPファイルに含まれています。
<目次に戻る>



C.Basic for CG プログラミングのための役立ちツール

  複数のフォントを使い分けるためのツール - Font File Manager
fx-CG20 / CG50 用 C.Basic for CG には、複数のフォントが同梱されており、これらを切り替えて使うことができる。これらのフォントを切り替えるツール - FFM (Font File Manager) が Colon様から提供されている。フォントの詳細情報を見ることもできる。標準的なシステムツールのような外観になっているが、C.Basicで書いたプログラムだ。詳しくは同梱のReadmeファイルを参照のこと。Ver 1.24 は C.Basic for CG Ver 1.44β build 2 以降で正常動作する。
C.Basic for CG Ver 1.44β build 5 以降に同梱されるようになった。

FFM_1  FFM_2 
  ⇒ ダウンロード (Ver 1.24)


  RGB指定による色確認プログラム - RGB
fx-CG20 / CG50 搭載のカラー液晶は見る角度が少し変わるだけで色合いが大きく変化する。そこで実際に RGB値を入力したときの実際の色合いを確認するためのツールを作成した。C.Basic for CG の様々独自コマンドや拡張コマンドを使っていて、バッテリーアイコン表示、アドインプログラムのように見える全画面表示(上部のステータスバーがない)、OS内蔵のファンクションメニュー利用、ポップアップウィンドウの表示、入力ボックス機能、長大な文字列を扱う文字列処理 (ヘルプ機能)、実用的な速度スクロールバーを動かせる高速グラフィックコマンド (ヘルプ機能)、QRコードのビットマップ表示、などを実現できる C.Basic for CG の機能デモンストレーションにもなっている。
   RGB4b_Graphics_Mode 
  ⇒ 説明とダウンロード


  カラー設定変換プログラム - ColConv Ver 1.1
C.Basic では、複数のカラー設定コマンドがあり、1つの同じ色を設定するためのパラメータも異なる。これらのパラメータを一覧で確認するプログラム - ColConv11 (Colon様作成)は、プログラミンツールとして有用で、さらにカラー設定コマンドの使い方を示す良いサンプルプログラムにもなっている。
ColConv_1 ColConv_2 
  ⇒ ダウンロード 


  OS内蔵ファンクションキー探索プログラム - SysFunc3
fx-CGシリーズやfx-9860Gシリーズには、ファンクションメニューの画像データがOSに内蔵されている。この内蔵データをプログラムで利用するにC.Basicには独自コマンド FKeyMenu( があり、各画像に対応した番号を渡すとその画像が表示できる。そこでOS内蔵のこの番号を調べるツールを作成した。アドインプログラムのような全画面表示(fx-CGシリーズのみ、fx-9860Gシリーズは元々全画面表示)、ファンクションメニュー表示、入力ボックス機能、ミニフォント表示など、C.Basic の独自コマンドや拡張コマンドの機能を使う簡単なサンプルプログラムにもなっている。なお、C.Basic for FX 版も作成した。
   SysFunc3_2_1_f  SysFunc3FX_1 
   ※ fx-CGシリーズで全画面表示をすると、より広いエリアを使えることが分かる。
  ⇒ 説明とダウンロード


  随時、追加・追記します。

<目次に戻る>


C.Basic for CG を活かしたプログラム

 ▶昔懐かしいインベーダーゲーム - Alien 
C.Basic for CG の独自コマンドや拡張コマンドを使えば、高速グラフィックス、独自フォントの利用、アドインプログラムのような全画面表示が可能になり、昔のアーケードゲームと同等レベルのゲームが実現できる。
   AlianCG3.png  
  ⇒ ダウンロード


  疑似3Dゲーム - Triangle Filed Ver 0.91 [2020/03/26 アップデート]
Planet Casio でのプログラムコンテスト CPC #26 において、アドイン作成用の C / C++ に加えて C.Basic も使用言語として認められた。そこで sentaro様が応募作品として発表したのが Triangle Field。fx-CGシリーズ用が本命だが、参考までに fx-9860Gシリーズ用にも作成された(液晶の応答性が低いのでゲームとしては難易度が高い)。
TriangleField-FirstScreen 
ダウンロード
なお、類似のアドインゲーム CubeFiled があるが、アドインレベルのプログラムが C.Basic で提供できることを示している。


 ▶ 日本語版 "あの人の歳はいくつ?" - 西暦・和暦換算 YearConve
C.Basic for CG では、fx-CGシリーズに内蔵されている GBフォントを呼び出して漢字、ひらがな、カタカナを表示できる。令和の御代替わりを言祝ぎ、漢字やかなを表示した実用プログラムを作成した。
   YC_cb4f 
  ⇒ 説明とダウンロード


  随時、追加・追記します。

<目次に戻る>



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


 



keywords: fx-CG50、fx-CG20CasioBasic、プログラム関数電卓、C.Basic、C:Basic

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


関連記事

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

fx-9860GIII の概要

 
初版: 2020/04/05
周期関数の積分について訂正 2020/05/23


Casio fx-9869GIII POWER GRAPHIC 3

fx-9860GIII USB POWER GRAPHIC 32020年3月上旬、ヨーロッパ限定で fx-9860GIII が発売されました。明らかに fx-9860GII の後継機種で、既にフランス限定版として販売されている GRAPH 35+EII のインターナショナル版の位置づけです。この記事を書いている時点では、アメリカや日本では未発売です。

このデザインは GRAPH 35+EII とほぼ同じで、さらに最近の関数電卓の模倣品対策用の新デザインと極めて類似しています。

管理人は、Amazon France で購入しましたが、現在は日本への出荷を行わないと表記されています。eBayセカイモンで入手可能です。




fx-9860GIII の製品紹介は、CASIO INTERNATIONAL のページ や CASIO WORLDWIDE EDUCATION WEBSTITE のページで確認できます。

日本国内では、モノクロ液晶のグラフ関数電卓 fx-9860GII は既に販売していません。fx-9860GIII のヨーロッパ限定で発売後、北米限定で ほぼ同一機能の fx-9750GIII が発売されたので、これらのどちらかの国内発売が期待されます。


はじめに

Casio Basic の機能に着目すると、以下に列挙した機種が同じカテゴリに含まれるプログラム電卓です。

 - 2006年発売 fx-5800P 
 - 2007年発売 fx-9860G (OS Ver 2 以降)、生産中止
 - 2009年発売 fx-9860GII (国内販売中止)
 - 2011年発売 fx-CG10 PRIZM (北米のみ)
 - 2012年発売 fx-CG20 (fx-CG10 PRIZM の約1年後)
 - 2013年発売 fx-FD10 Pro
 - 2017年発売 fx-CG50 (欧米先行、2017/10/20国内発売)
 - 2020年発売 fx-9860GIII (ヨーロッパ限定発売)
 - 2020年発売 fx-9750GIII (北米限定発売)

fx-9860GIIIと fx-9860GII / fx-CG50 との比較
 fx-9860GIIIfx-9860GIIfx-CG50
 電池 単四 x 4 単四 x 4 単四 x 4
 電池寿命 (メーカー測定基準) 230 時間 200 時間 170時間
 サイズ (mm) 18.7 x 83.5 x 175.5 21.2 x 91.5 x 184 18.6 x 89.0 x 188.5
 重さ (g) 190 225 230
 液晶ディスプレイ
 ・Casio Basic グラフィック
 ・Casio Basic テキスト
 ・バックライト
 64 x 128 pixel
・63 x 127 dot
・7 x 21 文字
なし
 64 x 128 pixel
・63 x 127 dot
・7 x 21 文字
・あり
 216 x 384 pixel
・187 x 379 dot
・7 x 21 文字
・あり
 仮数 + 指数 10桁 + 2桁 10桁 + 2桁 10桁 + 2桁
 内部演算桁数 15桁 15桁 15桁
 プログラムメモリ容量 最大 ~62 KB 最大 ~62 KB 最大 ~61 KB
 メインメモリ (利用可能) ~62 KB ROM ~64 KB ROM ~61 KB ROM
 ストレージメモリ  ~3 MB SDRAM ~1.5 MB SRAM ~1.6 KB SDRAM
 プログラムファイル名 最大8文字 最大8文字 最大8文字
 CPU SH4A (SH7305) SH4A (SH7305) SH4A (SH7305)
  クロック ~59 MHz ~29 MHz ~118 MHz
 - FLL:  14.75 MHz x900 14.75 MHz x900 14.75 MHz x900
 - PLL:  FLLx16, 235.93 MHz FLLx16, 235.93 MHz FLLx16, 235.93 MHz
 - IFC: CPUコアクロック 1/4 PLL, 58.98 MHz 1/8 PLL, 29.49 MHz 1/2 PLL, 117.96 MHz
 - SFC: SuperHywayバスクロック 1/8 PLL, 29.49 MHz 1/8 PLL, 29.49 MHz 1/4 PLL, 58.98 MHz
 - BFC: メモリバスクロック 1/8 PLL, 29.49 MHz 1/8 PLL, 29.49 MHz
 - PFC: I/Oクロック 1/16, 14.74 MHz 1/16, 14.75 MHz 1/8, 29.49 MHz
 PCリンク Screen Receiver  FA-124 Screen Receiver
 OSバージョン 3.21  2.09 3.30
 Casio Basic あり あり あり
 Python あり なし あり

fx-9860GIII での fx-9860GII からの主な変化を列挙します;
CPUクロックが倍になった
PCリンクが fx-CGシリーズと同様に楽になった - 電卓をPCの外部ドライブとして認識
Pythonが追加された
サイズが小さくなった
  GIII_GII_CG50 
液晶のバックライトが無くなった (個人的には不便を感じる)
液晶サイズが小さくなった (個人的には不便を感じる)
 

 
目 次

1. 海外から直接購入


2. 到着したパッケージ

3. 外 観

4. ソフトウェアダウンロード
 4.1 OSアップデート
 4.2 取扱説明書
 4.3 アドインプログラム
 4.4 サポートソフトウェア

5. データ転送
 5.1 PCとのリンク
 5.2. 電卓同士のデータ転送

6. バックアップ

7. ハードウェア
 7.1 ゴム足が取れやすい

8. 関数電卓としての機能
 8.1 ユーザデータのバックアップ機能
 8.2 3桁区切り表示
 8.3 複素指数関数
 8.4 積分関数の処理速度
 8.5 周期関数の積分 [2020/05/23 修正]

9. Casio Basic の互換性

10. カタログ機能

11. プログラムリスト

12. Casio Bsic の処理速度
 12.1 計算主体のプログラム
 12.2 動きのあるテキスト出力プログラム
 12.3 動きのあるグラフィック出力プログラム

13. さらなる高速化
 13.1 オーバークロック
 13.2 アドイン版Casio Basic (C.Basic)
 

 
海外から直接購入

fx-9860GIII はヨーロッパ限定で発売されたので、現時点では日本や北米では販売されておらず、Amazon France、e-Bayで直接購入するか、e-Bayと提携しているセカイモンから購入できます。

そこで、管理人は送料を含めて最も安い価格が提示されていた Amazon France から購入した(詳しくはこちらを参照)。但し購入直後 "このセラーは日本へ出荷できません" と表示された。従って Amazon France で別のセラーが出品するか、Amazon USA や Amazon Japanでの並行輸入品で出品されるのを期待します。 

[2020/04/28 追記]
COVID-19パンデミックの影響で、海外のeBayやAmazon France から日本への発送を行うセラーが無い状況です。但し日本語で購入できるセカイモンなら入手可能。
セカイモンでのfx-9860GIII 
4/28時点で、¥16,493 で購入できます。
 
<目次に戻る>
到着したパッケージ

fx9860GIII_Package  fx9860GIII_Package_Backside 

ブリスタパッケージのような分厚いプラスチックがガッチリと融着されているものではなく、楽に開けらます。

GIII_Contents2 

fx-9860GIII 本体、Quick Start Guide、単四アルカリ電池4本 (試供品)、PCリンク用のUSBケーブル、電卓同士を接続する3Pinケーブル、廃棄処理の注意書き、保証書が入っています。CDは同梱されていません
 
 
<目次に戻る>
外 観

 9860GIII_991MS2ndEdition   Back_Desig 

(写真左) サイズと色合いは異なりますが、関数電卓 fx-991MS 2nd edition (右) とデザインが同じです。白い筐体への印字はとても見やすくなっています。

(写真右) 本体裏には、微妙な凹凸で形成された放射状の綺麗な模様があり、電池蓋を含めた広い領域に及んでいます。放射模様の中心にRESTARTボタンが配置されています。これは摸倣防止対策の1つなのかも知れません。
 
 
<目次に戻る>
ソフトウェア ダウンロード

 
OSアップデート 
fx-9860GIII 本体で、[MENU] - [System] - [F4] (Version) で確認すると、OSバージョンは 03.21.0200 となっていました。
今のところ、これが最新です。
 
 
<目次に戻る>
取扱説明書 
日本語取扱説明書はまだ公開されていません。

英語版は、Casio World Education Website の Download Resources のページからダウンロードできます。
 
 
<目次に戻る>
アドインプログラム
グラフ関数電卓のDownload Resourcesのページで、SOFTWARE LICENSE AGREEMENT に [Accept] クリックすると、OS、マニュアルと各種アドインプログラムをダウンロードできます。ここでダウンロードできるOSは、製品にインストールされている Ver 3.21 よりも古いものなので、ここからOSとマニュアルのダウンロードは意味がありません。アドインの中で、購入した fx-9860GIII にインストールされているのは、Geometry のみです。
 
 
<目次に戻る>
サポートソフトウェア
Screen Receiver - 電卓画面をPCで表示するソフト
Screen Receiver はPC画面に電卓の画面を表示するだけでなく、画面イメージを画像ファイルで保存できます。fx-9860GIII の Download Resources のページで、Support Software をクリックし、Screen Receiver がダウンロードできます。バージョンは 3.02 で、fx-CG20 /10 用と同じバージョンで、共通して使えます。
 
  
<目次に戻る>
データ転送
 
PCとのリンク


標準添付の USBケーブルを使います。
USBケーブルで fx-9860GIII と PC を繋ぐと、fx-9860GIII の液晶での表示が接続モード (Connection Mode) になります。
ここで、[F1] (USB Flash :[F1]) を押すと、ポップアップウィンドウで Preparing USB と表示され、少し待つと接続完了です。

後は、エクスプローラで fx-9860GIII がドライブとして表示されるので、PC上と同じ操作でファイルのやりとりができます。 

Calc_Drive 
fx-9860GIII 内のフォルダ / ファイル はこのように表示されます。

fx-9860GIII を接続した時のドライブには最初は名前が無いので、FX-9860GIII と名前を付けました。ドライブを右クリックしてプロパティを選び、そこで名前を入力できます。

Calc_Drive_Named 

アドインプログラムのインストールは、ドライブのルートにアドインファイルをコピーします。リンクを終了するには、Windows PCの通知領域 (タスクトレイ) で「ハードウェアを安全に取り外してメディアを取り出す」で [DEVICE の取り出し] をクリックします。外付け USBハードディスクや USBメモリの取り出しと同じ操作です。
 
 
<目次に戻る>
電卓同士のデータ転送

3Pinコネクタの接続ケーブル (SB-62) を使って2つの電卓を繋ぎ、接続する両方の電卓で CABLE (ケーブルの選定) で [F2] (F2:3Pin cable) を設定後、一方で TRANSMIT (送信)、他方で RECV (受信) に設定すれば、データのやりとりができます。このケーブルは、海外で購入

プログラムを含むデータのやりとりができるのは、fx-9850Gシリーズ、fx-9860Gシリーズ、fx-9860GIIシリーズ、fx-CGシリーズ、そして fx-9860GIII で、Menu に Link 項目があって、3Pin コネクタが付いている機種です。なお、fx-5800P と グラフ関数電卓とのデータ転送はできません。

詳しくは、Sofware Manual に書かれているので確認できますが、使ってみれば分かると思います。

fx-CGシリーズ から fx-9860GIII へ転送すると、ファイル形式は g3m から g1m へ自動変換され、カラーや細線設定など、fx-9860GII で未対応のコマンドは @ に自動的に置き換えられます。
 
 
<目次に戻る>
バックアップ

万一に備えて、電卓内部のデータをバックアップしておくことを勧めます。PCに保存フォルダを作り、PCとのリンク機能を使って電卓内のデータをPCの保存フォルダに丸ごとコピーしておきます。
Backup_Factory_State 
上は、購入時のバックアップです。そして適宜バックアップをすると良いと思います。特にチューンアップツールでオーバークロックを行う場合は、エラー発生時に電卓のリセットが必要になりプログラム、データやプログラムが失われることもあるので、バックアップしてあればこれらを簡単に戻せます。
 
 
<目次に戻る>
ハードウェア
 
 
ゴム足が取れやすい
管理人が購入したものは、ハードカバーのゴム足が最初から1つ欠損していました。工程で取れたままを見逃し、パッケージに入れられたようです。本プログの読者の sentaro様が保有している GRAPH35+EII のゴム足も取れやすいとのこと。つまり GRAPH35+EIIfx-9860GIII は本質的にゴム足の接着工程に問題がありそうです。
  
 
<目次に戻る>
関数電卓としての機能

fx-9860GIII のキーの種類と数、および配置は、[SHIFT] - [OPTN] のバックライト 機能以外は、fx-9860GII と同じです。関数機能も同じです。計算の内部桁が15桁と同じで、各関数の精度範囲も同じなので、fx-9860GIII の関数電卓としての使い勝手は fx-9860GII と同じです。
 
 
<目次に戻る>
ユーザーデータのバックアップ機能
カシオのスタンダード関数電卓は電源をオフにすると、作業内容やユーザーデータが消えますが、fx-9860GIII は各モードでのユーザーデータは一旦電源を切ってもバックアップされます。このバックアップ機能は、他のプログラム電卓 fx-5800P、fx-9860GII、fx-CG20/50 とも同じです。
 
 
<目次に戻る>
3桁区切り表示
カシオの最新のスタンダード関数電卓 fx-JP900 / 700 / 500 では、関数電卓として3桁区切りが登場しました。一般電卓には3桁区切りは普通に搭載されている使い勝手の良い機能なので、登場が遅すぎるようにも思います。

これまでのプログラム電卓には3桁区切り機能は有りません。fx-9860GIII も残念ながら3桁区切り機能には対応していません。

Casio Basic での出力コマンドにも3桁区切り機能がありません。しかし、作ったプログラムに3桁区切り出力機能を付加することは出来ます。
Casio Basic入門59, Chapter 10-5:3桁区切りサブルーチン グラフ関数電卓版
 
 
<目次に戻る>
複素指数関数
複素数を表示するように設定して、計算させてみると、fx-5800P はエラー、fx-9860GII と fx-CG20 は正しく計算結果を表示します。fx-CG50 でも同様に複素指数関数を正しく計算します。

Complex_1  Complex_2 
※ Screen Receiver で取得した画面イメージ 
 
<目次に戻る>
積分関数の処理速度
 
積分計算速度の比較をしてみます (Rad モード)。
機種積分1積分2
fx-JP9005.5秒48.7秒
fx-5800P10.1秒56.7秒
fx-9860GII (SH4A)1.5秒8.4秒
fx-CG201.0秒5.8秒
fx-CG500.7秒3.2秒
fx-9860GIII1.1秒5.8秒

積分計算は fx-9860GIII よりは高速化していますが、fx-CG20 とほぼ同じ、fx-CG50 よりは遅くなります。
 
 
<目次に戻る>
周期関数の積分 [2020/05/23 修正]
積分計算にガウス・クロンロッド法が使われていることから、このアルゴリズムが苦手な多項式で表せない関数の代表選手として周期関数の積分を行って、タイムアウトする限界を比較してみます (Rad モード)。

積分3
機種計算できる nタイムアウトする n
fx-JP900
fx-5800P
fx-9860GIIn ≦ 60 Or (n = 64, 128, 256, 512)n ≧ 61 Or n = 2m (m≧10)
fx-CG20n ≦ 60 Or (n = 64, 128, 256, 512)n ≧ 61 Or n = 2m (m≧10)
fx-CG50n ≦ 60 Or (n = 64, 128, 256, 512)n ≧ 61 Or n = 2m (m≧10)
fx-9860GIIIn ≦ 60 Or (n = 64,128, 256, 512)n ≧ 61 Or n = 2m (m≧10)

fx-9860GIII での結果は、fx-CGシリーズや fx-9860GII と同じで、積分計算の内部ロジックは変更が無いと思われます。
 
 
<目次に戻る>
Casio Basic の互換性

Casio Basic について、少し詳しく調べます。

fx-9860GIII に搭載されている Casio Basic は、2006年に海外で発売された fx-9860G とそれ以降に発売されたグラフ関数電卓、そして fx-5800P に搭載さているものと同じカテゴリに属します。これらの Casio Basic は、構造化風コーディングができて意外に高機能です。当ブログでは、このカテゴリを新世代 Casio Basic と呼んでいます。

< 新世代Casio Basic搭載機 >
 - 2005年発売 fx-9860G (生産中止)
 - 2006年発売 fx-5800P
 - 2009年発売 fx-9860GII
 - 2010年発売 PRIZM fx-CG10 (北米のみ)、fx-CG20と同じ
 - 2012年発売 fx-CG20
 - 2013年発売 fx-FD10 Pro
 - 2017年発売 fx-CG50
 - 2020年発売 fx-9860GIII

新世代 Casio Basic については、Casio Basic の勧め を参考にしてください。

fx-9860GIII 搭載の Casio Basic は、fx-9860GII と異なる点が見つからず、完全互換と言って良いと思います。

 ⇒ fx-9860GII への移植 - 厄介な旧来の命令
 ⇒ Casio Basic 機種間の互換性

当ブログで公開している Casio Basic入門逆引きCasio BasicCasio Basicコマンドリファレンスプログラムライブラリ は、fx-5800Pfx-9860GII の違いを理解しておけば、そのまま fx-9860GIII に適用できます。
 
 
<目次に戻る>
カタログ機能

fx-9860GIII には、fx-9860GII と同様にコマンドの一覧を検索して入力できるカタログ機能が備わっていて、
[SHIFT] [4] (GATALOG) を押すと、カタログ画面が現れます。

Cat_GII  Cat_GIII_1 
左が fx-9860GII で、右が fx-9860GIII です。

左の fx-9860GII に比べて右の fx-9860GIII では機能が増えています。1つは HIST メニュー(履歴メニュー)の追加で、もう一つは一番上の行の "Catalog" の右に検索入力欄が追加されています。過去に検索して入力したコマンドを再入力するためには HIST メニューは大変便利です。 検索入力に1文字入れると絞り込み検索が行われるので、コマンドがうろ覚えの時に便利です。

CTGYメニューを選ぶとジャンル別一覧が現れます。

Cat_GIII_2  

履歴メニューは、fx-CG20 で追加され fx-CG50 でさらに改善されていますが、fx-9860GIII には fx-CG50 の機能が引き継がれています。 
 
<目次に戻る>
プログラムリスト [2020/04/07 追記]

ProgMenu 

fx-9860GIII のプログラムリストは、fx-9860GII と変わっていません。fx-CGシリーズのように、アルファベットキーを押した時にそのアルファベットで始まるプログラム名にジャンプする機能は無く、この点でも fx-9860GII と変わりません。


<目次に戻る>
Casio Basic の処理速度

fx-9860GII シリーズ用に作成したプログラムが そのまま fx-9860GIII で動作します。そこで、いくつかのプログラムの処理速度を fx-5800P、fx-9860GII、fx-CG50 と比較してみます。fx-9860GIII は g1m ファイルが動作します。

 計算主体のプログラム

PRIME - 素因数分解

ダウンロード
- fx-5800P用 pdf ファイル
- fx-9860GIII / fx-9860GII 用 g1m ファイル
- fx-CG50 / fx-CG20用 g3m ファイル

※ 使い方やプログラムソースについては、fx-9860GII への移植 - 素因数分解 参照

プログラムを起動すると...

Prime_1  
数値を入力して [EXE] で素因数分解を始め、[EXE] を押しながら結果を1行ずつ表示させる。
このプログラムの実行中は、ビジーマーカー以外に表示の更新が無いので、計算速度の比較に向いています。今回は、以下の10桁の数の素因数分解の計算時間を比較します。

計算する数値: 7,849,516,203 = 32 x 9811 x 88897

fx-CG50 の画面は以下のようになります。

   Prime_2 Prime_3 

機種別処理時間の比較
fx-CG50fx-9860GIIIfx-9860GIIfx-5800P
118 MHz59 MHz29 MHz---
46秒69秒89秒444秒
11.51.939.65
0.6711.297.05
0.520.7818.73

fx-9860GIII の計算処理は、fx-9860GII より 30% 程度速くなっていますが、fx-CG50 よりも33%遅くなっています。

計算速度の違いは、クロック数の違いと相関していることが分かります。

  
<目次に戻る>
動きのあるテキスト出力プログラム

PYTHA - ピタゴラス数探索

ダウンロード

- fx-5800P用 pdf ファイル
- fx-9860GII用 g1m ファイル
- fx-CG50 / fx-CG20用 g3m ファイル

※ 使い方やプログラムソースについては、fx-9860GII への移植 - ピタゴラス数 を参照。

このプログラムを起動すると1つめのピタゴラス数を表示して一旦停止します 。
 [EXE] キーを長押しすると、連続的に次々とピタゴラス数が表示し続けます。
そして、500個のピタゴラス数を探索して表示するまでの時間を計って比較します。
    Pytha_1

このピタゴラス数探索プログラムは、テキスト表示が常に更新し続けます。
500個のピタゴラス数が見つかるまでの時間を、機種別に比較してみました。

機種別処理時間の比較
fx-CG50
fx-9860GIII
fx-9860GII
fx-5800P
87秒
57.2秒93秒
441秒
10.661.075.07
1.5211.6324,0
0.940.6214.74

fx-9860GIII は、fx-9860GII の1.6倍弱の処理速度、fx-CG50 の1.5倍程度の処理速度になりました。
fx-9860GIII は、Locateコマンドによるテキスト更新速度が大きく向上しています。
 fx-9860GIIILocateコマンドによるテキスト更新速度は、fx-9860G以降の新世代Casio Basic搭載機で最速です。

 
<目次に戻る>
動きのあるグラフィック出力プログラム

MONTECAR - モンテカルロ法による円周率計算

ダウンロード
- fx-9860GII用 g1m ファイル
- fx-CG50 / fx-CG20用 g3m ファイル

※ 使い方やプログラムソースについては、fx-9860GII グラフィックス - モンテカルロ法 を参照。この記事では、実際の画面の変化を動画で見られます。

 GIII_Monteca_1 GIII_Monteca_2

[EXE]
キーを押すと、ランダムに点を打ち始め、それが円内にある割合から円周率を求める、モンテカルロシミュレーションプログラムです。このプログラムは、グラフィックスの Textコマンドと Plotコマンドによる表示更新を頻繁に行うものです。そこで、Text と Plot を500回繰り返す時間を、機種別に調べて比較してみました。
機種別処理時間の比較 
fx-CG50
fx-9860GIII
fx-9860GII
174秒
87.5秒
135秒
10.500.78
2.0011.54
1.20.651

fx-9860GIII は、fx-9860GII の 1.5倍の処理速度を達成。しかも fx-CG50 の 2倍の処理速度になりました。
fx-9860GIII は、TextコマンドとPlotコマンドによるグラフィックス更新速度が大幅に向上しています。

fx-9860GIIITextPlot コマンドによるグラフィックス更新速度は、fx-9860G 以降の新生代Casio Basic搭載機で最速です。

 
<目次に戻る>
さらなる高速化

fx-9860GIII は、Casio Basicによるテキストならびにグラフィックス出力処理速度が大幅に向上していることが分かったのですが、それでもゲームなどのピクセル単位での描画が多いプログラムには全く不十分です。プログラムをより高速化するには、現在のところ2つの方法があります。1つはチューンアップ (オーバークロック)ツール による高速化、もう一つはアドイン版 Casio Basic - C.Basic の利用です。

チューンアップ
これまで、fx-9860Gfx-9860GII そして fx-CG10 PRIZM / fx-CG20 そして fx-CG50 に対応したオーバークロックツールが、sentaro様により提供されています。いずれも比較的安全性が確保されており、私も愛用しています。但しオーバークロックは、最悪ROM に記録されている内容が損傷をうけて電卓が起動できなくなってもメーカー保証を受けられないので、自己責任で利用しましょう。

 Casio グラフ関数電卓を限界までチューンアップ

fx-9860GIII 向けには、チューンアップツール - Ftune3 が提供されています。 


本ブログでは、作者の sentaro様から直接サポートを受けられるように、以下の以下のエントリーを用意していて、そこでは Ftune3 のダウンロードと質問ができます。

グラフ関数電卓のオーバークロック - Ftune / Ptune -

安全に使う第一歩は、デフォルトの[F5]での設定を使うことです。


なお、チューンアップは、CPUコアクロックだけでなく、メモリバスクロック、I/Oバスクロック、ウェイトなどを機種に応じて調整します。

 
アドイン版 Casio Basic (C.Basic)
C.Basic は、fx-9860GII を含む fx-9860Gシリーズ、そして fx-CGシリーズに対応しています。開発者はチューンアップツールと同じ sentaro様です。

C.Basic は、純正Casio Basic のソースをほぼそのまま実行可能で、特にグラフィック描画の高速化は目を見張るものがあります。
どのくらい速いかは、ここ にある動画を見れば一目瞭然です。開発開始以来、現在でも国内外のユーザーの要望に応えつつ、デバッグや機能追加によるバージョンアップが継続しています。

現在では、fx-9860G シリーズ用の C.Basic for FXfx-CGシリーズ用の C.Basic for CG が公開されており、fx-9860GIII には C.Basic for FX が対応しています。

C.Basic のトップページ

 




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


 



keywords: CasioBasicプログラム電卓、fx-CG50
関連記事

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

fx-CG20 の概要

初版: 2016/04/18
追記: 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_M

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 と大きく異なるのは、高精細カラー液晶を搭載していることです。精細度が高いので画面の物理的なピクセル数が増えています。従って、物理座標系で動作するコマンド(PxlOnPxlOffPxlChgPxlTest、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-CG20の外観 / 概要

   5800P_9860GII_CG20 
 左から、fx-5800P、fx-9860GII、fx-CG20

主な仕様
機種fx-5800Pfx-9860GIIfx-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 15184 x 91.5 x 21.2188.5 x 89.5 x 20.6
重量 (g)150260220
電池 / 寿命単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 と同じです。

CG20_Text 

▲目次に戻る


 グラフィックス表示

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ピクセル単位で点を描画するためには、物理座標系で使える PxlOnPxlOffPxlChgPxlTest( ) コマンドが有効だと分かりました。

そこで、高精細カラー液晶で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


※ このプログラムファイルのダウンロード: THINLINE (細い:THIN + 線:LINE)

このプログラムについて、簡単に説明します。

まず、このプログラムを入力しますが、キー操作は fx-9860GII と殆ど同じなので、fx-9860GII で慣れていると fx-CG20 で楽に入力できます。上のリンクからダウンロードできます。
では、MAIN MENU から Program を選び...

MENU 

Program
 を起動し、THINLINE を選んで実行します。
   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入門G01Casio 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 コマンドを実行しています。

Thin_Circle 

続いて、

Blue SketchThin F-Line 1,1,127,63 ・・・(T-4)

では、色を Blue 、線の太さを SketchThin で1ピクセルに指定して、F-LINE コマンドで線を描画します。

THin_F-LINE 

さらに、

Red SketchThin Vertical 63 ・・・(T-5)

では、色を Red、線の太さを SketchThin で1ピクセル幅にして、垂直線描画 Vertical コマンドを実行しています。

Thin_Vertical 

今度は、水平線描画コマンド Horizontal に、色を Magenta に、線の太さを SketchThin で1ピクセルに指定して実行します。

Magenta SketchThin Horizontal 31 ・・・(T-6)

Thin_Horizontal 

最後に以下の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 指定となります。

Thin_PxlOn 

▲目次に戻る



3ピクセルの標準線描画プログラム

次に、上の 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)

これを実行すると、以下のように順次描画が進みます。

Norm_Circle Norm_F-LINR 

Norm_Vertical Norm_Horizontal 

Norm_PlotOn 

同じプログラムを fx-9860GII で実行すると、以下のような出力が得られ、同じようになりました。

9860GII_NormLine 

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 の楽しい部分ですね!

CLORTXT COLORTXT2 COLORTXT3 COLORTXT4 

ファイル名: 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文字入力すると、そのアルファベットから始まるファイル名までジャンプします。

ProgList3 

一方、fx-9860GII のプログラムリストでは、アルファベットキー入力によるジャンプ機能はありません。

ProgramList ×

fx-CG20 では、例えばアルファベット M を入力してみると...

CG20_ProgList 

...このようにジャンプしました。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 にもありません。プログラムだけでなく関数電卓としても使う人は多いと思うので、是非とも追加して欲しい必須機能だと思います。

▲目次に戻る
 
 
 複素指数関数
複素数を表示するように設定して、πi  を計算させてみると、fx-5800P はエラー、fx-9860GII は正しく -1 と結果を表示します。

5800と9860、複素数


fx-CG20 でも fx-9860GII と同様に、複素指数関数を正しく計算して、 -1 表示します。

 ComplexExp 

他にも、以下のような計算結果が正しく得られます。

 ComplexExp2 

このあたりも、fx-9860GII と同じになっています。

▲目次に戻る


積 分
 
積分計算速度の比較をしてみます。[2016/04/19 の部分を修正]
機種積分1積分2
fx-JP9005.5秒48.7秒
fx-5800P10.1秒56.7秒
fx-9860GII (SH4A)1.5秒8.4秒
fx-CG201.0秒5.8秒

fx-9860GII よりも速くなっていることが分かります。 

▲目次に戻る


周期関数の積分

積分計算にガウス・クロンロッド法が使われていることから、このアルゴリズムが苦手とする周期関数の積分を行って、タイムアウトする限界を比較してみます。

積分3
機種計算できる nタイムアウトする n
fx-JP900
fx-5800P
fx-9860GIIn ≦ 60 Or (n = 64, 128, 256, 512)n ≧ 61 Or n = 2m (m≧10)
fx-CG20n ≦ 60 Or (n = 64, 128, 256, 512)n ≧ 61 Or n = 2m (m≧10)

これについても、fx-9860GII と同じ結果となりました。

▲目次に戻る

 


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_Serial_Connection 

...但し、オーバークロックしていると、接続完了までは問題無いのですが、実際に転送を行おうとすると、エラーになります。
電卓間を 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例を挙げると、


Text_Parameter 

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.1GIN.g1mIN.g3m  が含まれているので、解凍して得られるプログラムファイル(拡張子が g1mg3m のもの) を電卓に全て転送すれば、プログラムが使えます。

※ 詳しくは、Casio Basic入門48 参照
 
▲目次に戻る
  
TIMEZONE

fx-9860GII用のソースコードを変更せず fx-CG20 に転送するだけで、完全に fx-CG20 で動作します。

※ ダウンロード
- fx-9860GII用 g1m ファイル一式 (ZIPファイル)
- fx-CG20用 g3m ファイル一式 (ZIPファイル)

これらのZIPファイルには、このプログラムで使う 入力ボックス2.1GINPI.g1m か INPI.g3m が含まれているので、解凍して得られるプログラムファイル(拡張子が g1mg3m のもの)を電卓に全て転送すれば、プログラムが使えます。

※ 使い方など詳しくは、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 とのソースレベルでの完全互換には、大きな価値があります。

▲目次に戻る
 
  
HITBLOW - Hit & Blow ゲーム

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 更新]
 
▲目次に戻る
 
 
処理速度

 計算主体プログラム例

PRIME - 素因数分解

fx-9860GII用のソースコードを変更せず fx-CG20 に転送するだけで、完全に fx-CG20 で動作します。

※ ダウンロード
- fx-5800P用 pdf ファイル
- fx-9860GII用 g1m ファイル
- fx-CG20用 g3m ファイル

※ 使い方やプログラムソースの詳細は、fx-9860GII への移植 - 素因数分解 参照

プログラムを起動したところ...

Prime1 

数値を入力して [EXE] で素因数分解を始め、[EXE] を押しながら結果を1行ずつ表示させる。

Prime2 Prime3 

<EXE> 表示が出たら、最後の行を示すので、これで素因数分解の全結果となります。


このように、プログラム PRIME を走らせると、計算中表示の更新は無く、CPUの殆どは計算に使われています。例外として、計算中はビジーマーカー表示がありますが、このプログラムは計算速度の比較に使えます。

そこで、以下の10桁の数の素因数分解の計算時間を比較してみます。

計算する数値: 7,849,516,203 = 32 x 9811 x 88897

fx-CG20 の画面は以下のようになります。

   Prime4 Prime5 

機種別、クロック別に計算処理時間の一覧は以下のようになりました。
CPUクロックfx-5800P 純正fx-CG20 純正fx-9860GII 純正fx-9860GII×C.Basic
? MHz444秒---------
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.10Ftune2 Ver 1.10Ftune2 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 最新バージョンを追記]
Ftune2Ptune2 については、fx-9860GII のオーバークロック を参照ください。ここから sentaro様のページを経由してダウンロードできます。ご質問があれば、このページにコメントを頂くか、sentaro様へ直接お問い合わせください。
 
▲目次に戻る
 
 
動きのあるテキスト表示プログラム例

PYTHA - ピタゴラス数探索

fx-9860GII用のソースコードを変更せず fx-CG20 に転送するだけで、完全に fx-CG20 で動作します。

※ ダウンロード
- fx-5800P用 pdf ファイル
- fx-9860GII用 g1m ファイル
- fx-CG20用 g3m ファイル

※ ピタゴラス数探索プログラムの使い方など詳細は、fx-9860GII への移植 - ピタゴラス数 を参照。

このように、テキスト表示で動きのあるプログラムでは、fx-CG20 は fx-9860GII と比べて速いかどうかを調べてみます。

   Pytha Pytha3  

[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 は、この例でもかなり速いですね。

▲目次に戻る
 
 
動きのあるグラフィックス・プログラム例

物理座標系で動作する描画コマンド


MONTECAR - モンテカルロ法による円周率計算

fx-9860GII用のソースコードを変更せず fx-CG20 に転送するだけで、完全に fx-CG20 で動作します。

※ ダウンロード

- fx-9860GII用 g1m ファイル
- fx-CG20用 g3m ファイル

※ ピタゴラス数探索プログラムの使い方など詳細は、fx-9860GII グラフィックス - モンテカルロ法 を参照。この記事では、実際の画面の変化を動画で見られます。

Montecar_1 Montecar_2 

Montecar_3 Montecar_4 

[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 を使いたいと思わせる魅力です。高精細カラー液晶を最大に活かしたプログラムをいずれ作ってみたいと思います。

▲目次に戻る
  
 
動きのあるプログラム

今回のプログラムの処理時間の比較結果をグラフにしてみます。

Calc 

計算処理だけなら、fx-CG20 は同じCPUクロックで fx-9860GII とほぼ同じ、fx-CG20 が若干遅い程度です。

同じCPU (SH4A) を使っているので、計算時間が変わるとは思えず、この差は演算中を示すビジーマーカーの表示によるものと考えられます。


Calc_Text  

計算だけでなく、テキスト表示の更新を頻繁に行うと、fx-CG20 は fx-9860GII よりも時間がかかるようになります。やはり fx-CG20 の画面更新処理が fx-9860GII よりも遅いことが分かります。


Cacl_Text_Graphics 

グラフィックスの頻繁な更新は、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 よりも消費電力が高いのがハードウェア上の欠点です。

▲ 目次に戻る




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


 


keywords: CasioBasicプログラミング入門プログラム関数電卓

リンク集 | ブログ内マップ
関連記事

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

Casio Basicでグラフィックス

Casio Basic入門 - Casio Basicでグラフィックス
<目次>


2015/10/21 更新
2015/12/07 追記
2020/05/21 追記



「Casio Basic でグラフィックス」を Casio Basic入門で連載を始めています。
 ⇒ Casio Basic入門G01 から (詳しくは Casio Basic入門 - 目次 - を参照)


これまでは、「Casio Basic を使ってみる」の連載で、Casio Basic入門50 まで続いています。グラフィックス プログラミングについては、敢えて別シリーズに分けており、今後も引き続き Casio Basic入門51 以降は続くと思います。

基本的に楽しんでやっているのですが、プログラムのネタを思いつくのは、用途や位置づけといった大枠からの発想に助けられることが多いので、一見面倒な感じの「電卓でグラフィックス プログラミングとは?」といったことも考えています。


このあたりは、今後まとまってくると思いますが、今のところ考えていることを白状しておきます。



プログラム電卓でグラフィックスプログラミングには否定的でした。今でも否定的な考えは少なからず残っています。

電卓にPCと同じ機能を求めるのではなく、電卓ならではの利点を活かしたプログラムを作って、利用すれば良いと主張してきました。特に、Casio のプログラム電卓のグラフィックス機能は、グラフ機能に特化(制限)されていて、LCDの解像度や描画速度を考えると、敢えて電卓でグラフィックスプログラミングを行うメリットは無い、というのが理由です。

では、私自身が Casio Basic のグラフィックス機能(グラフ機能) を本当に分かった上で、これを言っていたのかと問われると、幾つか味見程度のプログラミングを行った程度だったと、白状しなければなりません。

つまり、当ブログのポリシー「実際に試して、確認した内容を公開する」を考えると、中途半端です。

実は、これまでに以下のような記事を書いています。私の考えの変化がそのまま現れています。

グラフ関数電卓で観る感染症数理モデル
  • [2020/05/21] 微分方程式のグラフ化に挑戦。解くのは難しいので、差分形式の漸化式から離散的なデータを計算してグラフ化しました。ちょうどエクセルでグラフを描くのと同じことが電卓でできました。グラフを表す数式がなくてもグラフ化できるのは面白いと思いました。

fx-9860GII グラフィックス - モンテカルロ法
  • [2015/02/28] fx-5800P で作ったプログラムを fx-9860GII へ移植し、さらにグラフィックス表示を追加するために、プログラム電卓で初めてグラフィックスコードを書いた。グラフィックス描画は思った以上に処理時間がかかることが実際に分かり、画面全体を埋め尽くすようなグラフィックスプログラムには向かないと思った。
楽屋裏 - Casio Basicプログラミング
  • [2015/01/19]  少しだけグラフィックスプログラミングについて、考えを変え始めたことに触れている。
楽屋裏 - Casio Basic のグラフィックス描画
  • [2015/02/17] Casio Basic ではグラフィックス描画速度が遅いが、グラフィックスコマンドの動作に少し興味を持った。
楽屋裏 - Casio Basic のグラフィックス プログラミング
  • [2015/06/24] グラフィックスコマンドは、マニュアルには殆ど記載が無いので、実際に調べ始めたところ、従来の Basicコマンドから想像するだけでは全く分からない機能が隠されていること、プログラムに依っては処理速度が問題にならない用途も有りそうなこと、そして何よりも、実際に調べてみなければ判断するのは早いと思った。
  • そこで、Casio Basic でのグラフィックスプログラミングを徹底的に調べて、Casio Basic入門で取り上げることにした。
楽屋裏 - 酔っ払いの虫 (Drunk Bug)
  • [2015/07/20] Casio Basic のグラフィックスコマンドが少し分かってきて、安心してシミュレーションゲームを作ってみた。面白い。

「楽屋裏」で記事を書いていたのは、Casio Basic でのグラフィックスをブログで取り上げるかどうか、少しは考えていた証拠ですが、Casio グラフ関数電卓でグラフィックス プログラミングについて、本腰を入れて調べるまでに半年ほど逡巡していたことになります。そして、実際に詳しく調べ始めると、取扱説明書には全く説明されていない、重要な仕様が次々と分かってきています。宝探しのようで、やっていて面白いものです。

これまでに調べて分かっているだけでも、仕様を知っていれば有用なプログラミングが出来る一方で、仕様を知らないと想定外のバグで悩むことになりがちなのが、Casio Basic のグラフィックスコマンドだと分かってきました。


ところで、新世代Casio Basic は、Basicプログラミングの入門に良いと、これまで主張してきました。グラフィックスを使わないテキストベースでのプログラミングを前提にすれば、いまでも同じように考えています。

ところが、グラフィックスコマンドについては、かなり Casio 色が強い仕様になっていて、果たして Basic修得の入門に良いと言えないかも知れません。さらに、電卓でのグラフィックス・プログラミングでは、繰り返し処理を頻繁に使うように思うので、繰り返し処理に不慣れな初学者には、その分敷居が高いようにも思います。

グラフィックス・プログラミングには電卓特有のグラフ作成機能が活きてくるのかどうか、これはまだ分かりません。そこで、グラフィックスコマンドについて、さらに知見が深まるまで、結論は保留にしておこうと思っています。


先ずは Casio Basic でのグラフィックス プログラミングを徹底的に調べて、なにか楽しいプログラムを作ろうと思います。


[2015/12/07 追記]
Casio Basic グラフィックスコマンドの探索が進むにつれて、純正 Casio Basic では、グラフィックスコマンドが限られており描画速度が遅いので、本格的なグラフィックスプログラミングには向かないという感覚はやはり正しいと分かってきました。画面を埋め尽くすような描画やビットマップを扱うのは純正Casio Basic では無理があります。

ところが、「アドイン版高速・高機能Casio Basic」 の開発 "C:Basicプロジェクト" が始まり、テスト版でグラフィックスプログラムを作ってみると、速い処理速度でグラフィックスプログラムが走ることが経験できます。これの最大のポイントは、Casio Basic の上位互換なので、基本的にCasio Basic でプログラムが書ける点にあります。試しにライフゲームを作ってみたところ、現実的な速度でビットマップ処理が出来るので、Casio  Basicでグラフィックスプログラミングが面白くなってきました。

Casio Basic のグラフィックスコマンドを詳しく探索した結果を反映した「アドイン版 Casio Basic - C:Basic」という新しい選択肢が現実的になったので、電卓でグラフィックスプログラミングへの否定的な感覚がかなり薄くなっています。適材適所で開発処理系の使い分けると良いのです。



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


 





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

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


関連記事

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

グラフ関数電卓のオーバークロック - Ftune / Ptune -

更新 2020/05/21

Ftune / Ftune2 が Ver 1.40に、
Ftune3が Ver 2.40に、
Ptune2 が Ver 1.24に、
Ptune3 が Ver 0.24 にアップデート
[2020/03/28]



fx-CG50_s fx-9860GII
Casio fx-9860GII は fx-5800P よりも高速ですが、それでもより速く走らせたいプログラムがあります。

 ⇒ fx-9860GII への移植 - ピタゴラス数
 ⇒ fx-9860GII への移植 - 素因数分解

fx-9860GII は、fx-9860G のマイナーバージョンアップの3代目ですが、マイナーバージョンアップするたびに処理速度が遅くなると言う不思議(/_;) fx-9860G の時に入手していれば良かったと後悔するも、時既に遅し。 

ところが、sentaro様のオーバークロック・アドイン - Ftune 2 - に出会って、事態は一変しました。最新の fx-9860GII 搭載の CPU の潜在能力を引っ張り出すオーバークロックを行うと、最新バージョンが最も速くなるようです。 

現行機種の fx-9860GII (SH-4A搭載) は、ノーマルで 29MHz 程度。それを一気に 236MHz にしてくれます。その差は歴然で、上記の2つの移植記事の動画やデータを是非ご覧ください。

fx-9860GII は、対応SDKを用いてC言語でアドインプログラム開発でき、私は当初 プログラムをCで書いて処理速度を上げようと考えていましたが、Ftune2 を使えば、開発が楽な Casio Basic で十分だと言う気がしてきています。

どのくらい速くなるのか
グラフィックス描画のプログラムを作っていると、ノーマルクロックでは描画が遅くて、表示の確認に時間がかかることがあります。そんな時にオーバークロックを行えば、結果の確認が速くてストレスが減りますので、お勧めです。Ftune2 はプリセットクロックに簡単に切り替えができるのも、このような用途に向いています。通常はノーマルで必要な時だけクロックを上げて使えば良いのです。
 ⇒ fx-9860GII グラフィックス - モンテカルロ法

対応機種
対応機種は、fx-9860G シリーズ、fx-9860GII シリーズ、fx-CG20、fx-CG50、fx-9860GIII、fx-9750GIII、フランス専用機種 GRAPH35+EII に対応しています。


カシオ グラフ関数電卓のオーバークロック・アドイン

オーバークロックツールは、当ブログの読者 sentaro様の作品で、アドインプログラムです。

作品群の概要は、

CASIO グラフ関数電卓を限界までチューンアップ 

を参照。

作品群には、以下のものがあります。
  • Ftune: CPU に SH3 を搭載した fx-9860G シリーズ、fx-9860GII POWER USB GRAPHIC(末尾に 2 が付かない)が対象
  • Ftune2: CPU に SH4A を搭載した fx-9860GII USB POWER GRAPHIC 2 が対象
  • Ftune3: fx-9860GIII、fx-9750GIII、フランス専用機 Graph35+E II が対象
  • Ptune2: fx-CG20 / fx-CG10 が対象
  • Ptune3: fx-CG50 が対象


最新版 のダウンロード
Ftune Ver 1.40
Ftune2 Ver 1.40
Ftune3 Ver 2.40
Ptune2 Ver 2.24
Ptune3 については、こちら





祝!Ftuneシリーズのファンが、海外でも増えています(^_^)/
海外にて、Ptun2, Ftune2 の優秀性が認められ、絶賛の嵐!確実にファンを増やしています。詳しくは、Sentaro様のオリジナルダウンロードページの一番下にある、それぞれのリンクを見てください(^^;) 開発の苦労話しや、安全性を確保する考え方(保証はありませんが...)...などが読めます。和訳は各自で御願いします(^^;)
==========


このエントリーのコメント欄を利用して、Ftune2 / Ptune2 のQ&A を 開発者の sentaro 様自らご対応頂けます。私自身、幾つかの質問があるので、この機会に色々と教えて頂こうと思います。よろしく御願い致します。
 


オーバークロックとはどのようなものか? [2014/12/15 追記]

半導体製品を工場で作る際、当然のことながら品質管理されています。製造工程では、製品の性能や品質にはバラツキがあり、従って全く同じものが100%正確に製造されると言うことは絶対にありません。製品仕様は製造工程での性能や品質のバラツキを考慮して、保証できる安全な範囲で決定されます。さらには技術論だけではなく、販売戦略上の理由も仕様決定に影響があります。程度の差はありますが実際に行われていることです。通常はかなりの安全マージンを取っていることが多いようです。

言い変えると、実際に出荷される半導体製品は仕様より必ず性能が高いわけです。そして仕様と実際の個体の実力の差に目を付けて、仕様以上の実際の性能を引き出すのがオーバークロックです。製品保証外の動作をさせるので、保証対象外の行為だと言うことは自覚してください。

仕様以上の性能を引き出すオーバークロックは、メーカーの代わりに高負荷試験を行っているのと全く同じと言えます。幸運なら何も起こりません。逆に不運なら製品寿命が短くなる可能性があります。つまり、自己責任の世界です。

さて、Ftune2 は、過激な設定変更をさせないために設定範囲を決めるメニューを備えています。だから私は使用しており、本エントリーで取り上げさせて頂きました。

万一 fx-9860GII が故障したとしても、それはオーバークロックを行ったあなた自身の責任ということは、忘れないでください。当ブログで情報は提供しますが、不運な結果については作者や私が責任を負うことはありませんので、ご留意ください。


とは言っても...

CPUのクロック以外にも、種々の設定をバランス良く試してみることで、色々と違った結果が出ます。 
ベンチマークとして高い数値を狙うもよし、実際の Casio Basic を動かす時の高速化を狙うもよし、C言語で作ったアドインの高速化を狙うもよし、様々な魅力、魔力があるのが、オーバークロックの世界です。

私は、リスクを承知の上で、色々と遊ばせてもらっています。






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


 



keywords: fx-9860GIIプログラム関数電卓、オーバークロック

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


関連記事

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

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

やす (Krtyski)

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


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

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

なお管理人はカシオ計算機の関係者ではなく、Casio Basicが面白いと感じる1ユーザーです。


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

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

ブロとも申請フォーム

この人とブロともになる

QRコード
QR