e-Gadget 読者アンケート

2019/09/24
更新 2019/11/06
更新 2021/08/24

当ブログの管理人は、Twitter、Facebook などのアカウントは持っていますが、今のところ情報発信のために積極的に使っておらず、知人・友人の動向をアップデートするために使う程度です。友達数やいいね数を増やすことにあまり興味がありません。

メッセージアプリとしては、WhatsApp を主に海外の人達とのコミュニケーションでよく使っており、国内では 家族や一部の友人間で LINE も使っています。情報発信に積極的に使ってはおらず、相手の都合に合わせて使っています。

情報発信は、e-Gadgetのブログとホームページで行い、ブログの新着案内を Twitter で行う程度です。Windows95 が登場する前から、CompuServe や e-mail で公私ともに主に海外とやりとりし、NiFTY-Serve というパソコン通信にハマっていたので、当時としては先進的でした。

パソコン通信以降のネットワークでのオンライン コミュニティーの趨勢は、クローズドとオープンが交互にやってきたように感じています。

・パソコン通信:クローズド

・掲示板(BBS):オープン

・mixi、@nifty など:クローズド

・Twitter, Instagram、Facebook など:オープン

今は、会員制のクローズドのコミュニティサービスが増えつつあるように思います。

ネットコミュニケーションのユーザーには、それぞれに異なる世代分布がありそうです。若い人達は Facebook はあまり使わず、Instagram や TIKTOK は若い世代、Twitter は広い世代で使われている感じがします。

e-Gadget の読者は、プログラミングや関数電卓といった技術よりの好みを持った方が殆どだろうと思います。世代も広いのではないかと思いますが、ひょっとして中高年以上がマジョリティーのような気もしています。


そこで、ここにお越しになる方のネットの使い方や世代について、アンケートを作りました。
アンケートにはGoogleアカウントが必要ですが、androidスマホを持っていればおそらくお持ちだと思いますし、新しいアカウントは簡単に取れます。ご協力頂ければ嬉しいです。結果は皆さんで共有できます。1人1回しか回答できないようにしました。


こちらからお願い致します。
前の回答を表示 ⇒ 回答結果全体を見られます
回答を編集 ⇒ 前に回答した内容を変更できます





関連記事

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

プログラム電卓 温故知新 - 目次

プログラム電卓 温故知新
 - 搭載プログラミング言語に注目して、プログラム電卓の変遷を考える -

 
2021/06/11
更新 2021/07/12

特定のカシオ製プログラム電卓について、過去から現在に至る性能や仕様の変化を調べ、プログラミング言語を中心にカシオ製プログラム電卓の系譜を明らかにする。


目 次

温故知新 - FX-502P / FX-602P / FX-603P
 1. キーストローク式言語 - 携帯型プログラム電卓の普及

温故知新 - fx-4000P / fx-4500P / fx-4800P
 2. 新しいプログラミング言語の指向 - 可読性の向上

温故知新 - fx-7000G
 3. グラフ機能の追加

温故知新 - CFX-9850G
 4. Casio Basic 登場 - 可読性と機能の向上 (1)

温故知新 - CFX-9850GC PLUS
 5. 新世代 Casio Basic 登場前夜 - 可読性と機能の向上 (2)

温故知新 - fx-9860G
 6. 新世代 Casio Basic の登場 - プログラム機能の大幅な向上

温故知新 - fx-5800P
 7. 新世代 Casio Basic の特殊バージョン - 機能の改善

温故知新 - fx-9860GII
 8. 新世代 Casio Basic の進化 - Casio Basic とハードウェアの改善

温故知新 - fx-CG10 / fx-CG20
 9. 新世代 Casio Basic の高精細カラー液晶対応 - 飛躍的な表現力の向上  

温故知新 - fx-CP400
 10. CAS機能と構造化Basicの搭載 - 新言語の試み

温故知新 - fx-CG50
 11. 新世代Casio Basicの高速化と Pythonモード - バードウェア改善と新言語搭載


温故知新:番外編 - 関数電卓としての使い勝手

温故知新:番外編 - 電卓評価用の積分を解いてみた

温故知新:番外編 - 電卓評価用の複素数を解いてみた








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


 


keywords: プログラム関数電卓、プログラミング、Casio Basic、CFX-9850GC PLUS

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


関連記事

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

温故知新 - fx-CG10 / fx-CG20

プログラム電卓 温故知新
 - 搭載プログラミング言語に注目して、プログラム電卓の変遷を考える - 
<目次>


 
2021/08/15

過去から現在に至る性能や仕様の変化を調べ、プログラミング言語を中心にカシオ製プログラム電卓の系譜を明らかにする。


9. 新世代 Casio Basic の高精細カラー液晶対応 - 飛躍的な表現力の向上

 今回は 2012年3月の発売された fx-CG20 を取り上げる。このモデルはカシオのグラフ関数電卓として初めて16bitカラーの高精細液晶を搭載したモデルだ。
2012年3月発行のカシオ電卓総合カタログ

2010年10月に北米で PRIZM fx-CG10 として先行して発売されたモデルのインターナショナル版が fx-CG20 だ。日本国内で発売されるまで、1年半程度のタイムラグがある。

fx-9860GII の前期型 (SH3) と fx-9860GiI 後期型 (SH4A) のそれぞれの発売の間で fx-CG10, fx-CG20 が発売されている;
 - 2009年:fx-9860GII 前期型 (SH3) (国内)
 - 2010年:fx-CG10 (SH4A) (北米)
 - 2012年:fx-CG20 (SH4A) (国内)
 - 2013年:fx-9860GII 後期型 (SH4A) (国内)
fx-CG10 / fx-CG20 発売のタイミングで CPU を SH4A カスタムチップに切り替える事情があったのだろうと推測している (詳しくは不明)。 結果的に Casio Basic や各種機能を提供する OS は fx-CG10 以降のモデルで共通化されており、Casio Basic や各種機能がほぼ完成され、基本的な機能の大きな変化がない現状につながっていると考えられる。事実、2021年時点での最新モデル fx-CG50, fx-9860GIII, fx-9750GIII でも基本仕様に変化がない。

さて、fx-CG10 / fx-CG20 の最大の特徴は、384 × 216 ドットの高精細カラー液晶を搭載した点だ。これにより画面の表現力が大幅に向上し、イメージファイルだけでなく、出力されるフォントもきれいで明瞭になった。カラー液晶にはバックライトも搭載され、手元が多少暗くても使いやすい。イメージから曲線を切り出したり、フィッティングするなどグラフ機能が大幅に増強された。

搭載されているカラー液晶の出力は、フルカラー(24bitカラー:RGBそれぞれ 8bit, 16,777,216色)ではなく16bit カラー(R, B5bitG6bit, 65,536色) であり、この仕様は fx-CG50 にも引き継がれている。このカラー液晶は見る角度によって色合いが大きく変化する。

fx-CG10 / fx-CG20 は、fx-9860G や fx-9860GII と同様にOSのアップデートに対応している。Casio Basic はOSに含まれているので、OSアップデートに伴い Casio Basic もアップデートされる。2012年発売当初の fx-CG20 のOSバージョンは 1.04 であり、その後 2.00、2.02、3.10、3.11、3.12 とアップデートされている。

fx-CG10 / fx-CG20 に搭載されているCPUは、fx-9860GII 後期型と同じ日立 (ルネサス) 製 SH4Aカスタムチップ - SH7305 であり、CPUコアクロックが 58.98 MHzfx-9860GII 後期型 の倍になっている。関数計算は fx-9860GII 後期型 よりも速くなっているが、Casio Basic プログラムでのテキストおよびグラフィックス画面への出力は非常に遅い。


Casio fx-CG20
fx-CG20_Imagefx-CG20 は、国内では 2012年3月に発売開始された。

電卓総合カタログ / 関数電卓カタログ

取扱説明書 ハードウェア (e-Gadgetサイト)
取扱説明書 クイックスタートガイド (e-Gadgetサイト)

取扱説明書 ソフトウェア OS1.04 (e-Gadgetサイト) 
取扱説明書 ソフトウェア OS2.02 (e-Gadgetサイト)
取扱説明書 ソフトウェア OS3.11 (e-Gadgetサイト)
取扱説明書 ソフトウェア OS3.12 (e-Gadgetサイト) 

fx-CG10 / fx-CG20には、ルネサス(日立)製 SH4Aのカスタムチップ SH7305 が搭載されている。

メインメモリは 64KBで、Casio Basicを含めたOSが格納されて、残りの使える領域が 61KBある。アドインプログラムに使えるストレージメモリは  1.6MB ある。アドインプログラム作成用のSDKはカシオ純正品が提供されていない。




ハードウェア
fx-CG20 では、アルカリ電池に加えて、公式にニッケル水素充電池をサポートするようになった。電池寿命は短くなった。384×216ドットのカラー高精細液晶は出力が非常にクリアできれいになり、バックライトにより暗い部屋でも画面が見やすくなった。CPUコアクロックが 58.98 MHz と fx-9860GII の倍になった。重量は fx-9860GII よりもわずかに 5g だけ増え、寸法は背が高くなったが、薄くスリムになった。

 fx-CG20fx-9860GII 後期型fx-9860G
 電池 単四 x 4 (アルカリ/NiH) 単四 x 4 (アルカリ) 単四 x 4 (アルカリ)
 電池寿命 (メーカー測定基準) 140 時間 200 時間 220 時間
 サイズ (cm) 20.6 x 89.5 x 18.85 21.2 x 91.5 x 18.4 24 x 92.5 x 184.5
 重さ (g) 230 225 260
 液晶ディスプレイ解像度
 ・Casio Basic グラフィックス
 ・Casio Basic テキスト
 216 x 384 pixel
187 x 379 dot
・7 x 21 文字
 64 x 128 pixel
・63 x 127 dot
・7 x 21 文字
 64 x 126 pixel
・63 x 127 dot
・7 x 21 文字
 仮数 + 指数 10桁 + 2桁 10桁 + 2桁 10桁 + 2桁
 内部演算桁数 15桁 15桁 15桁
 プログラムメモリ容量 最大 ~62 KB 最大 ~62 KB 最大 63 KB
 メインメモリ (利用可能) ~61 KB ROM ~64 KB ROM ~63 KB ROM
 ストレージメモリ  ~1.6 MB SRAM ~1.5 MB SRAM ~1.5 MB SRAM
 プログラムファイル名 最大 8文字 最大 8文字 最大 8文字
 CPU SH4A (SH7305) SH4A (SH7305) SH3 (SH7705)
  クロック ~59 MHz ~29 MHz ~29 MHz
 - FLL:  14.75 MHz x900 14.74 MHz x900 14.74 MHz
 - PLL:  FLL x 16, 235.93 MHz FLL x 16, 235.93 MHz FLL x 2, 29.49 MHz
 - IFC: CPUコアクロック 1/4 PLL, 58.98 MHz 1/8 PLL, 29.49 MHz 1/1 PLL, 29.49 MHz
 - SFC: SuperHywayバスクロック 1/8 PLL, 29.49 MHz 1/81PLL, 29.49 MHz 1/1 PLL, 29.49 MHz
 - BFC: メモリバスクロック 1/8 PLL, 29.49 MHz 1/8 PLL, 29.49 MHz 1/1PLL, 29.49 MHz
 - PFC: I/Oクロック 1/16 PLL, 14.75 MHz 1/16 PLL, 14.74 MHz 1/16 PPL, 14.74 MHz
sentaro様作成の カシオグラフ関数電卓用チューンアップツールを使用して得られた結果。


デザイン
fx-CG20_with_cover
fx-CG10
が 2010年にグッドデザイン賞を受賞。
これまでに無いデザインで、半透明なカバーと相まって、おしゃれな高級電卓だと感じる。

なお、キーボード側の上半分を覆っている透明プラスチックは、極めてキズに弱く擦り傷が簡単についてしまう。意匠優先の設計だったと思われる。





OSのアップデート
2012年の発売当初のOSバージョンは 1.04、その後 2.00、2.02、3.11、3.12 へのアップデートファイルが提供された。
当初は、カシオ独自フォーマットの画像ファイルが、fx-CG10fx-CG20 では互換性がない仕様であったが、OS3.11 で互換性が得られるようになった。

関数電卓としての性能

分数表示と演算精度
235÷658 を計算すると 0.3571428571 と表示される。ここで、[F↔D]キーを押すと 5/14  と表示される。計算精度は内部15桁だ。

複素指数関数
eπi を計算してみる。計算できれば答えは -1 になる。

fx-CG20
では、正しく -1 と表示される。

e(5/3)πi を計算させると、1/2 - (√3/2)i と表示され、[F↔D]キーを押すと 0.5 - 0.8660254038i  と表示される。


積分計算
時間のかかる積分計算として次の計算の処理時間を調べる。角度単位は Rad でも Deg でも同じ結果になるが、Rad で実行。
Integral_! 
※ この積分の詳細はこちら

モデル名 (OSバージョン)結果出力処理時間
fx-9860G Slim (OS2.00)3.14159265421.5 秒
fx-9860G (OS2.01)3.14159265422.3 秒
fx-9860G Slim (OS1.11)3.14159265423.6 秒
fx-9860G (OS1.03)3.14159265426.2 秒
fx-5800Pπ173 秒
fx-9860GII [SH3] (OS2.00)π22.8 秒
fx-9860GII [SH4] (OS2.04)π24.1 秒
fx-9860GII [SH4] (OS2.09)π23.7 秒
fx-CG20 (OS2.00)π15.7 秒

fx-CG20 では fx-9860GII と同様に最初に π と出力し、[F↔D] キーで 3.141592654 と分数になる。
その処理速度は fx-9860GII の1.5倍程度速い。関数計算が大きく高速化した。

 
搭載言語 (Casio Basic) の概要

fx-CG10 / fx-CG20 では、表現力の高い高精細カラー液晶を搭載したことに伴い、Casio Basic の出力コマンドが追加された。モノクロ液晶の fx-9860Gfx-9860GII の上位互換となっている。

主なコマンド
 - 入力:?→, Getkey
 - 出力:" ", , Locate
 - テキスト画面消去:ClrText
 - 無条件ジャンプ:Goto / Lbl
 - 条件ジャンプ: (fx-4000P、7000G と同じ仕様)
 - カウントジャンプ:Isz, Dsz
 - 条件分岐:If / Then / Else / IfEnd
 - For ループ:For / To / Step / Next
 - Do ループ:Do / LpWhile
 - While ループ:While / WhileEnd
 - 制御コマンド:Break, Return, Stop
 - 比較演算: =,, >, <,,
 - 論理演算: And, Or, Not, Xor
 - 配列:無し
 - リスト:List (配列としても使える)
 - 行列:Mat (配列としても使える)、行列初期化コマンド
Dim
 - 各種関数

 主なグラフィックス コマンド
 - グラフ設定:CoordOn/CoordOff, GridOn/GridOff/GridLine,
        AxesOn/AxesOff/AxesScale, LabelOn/LabelOff
 - 座標系設定:ViewWindow,
        Xmax/Xmin/Xscl/Xfct, XdotYmax/Ymin/Yscl/
Yfct
 - 消去コマンド:ClrGraph, Cls
 - Sketchコマンド:Plot, PlotOn/PlotOff, PlotChg, Line,
          PxlOn, PxlOff, PxlChg
PxlTest(, Text,
          F-Line, Vertical, Horizontal, Circle,  
          SketchNormal, SketchThick, SketchBroken, SketchDot, SketchThin
 - カラーコマンド:Black, Blue, Red, Magenta, Green, Cyan, Yellow, Plot/Line-Color
 - 各種グラフ描画関連コマンド
  高精細カラー液晶搭載に伴って、追加されたコマンドを赤色で示している。


同じグラフを fx-CG20fx-9860GII で出力したものが下記で、高精細カラー液晶の表現力の高さがわかる

グラフィックス画面へのグラフの出力例
SIR_CG_1s SIR_FX_1s
* このグラフの詳細は ”グラフ関数電卓で観る感染症数理モデル" 参照

Casio Basic でグラフィックス画面に出力する場合、全画面を使えない。モノクロ液晶の fx-9860Gfx-9860GII のプログラムとの互換性を最大限確保するために、論理座標系で使う Plot, PlotOn, PlotOff, PlotChg コマンドはモノクロ画面での1ドットが fx-CG20 では 3×3 ピクセルで対応する仕様になっている。

CoordOn に設定しているとき Plot X,Y を実行するとカーソル が現れる。このカーソルを表示するために、画面の上端と左端の2ピクセル分の領域は Casio Basic でのグラフィックス出力領域から除外されている (仕様)。従って、新世代Casio Basic で出力できるグラフィックス画面の領域は、
・横: (127 × 3 -2) = 379 ピクセル
・縦: (63 × 3 -2) = 187 ピクセル

となる。

テキスト画面への出力例
COLORTXT2 CLORTXT
テキストとしての  の表示色をランダムに設定して出力したもの。

ファイル名: 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=1: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


fx-CG20 では、グラフィックス画面、テキスト画面両方とも画面上部にステータス領域が追加された。[SHIFT] - [MENU] で設定を確認しなくても現在の設定が常に表示されるので、利便性が大幅に向上した。


プログラムの作成と実行
プログラムの入力 - 互換性大
キーコード取得プログラムを入力した。コマンドを入力するためのキー (キープレス) は、fx-9860Gシリーズ から最新のモノクロ液晶搭載の fx-9860GIIIfx-9750GIII、そして高精細カラー液晶搭載モデル fx-CG10, CG20 そして fx-CG50 でも全く同じだ。そして純正Casio Basic の基本仕様も変更はなく、色設定のコマンドと高精細液晶を活かしたコマンドが追加された上位互換になっている。物理座標系のグラフィックコマンド PxlOn / PxlOff, PxlChg, PxlTest(, Text は高精細液晶に合わせた出力になり、解像度の低いモノクロ液晶搭載の fx-9860Gfx-9860GII と異なる点は注意が必要だ。 

ファイル名:GETKEY.g3m
Locate 1,1,"=== Get Keycode ==="
Locate 1,3,"Keycode ="
Locate 10,5,"Hit Any Key"
Locate 13,7,"[AC]:Quit"
Do
While Getkey
WhileEnd
Do:Getkey→K
LpWhile K=0
Locate 9,3,"=   "
(スペース6個)
Locate 11,3,K
LpWhile 1


CG20_GetKey   
この画面は、[EXE]キーを押して、キーコード31が表示されているところだ。
テキスト表示の範囲は21桁、7行で、fx-9860Gfx-9860GII と同じである。

プログラムリストの改善
fx-9860Gfx-9860GII シリーズでは、プログラムリストで何かアルファベットを1文字入力しても何も起こらない。
fx-CG20 では、プログラムリストで何かアルファベットを1文字入力すると、その文字で始まるファイル名にジャンプするようにない、利便性が向上した。ただし、アルファベットを複数入力したときの絞り込みには対応していない。

"M" を入力すると、Mで始まる最初のファイルにジャンプする例:
CG20_ProgList


プログラムの転送
リンク用ケーブル (下記2種類) で電卓とPC間、あるいは電卓同士を接続し、プログラムを転送できる。

 USBケーブル ⇒ 電卓とPC間のファイル転送
USB(mini) - USB(A) ケーブル (国内版には標準添付) でPCと接続すると、fx-CG20 は外部ドライブとして認識され、エクスプローラ でファイル操作が行える。

▶ 3pin - 3pin ケーブル (SB-62) ⇒ 電卓間のファイル転送
3pin端子のあるグラフ関数電卓同士でプログラム転送ができる。

3pin-3pinケーブル (SB-62)
まだ販売されているが、takumako様により互換ケーブルが有償頒布されている。SB-62 は fx-9860GIIシリーズや fx-CGシリーズの国内正規版には標準添付されていた。

3Pin_Serial_Connection

いずれの接続方法を用いた場合でも、fx-9860GII の Casio Basic プログラムファイルは拡張子 g1m で、これを fx-CG20 に転送すると自動的に拡張子 g3m に変換される。fx-9860GII から fx-CG20 へプログラムファイルを転送すると、ほとんどの場合はそのまま動作する。一方、fx-CG20 から fx-9860GII へプログラムファイルを転送すると fx-9860GII でサポートされていないコマンドは @ に置き換わり、この場合はエラーになるのでエラー部分を修正する必要がある。 


テキストベース・プログラム
モグラ叩きゲーム
このプログラムは、最初 fx-5800P で作成したものを モノクロ液晶の fx-9860Gfx-9860GII の液晶の解像度に合わせて移植し、さらにそれを fx-CG20 / fx-CG50 の高精細カラー液晶に合わせて変更・移植したものだ。
※ ダウンロード:アクションゲーム - "Whack-a-Mole (もぐら叩き)" 

画面解像度に合わせた変更は必要だが、それ以外は修正せずに動作できるように Casio Basic は互換性が高いことがわかる。

ちなみに、使用するプログラムファイルは、WHACKAMO, WAM, INPI の3つで、メインプログラム WHACKAMO を起動して遊ぶ。
CG20_WhackaMole_1 CG20_WhackaMole_2


fx-CG20 でのプログラミング

純正Casio Basic の問題点
プログラミング言語 Casio Basicfx-CG20 で高い完成度に達しており、実行速度以外に相違点が見当たらない。バグもそのまま引き継がれている。

出力文字列に : を含む行を ' でコメントアウトすると Syn ERRORになる
 ※対策:機切り文字 : の直後に ' を付加する
この問題は fx-9860G / fx-9860GIIfx-CG10 / fx-CG20 に残っており、カシオは操作マニュアルを修正して対応している。詳しくは 楽屋裏 - Casio Basic コメントアウト '  のバグ を参照

Do / While / For ループからの脱出に Dsz / Isz を使うと Syn ERROR になる
 ※対策:ループを Lbl / Goto に置き換えるか、ループ脱出に Break を使う
この現象は、fx-5800Pfx-9860G 以降のグラフ関数電卓で共通して確認されている。
⇒ 楽屋裏 - Dsz によるループ脱出 参照
カシオお客様サポートのご担当者とのやりとりの結果、ループの後 (必ずしも直後でなくても良い) に Goto 0:Lbl 0 と記述することでこのエラーを回避できることが分かっている (詳細は上記の記事を参照)。


処理速度の比較

四則演算および関数計算

加算プログラム
加算 

プログラムを起動し、N に 1000 を入力して実行時間を計る。

fx-CG20 のプログラム
fx7000G_source_adding_up_Isz2 AddTest_For 
繰り返しに Goto / Lbl を使うケース(左)と For を使うケース(右)の2通りで処理速度を調べる。


数値積分プログラム
関数 

この通史積分は、とね日記 - 席初の手帳型プログラム関数電卓 CASIO FX-502P (1979), FX602P (1981) で取り上げられているものをそのまま使わせていただく。

プログラム起動し、分割数として 1000 を入力して、時効時間を計る。

fx-CG20 のプログラム
FuncTest_Goto_9850 FuncTest_For_985 
繰り返しに Goto / Lbl を使うケース(左)と For を使うケース(右)の2通りで処理速度を調べる。

以前調べた結果と併せて、上記の計算速度のを比較結果を示す [2019/07/31 修正]
加算プログラム数値積分プログラム
機種実行時間比較実行時間 (秒)比較
FX-502P123.1 秒---1261.8 秒---
FX-602P111.2 秒1.1 倍716.5 秒1.8 倍
FX-603P37.8 秒3.3 倍166.2 秒7.6 倍
fx-4000P61.7 秒2.0 倍349.1秒3.6 倍
fx-4500P195.0 秒0.6 倍798.1 秒1.6 倍

fx-4800P
A=A+126.3 秒4.7 倍114.3 秒11.0 倍
Isz A21.2. 秒5.8 倍109.4 秒 11.5 倍
fx-7000GA=A+120.7 秒5.9 倍146.1 秒8.6 倍
Isz A19.3 秒6.4 倍143.2 秒8.8 倍
CFX-9850GGoto20.9 秒5.9 倍98.3 秒12.8  倍
For9.2 秒13.4 倍84.3 秒15.0 倍
CFX-9850GC PLUSGoto22.0 秒5.6 倍100 秒12.6 倍
For9.2 秒13.4 倍85.4 秒14.8 倍
fx-9860G [SH3]
OS 1.02
Goto2.1 秒61.6 倍14.6 秒86.4 倍
For1.3 秒94.7倍13.2 秒95.6 倍
OS 1.03Goto2.1 秒61.6 倍14.4 秒87.6 倍
For1.1 秒111.9 倍13.1 秒96.3 倍
OS 1.04Goto2.5 秒61.6 倍14.3 秒88.2 倍
For1.2 秒102.6 倍13.0 秒97.1 倍
OS 1.05Goto2.3 秒61.6 倍14.3 秒88.2 倍
For1.2 秒102.6 倍13.1 秒96.3 倍
OS 2.01Goto3.6 秒34.2 倍17.0 秒74.2 倍
For2.5 秒49.2 倍15.1 秒83.6 倍
fx-9860GII [SH3]OS2.00Goto4.5 秒27.4 倍18.2 秒69.3 倍
For2.7 秒45.6 倍15.6 秒80.9 倍
fx-9860GII [SH4]OS2.04Goto6.7 秒18.4 倍19.2 秒65.7 倍
For3.8 秒32.4 倍15.4 秒82.0 倍
OS2.09Goto6.8 秒18.1 倍18.8 秒67.1 倍
For3.9 秒31.6 倍15.0 秒84.1 倍
fx-CG20OS2.00Goto5.3 秒23.2 倍13.6 秒92.8 倍
For3.2 秒38.5 倍11.1 秒113.7 倍
記念すべき FX-502P を基準に、速度が何倍になっているかも併せて示している。

加算プログラムは、fx-9860GII 後期型よりは速くなっているが、SH3 プロセッサ搭載の fx-9860Gfx-9860GII 前期型 よりは遅い。

数値計算プログラムは関数計算を繰り返す計算で、fx-CG20 は最も速い結果になった。fx-CG20 では関数計算の高速化が図られている。ただし上で調べた "時間のかかる積分" での結果ほどの高速化 (1.5 倍) にはなっていないことから、ループ計算の高速化がそれほど相対的に高速化していないようだ。


グラフィックス描画
▶ ドット描画プログラム
fx-7000G のグラフィック画面が 95 x 63 ドットなので、それに合わせて fx-9860GII でも 95 x 63 ドットを塗りつぶして処理速度を比較する。

fx-7000G のプログラム
fx7000G_Dot DOT_fx7000G  

fx-CG20 のプログラム - Plot コマンド (論理座標系)
Dot_Plot  CG20_DOT2



ViewWindowsPlot コマンドなど、論理座標で動作するグラフィックスコマンドは モノクロ液晶の fx-9860Gfx-9860GII と画面表示上の互換性が確保されており、Plot コマンドで On にすると 3×3 ドットが On になる。

fxCG20 のプログラム - PxlOn コマンド (物理座標系)
Dot_Pxl  CG20_DOT

fx-CG20 は、216×384 ドットの高精細液晶を搭載しており、物理座標系で動作する PxlOn コマンドを使って 95×63 ドットを塗りつぶすと画面全体の 1/9 程度の面積になる (1/3 × 1/3 = 1/9)

これら PxlOnPlot で塗りつぶしときの処理速度を調べる。

PxlOnPlot
fx-7000G213 秒---------
CFX-9850G926.5 秒0.23 倍496.0 秒0.43 倍
CFX-9850GC PLUS901.1 秒0.24 倍929.1 秒0.23 倍
fx-9860G [SH3]OS 1.02251.2 秒0.85 倍255.7 秒0.83 倍
OS 1.03251.7 秒0.84 倍256.6 秒0.83 倍
OS 1.04252.8 秒0.84 倍257.5 秒0.83 倍
OS 1.05251.9 秒0.85 倍256.7 秒0.83 倍
OS 2.01295.8 秒0.72 倍301.7 秒0.71 倍
fx-9860GII [SH3]OS2.00300.0 秒0.71 倍306.2 秒0.70 倍
fx-9860GII [SH4]OS2.04288.3 秒0.74 倍291.1 秒0.73 倍
OS2.09301.7 秒0.71 倍303.8 秒0.70 倍
fx-CG20OS2.001419.2 秒0.15 倍1574.4 秒0.14 倍

fx-CG20 は、これまでのどのグラフ関数電卓よりも圧倒的に処理が遅い
上で調べたグラフの出力は高速であり、出力が極めて遅いドット出力との違いは、VRAMから画面への転送方法の違いによる。グラフはVRAMにグラフ全体を書き込んでから画面に転送しているが、ドットは1つづつ転送している。VRAMから画面への転送速度自体が遅いため、ドットを1つづつ転送すると極めて時間がかかる。

fx-CG20 はドットベースのグラフィックス出力を行うプログラムには全く不向きだといえる。


画面更新プログラム
VRAMから画面へのデータ転送が処理速度の最大のボトルネックになることが分かったので、頻繁に画面更新するプログラムを実行して、その処理速度を調べて比較する。

出力画面は、テキスト画面とグラフィックス画面 (グラフ画面) の2つがあり、これらは同時に表示できない。そこでテキスト画面の高速更新プログラムとグラフィックス画面の高速更新プログラムを別に作成したものを評価に利用する。

グラフィックス画面更新プログラムMONTECAR
CG20_MONTECAR
MONTECAR - モンテカルロ法による円周率計算プログラム

プログラムのダウンロード - Montecar.g3m を電卓に転送する
プログラムの詳細はこちら
ランダムに500回点を打って出力するまでの時間を調べる。


テキスト画面更新プログラムPYTHA
CG20_PYTHA
PYTHA - ピタゴラス数の計算プログラム

プログラムのダウンロード - PYTHA.g3m を電卓に転送する
プログラムの詳細はこちら
ピタゴラス数500個を計算して結果を出力するまでの時間を調べる。

PYTHAMONTECAR
CFX-9850G294.3 秒165.6 秒
CFX-9850GC PLUS295.2 秒0.99 倍267.7 秒0.62 倍
fx-9860GOS 1.0276.0 秒3.87 倍115.4 秒2.55 倍
OS 1.0389.3 秒3.30 倍115.8 秒2.54 倍
OS 1.0489.4 秒3.29 倍115.8 秒2.54 倍
OS 1.0589.2 秒3.30 倍115.9 秒2.54 倍
OS 2.0195.8 秒3.07 倍128.7 秒2.29 倍
fx-9860GII [SH3]OS2.00100.1 秒2.94 倍131.5 秒2.24 倍
fx-9860GII [SH4]OS2.0487.1 秒3.38 倍135.9 秒2.17 倍
OS2.0983.0 秒3.54 倍135.5 秒2.17 倍
fx-CG20OS2.00179.9 秒1.64 倍430.9 秒0.68  倍

GetkeyLocate を初めて搭載した CFX-9850G を基準に、処理速度の比率も合わせて示した。

テキスト画面への繰り返し出力する PYTHA、そしてグラフィックス画面に繰り返し出力する MONTECAR 双方とも、これまでのどのグラフ関数電卓よりも遅いことが、定量的に明らかになった。特にグラフィックス画面への出力は絶望的に遅い。


プログラム電卓の系譜 

単なる計算やグラフ表示のマクロ言語から脱却し、アプリケーションとしてのプログラムを書けるように進化した 新世代Casio Basic は、fx-9860GII シリーズで完成度の高いレベルになっていた。

2010年に北米で発売された高解像度カラー液晶搭載の fx-CG10 PRIZM は、解像度 240×320、16階調モノクロ液晶を搭載した TI Nspire  (2007年発売) TI Nspaire with Touchpad (2010年発売) に対抗するためだと考えられる。解像度はほぼ同じでカラー液晶で一歩先をいっていた。その後 16bitカラー、解像度 240×320 液晶搭載の TI Nspire CX が対抗モデルとして発売されている。

fx-CG20 の最大の特徴は、解像度 216×384, 16bitカラー液晶にあり、表現力を大幅に向上させた。それに伴い、内蔵言語である新世代Casio Basic に色指定コマンドとグラフィックス描画コマンドが追加された。グラフィックス描画コマンド (Sketchコマンド) は、論理座標系での描画においてはモノクロ液晶と同じ出力になるように互換性が維持されている。その結果1ドットが 3×3 ピクセルとして扱われる。一方、物理座標系で描画するグラフィックスコマンド PxlOn, PxlOff, PxlCng, PxlTest(, Text による出力はモノクロ液晶搭載モデルと互換性が無い。

グラフ関数電卓として fx-CG20fx-9860GII の後継機種とカシオは考えているようだが、内蔵言語の視点でいえばテキスト画面ならびにグラフィックス画面への出力が異常なまでに遅いのは、大きな欠点であり、fx-9860GII の高家モデルとは言いがたい。グラフ描画自体はそれほど遅くないが、内蔵言語で作る実用プログラムで画面更新を頻繁に行う場合は使い物にならない。fx-CG10 / fx-cG20 は、過渡的モデルだといえる。

そして、次のモデル fx-CG50 で画面更新の問題がようやく改善される。




温故知新 - FX-502P / FX-602P / FX-603P
温故知新 - fx-4000P / fx-4500P / fx-4800P
温故知新 - fx-7000G
温故知新 - CFX-9850G
温故知新 - CFX-9850GC PLUS

温故知新 - fx-9860G
温故知新 - fx-5800P
温故知新 - fx-9860GII
温故知新 - fx-CG10 / CG20
温故知新 - fx-CP400
温故知新 - fx-CG50
温故知新 - fx-9750GIII

温故知新:番外編 - 関数電卓としての使い勝手

温故知新:番外編 - 電卓評価用の積分を解いてみた
温故知新:番外編 - 電卓評価用の複素数を解いてみた


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


 


keywords: プログラム関数電卓、プログラミング、Casio Basic、CFX-9850GC PLUS

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


関連記事

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

温故知新 - fx-9860GII

プログラム電卓 温故知新
 - 搭載プログラミング言語に注目して、プログラム電卓の変遷を考える - 
<目次>


 
2021/08/12
追記修正 2021/08/15

過去から現在に至る性能や仕様の変化を調べ、プログラミング言語を中心にカシオ製プログラム電卓の系譜を明らかにする。


8. 新世代 Casio Basic の進化 - Casio Basic とハードウェアの改善

今回は、fx-9860GII を取り上げる。このモデルは、fx-9860G の直接の後継機として日本国内で 2009年10月に新発売された。
2009年10月発行のカシオ電卓総合カタログ

初めてOSがアップデートできるようになった 2005年発売 fx-9860G の後継モデルが fx-9860GII であり、OSのアップデートに対応している。Casio Basic はOSに含まれているので、OSアップデートに伴い Casio Basic もアップデートされる。

2009年発売当初の fx-9860GII のOSバージョンは 2.00 であり、その後 2.012.042.09 とアップデートされてきている。ところで、1つ前のモデル fx-9860G のOSバージョンは1.xx であったが、fx-9860GII の発売に合わせて fx-9860G 向けのOS2.0x のアップデーモジュールも提供された。1つ前のモデルにも同じ機能が適用可能になるというのは、製品寿命の長い電卓製品ならではの良いサービスだと思う。

fx-9860GII には前期型と後期型があり、それぞれで使われているCPUが異なる。前期型は fx-9860G と同じルネサス(日立)製SH3カスタムチップが使われており、後期型では SH4Aカスタムチップが採用されている。

前期型、後期型ともに、fx-9860GIIfx-9860GII SD が発売された。SDバージョンにはSDカードスロットがあり、プログラムやデータをSDカードに保存できる。純正 Casio Basic では、残念ながらSDカードにあるプログラムを起動することはできないが、SDカード内のデータは保存用として使え、さらにデータリンクによりPCに転送できる。SDバージョンは、青とシルバーの塗色が使われており高級化を感じさせる。

SH3が採用されている前期モデルは、fx-9860G(SD)fx-9860GII(SD) ともに、液晶の下に USB POWER GRAPHIC と表記されている。SH4A が採用されている後期型の fx-9860GII と fx-9860GII SD では、液晶の下の表記は末尾に 2 が追加され USB POWER GRAPHIC 2 と変化している。

fx-9860GII_SD_SH39860GII_SD_SH4  
 fx-9860GII SD (SH3)  fx-9860HII SD (SH4)    fx-9860GII (SH4)
  (バックライト点灯)   (バックライト消灯)   (バックライト消灯)

世界で初めて液晶のバックライトが搭載されたのが fx-9860G Slim であったが、元のモデルである fx-9860G や fx-9860G SD にはバックライトは搭載されていなかった。このバックライト機能が fx-9860GIIfx-9860GII SD に標準的に搭載された。fx-9860GII には Slim バージョンが用意されなかったが、有れば絶対に入手していたと思う。Slim バージョンがなかったのはとても残念だ (fx-9860G Slim の勧め)。

2009年に発売された fx-9860GII の Casio Basic を含むソフトウェアとハードウェアの基本機能は、2021年月現在の最新機種 fx-CG50fx-9860GIIIfx-9750GIII にほぼそのまま引き継がれており、Pythonモード以外で大きな違いがない。その完成度の高さを示している。


Casio fx-9860GII

fx-9860G2fx-9860GII が、国内では 2009年10月に発売開始された。

カタログ 

取扱説明書 ハードウェア (e-Gadgetサイト)

取扱説明書 ソフトウェア OS2.00 (e-Gadgetサイト) 
取扱説明書 ソフトウェア OS2.04 (e-Gadgetサイト)
取扱説明書 ソフトウェア OS2.09 (e-Gadgetサイト)

fx-9860GII / fx-9860GII SD の前期型には、ルネサス(日立)製SH3のカスタムチップ SH7705 が搭載され、液晶の下に USB POWER GRAPHIC と表記されている。後期型には、ルネサス(日立)製 SH4Aのカスタムチップ SH7305 が搭載され、液晶の下に USB POWER GRAPHIC 2 と表記されている。

メインメモリは 64KBで、Casio Basicを含めたOSが格納されている。アドインプログラムに使えるストレージメモリは 1.5MB ある。アドインプログラム作成用のSDKは、fx-9860G 用のものがそのまま使える。SDKの入手

fx-9860GII SD は、表のシルバー塗装と濃い青色塗装が施されている。


ハードウェア
fx-9860G に比べて fx-9860GII / fx-9860GII SD に液晶の応答性・視認性が少し悪化しているが、その一方でバックライト機能が追加された。バックライトにより暗い部屋でも画面が見やすくなり画期的だと思う。中高年の目にも優しい。
重量は fx-9860G より13.5%軽くなり、寸法も若干小さくなった。電池寿命は少し短くなった。

 fx-9860GII 後期型fx-9860GII 前期型fx-9860G
 電池 単四 x 4 (アルカリ) 単四 x 4 (アルカリ) 単四 x 4 (アルカリ)
 電池寿命 (メーカー測定基準) 200 時間 200 時間 220 時間
 サイズ (cm) 21.2 x 91.5 x 18.4 21.2 x 91.5 x 18.4 24 x 92.5 x 184.5
 重さ (g) 225 225 260
 液晶ディスプレイ解像度
 ・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 126 pixel
・63 x 127 dot
・7 x 21 文字
 仮数 + 指数 10桁 + 2桁 10桁 + 2桁 10桁 + 2桁
 内部演算桁数 15桁 15桁 15桁
 プログラムメモリ容量 最大 ~62 KB 最大 ~62 KB 最大 63 KB
 メインメモリ (利用可能) ~64 KB ROM ~64 KB ROM ~63 KB ROM
 ストレージメモリ  ~1.5 MB SRAM ~1.5 MB SRAM ~1.5 MB SRAM
 プログラムファイル名 最大 8文字 最大 8文字 最大 8文字
 CPU SH4A (SH7305) SH3 (SH7705) SH3 (SH7705)
  クロック ~29 MHz ~29 MHz ~29 MHz
 - FLL:  14.75 MHz x900 14.74 MHz 14.74 MHz
 - PLL:  FLL x 16, 235.93 MHz FLL x 2, 29.49 MHz FLL x 2, 29.49 MHz
 - IFC: CPUコアクロック 1/8 PLL, 29.49 MHz 1/1 PLL, 29.49 MHz 1/1 PLL, 29.49 MHz
 - SFC: SuperHywayバスクロック 1/8 PLL, 29.49 MHz 1/1 PLL, 29.49 MHz 1/1 PLL, 29.49 MHz
 - BFC: メモリバスクロック 1/8 PLL, 29.49 MHz 1/1 PLL, 29.49 MHz 1/1 PLL, 29.49 MHz
 - PFC: I/Oクロック 1/16 PLL, 14.75 MHz 1/1 PLL, 14.74 MHz 1/1 PPL, 14.74 MHz
sentaro様作成の カシオグラフ関数電卓用チューンアップツールを使用して得られた結果。


OSのアップデート
2009年の発売当初のOSバージョンは 2.00、その後 2.01、2.04、2.09 へのアップデートファイルが提供された。
これらアップデートは主に欧米での各種試験への電卓持ち込み対策である。


関数電卓としての性能

分数表示と演算精度
235÷658 を計算すると 0.3571428571 と表示される。ここで、[F↔D]キーを押すと 5/14  と表示される。計算精度は内部15桁だ。

複素指数関数
eπi を計算してみる。計算できれば答えは -1 になる。
1つ前の機種 fx-9850GC PLUS では複素指数関数の計算ができず、演算エラー(Ma ERROR) になったが、fx-9860G で初めて複素指数関数の計算に対応した。

一方、e(5/3)πi を計算させると、0.5 - 0.8660254038i と表示され、[F↔D]キーを押すと 1/2 - 0.8660254038i  と表示される (OSバージョンによらない)。なお、次の機種 fx-9860GII 以降は自然数式表示機能が徹底され、これを計算すると 1/2 - √3/2i と表示される。

積分計算
時間のかかる積分計算として次の計算の処理時間を調べる。角度単位は Rad で実行。
Integral_! 
※ この積分の詳細はこちら

モデル名 (OSバージョン)結果出力処理時間
fx-9860G Slim (OS2.00)3.14159265421.5 秒
fx-9860G (OS2.01)3.14159265422.3 秒
fx-9860G Slim (OS1.11)3.14159265423.6 秒
fx-9860G (OS1.03)3.14159265426.2 秒
fx-5800Pπ173 秒
fx-9860GII [SH3] (OS2.00)π22.8 秒
fx-9860GII [SH4] (OS2.04)π24.1 秒
fx-9860GII [SH4] (OS2.09)π23.7 秒

fx-9860Gシリーズは、最初の出力が分数になり、[F↔D] キーを押すと π と表示される。
fx-9860GII では、最初の出力が π となり、[F↔D] キーで 3.141592654 と分数になる。その処理速度は1つ前のモデル fx-9860G よりも遅く、fx-9860GII では CPUが SH3 の前期モデルよりも SH4A の後期モデルが遅い。

 
搭載言語 (Casio Basic) の概要

fx-9860G OS1.0x に対して、fx-9860GII OS2.0x では、文字列処理コマンド、Xor論理演算、Menuコマンド、乱数発生コマンドRanInt#, RanBin# などが追加された。さらに、グラフ描画機能に関連した表計算、統計計算などの大幅な機能追加に対応して大量のCasio Basicコマンドが追加された。

主なコマンド
 - 入力:?→, Getkey
 - 出力:" ", , Locate
 - テキスト画面消去:ClrText
 - 無条件ジャンプ:Goto / Lbl
 - 条件ジャンプ: (fx-4000P、7000G と同じ仕様)
 - カウントジャンプ:Isz, Dsz
 - 条件分岐:If / Then / Else / IfEnd
 - For ループ:For / To / Step / Next
 - Do ループ:Do / LpWhile
 - While ループ:While / WhileEnd
 - 制御コマンド:Break, Return, Stop
 - 比較演算: =,, >, <,,
 - 論理演算: And, Or, Not, Xor
 - 配列:無し
 - リスト:List (配列としても使える)
 - 行列:Mat (配列としても使える)、行列初期化コマンド
Dim
 - 各種関数

 主なグラフィックス コマンド
 - グラフ設定:CoordOn/CoordOff, GridOn/GridOff,
        AxesOn/AxesOff, LabelOn/LabelOff
 - 座標系設定:ViewWindow,
        Xmax/Xmin/Xscl/Xfct, XdotYmax/Ymin/Yscl/
Yfct
 - 消去コマンド:ClrGraph, Cls
 - Sketchコマンド:Plot, PlotOn/PlotOffPlotChg, LINE,
          PxlOn, PxlOff, PxlChg
PxlTest(, Text,
          F-Line, Vertical, Horizontal, Circle 
          SketchNormal, SketchThick, SketchBroken, SketchDot
 - 各種グラフ描画関連コマンド


プログラムの作成と実行
キーコード取得プログラムを入力した。コマンドを入力するためのキー (キープレス) は、1つ前のモデル fx-9860Gシリーズ から最新のモノクロ液晶搭載の fx-9860GIIIfx-9750GIII と全く同じだ。高精細カラー液晶搭載モデル fx-CG10, CG20 そして fx-CG50 でも 純正Casio Basic の基本仕様に変更はなく、カラー関係のコマンドや高精細液晶を活かしたコマンドが追加されているのみだ。

ファイル名:GETKEY
Locate 1,1,"=== Get Keycode ==="
Locate 1,3,"Keycode ="
Locate 10,5,"Hit Any Key"
Locate 13,7,"[AC]:Quit"
Do
While Getkey
WhileEnd
Do:Getkey→K
LpWhile K=0
Locate 9,3,"=   "
(スペース6個)
Locate 11,3,K
LpWhile 1


Keycode_9860GII  
この画面は、[EXE]キーを押して、キーコード31が表示されているところだ。
テキスト表示の範囲は21桁、7行で、fx-9860G から変化はない。


プログラムの転送
リンク用ケーブル (下記2種類) で電卓とPCを接続し、プログラムリンクソフトウェア (FA-124) を使ってリンクできる。

 PCリンク - USBケーブル使用
USB(mini) - USB(A) ケーブルが必要。多くの場合標準添付されている。

3pin-USBケーブル (SB-88) 使用
現在は製造中止品だが、takumako様により互換ケーブルが有償頒布されているので私はこれを利用している。

プログラムリンク ソフトウェア (FA-124)
カシオのサイトから無償ダウンロードできる。上記のいずれかのケーブルとFA-124で、プログラムファイルやデータファイルの転送や電卓の画面画像を取得できる。PCに転送されるプログラムファイルは、g1m ファイル (拡張子が g1m) になる。

▶ 電卓間のプログラム転送
3pin-3pinケーブル (SB-62) を使えば、3pin端子のあるグラフ関数電卓同士でプログラム転送ができる。

3pin-3pinケーブル (SB-62)
まだ販売されているが、takumako様により互換ケーブルが有償頒布されている。SB-62 は fx-9
860GIIシリーズや fx-CGシリーズの国内正規版には標準添付されていた。


テキストベース・プログラム
モグラ叩きゲーム
このプログラムは、最初 fx-5800P で作成したものを fx-9860GII の液晶解像度に合わせて変更・移植したものだ。
※ ダウンロード:アクションゲーム - "Whack-a-Mole (もぐら叩き)" 

使用するプログラムファイルは、WHACKAMO, WAM, INPI の3つで、メインプログラム WHACKAMO を起動して遊ぶ。
1つ前のモデル fx-9860G シリーズでは  OS2.0x 以上なら完全互換で動作する。

Whack-a-Mole_1_9860GII Whack-a-Mole_2_9860GII 


fx-9860GII でのプログラミング

純正Casio Basic の問題点
プログラミング言語 Casio Basicfx-9860G でほぼ完成しており、実行速度以外に相違点が見当たらない。バグもそのまま引き継がれている。

出力文字列に : を含む行を ' でコメントアウトすると Syn ERRORになる
 ※対策:機切り文字 : の直後に ' を付加する
この問題は fx-9860G にあり、fx-9860GIIfx-CGシリーズにも残っており、カシオは操作マニュアルを修正して対応している。詳しくは 楽屋裏 - Casio Basic コメントアウト '  のバグ を参照

Do / While / For ループからの脱出に Dsz / Isz を使うと Syn ERROR になる
 ※対策:ループを Lbl / Goto に置き換えるか、ループ脱出に Break を使う
この現象は、fx-5800Pfx-9860G 以降のグラフ関数電卓で共通して確認されている。
⇒ 楽屋裏 - Dsz によるループ脱出 参照
カシオお客様サポートのご担当者とのやりとりの結果、ループの後 (必ずしも直後でなくても良い) に Goto 0:Lbl 0 と記述することでこのエラーを回避できることが分かっている (詳細は上記記事参照)。


処理速度の比較

四則演算および関数計算

加算プログラム
加算 

プログラムを起動し、N に 1000 を入力して実行時間を計る。

fx-9860GII のプログラム
fx7000G_source_adding_up_Isz2 AddTest_For 
繰り返しに Goto / Lbl を使うケース(左)と For を使うケース(右)の2通りで処理速度を調べる。


数値積分プログラム
関数 

この通史積分は、とね日記 - 席初の手帳型プログラム関数電卓 CASIO FX-502P (1979), FX602P (1981) で取り上げられているものをそのまま使わせていただく。

プログラム起動し、分割数として 1000 を入力して、時効時間を計る。

fx-9860GII のプログラム
FuncTest_Goto_9850 FuncTest_For_985 
繰り返しに Goto / Lbl を使うケース(左)と For を使うケース(右)の2通りで処理速度を調べる。

以前調べた結果と併せて、上記の計算速度のを比較結果を示す [2019/07/31 修正]
加算プログラム数値積分プログラム
機種実行時間比較実行時間 (秒)比較
FX-502P123.1 秒---1261.8 秒---
FX-602P111.2 秒1.1 倍716.5 秒1.8 倍
FX-603P37.8 秒3.3 倍166.2 秒7.6 倍
fx-4000P61.7 秒2.0 倍349.1秒3.6 倍
fx-4500P195.0 秒0.6 倍798.1 秒1.6 倍

fx-4800P
A=A+126.3 秒4.7 倍114.3 秒11.0 倍
Isz A21.2. 秒5.8 倍109.4 秒 11.5 倍
fx-7000GA=A+120.7 秒5.9 倍146.1 秒8.6 倍
Isz A19.3 秒6.4 倍143.2 秒8.8 倍
CFX-9850GGoto20.9 秒5.9 倍98.3 秒12.8  倍
For9.2 秒13.4 倍84.3 秒15.0 倍
CFX-9850GC PLUSGoto22.0 秒5.6 倍100 秒12.6 倍
For9.2 秒13.4 倍85.4 秒14.8 倍
fx-9860G [SH3]
OS 1.02
Goto2.1 秒61.6 倍14.6 秒86.4 倍
For1.3 秒94.7倍13.2 秒95.6 倍
OS 1.03Goto2.1 秒61.6 倍14.4 秒87.6 倍
For1.1 秒111.9 倍13.1 秒96.3 倍
OS 1.04Goto2.5 秒61.6 倍14.3 秒88.2 倍
For1.2 秒102.6 倍13.0 秒97.1 倍
OS 1.05Goto2.3 秒61.6 倍14.3 秒88.2 倍
For1.2 秒102.6 倍13.1 秒96.3 倍
OS 2.01Goto3.6 秒34.2 倍17.0 秒74.2 倍
For2.5 秒49.2 倍15.1 秒83.6 倍
fx-9860GII [SH3]OS2.00Goto4.5 秒27.4 倍18.2 秒69.3 倍
For2.7 秒45.6 倍15.6 秒80.9 倍
fx-9860GII [SH4]OS2.04Goto6.7 秒18.4 倍19.2 秒65.7 倍
For3.8 秒32.4 倍15.4 秒82.0 倍
OS2.09Goto6.8 秒18.1 倍18.8 秒67.1 倍
For3.9 秒31.6 倍15.0 秒84.1 倍
記念すべき FX-502P を基準に、速度が何倍になっているかも併せて示している。

いずれの処理も 1つ前のモデル fx-9860G に比べて遅くなっている。そして、SH3搭載の前期モデルよりも、SH4搭載の後期モデルが遅くなっている。


グラフィックス描画
▶ ドット描画プログラム

fx-7000G のグラフィック画面が 95 x 63 ドットなので、それに合わせて fx-9860GII でも 95 x 63 ドットを塗りつぶして処理速度を比較する。

fx-7000G のプログラム
fx7000G_Dot DOT_fx7000G  

fx-9860GII のプログラム
Dot_Plot Dot_Pxl 9860GII_DOT
Plot を使うケース(左)と PxlOn を使うケースの2通りで処理速度を調べる。

PxlOnPlot
fx-7000G213 秒---------
CFX-9850G926.5 秒0.23 倍496.0 秒0.43 倍
CFX-9850GC PLUS901.1 秒0.24 倍929.1 秒0.23 倍
fx-9860G [SH3]OS 1.02251.2 秒0.85 倍255.7 秒0.83 倍
OS 1.03251.7 秒0.84 倍256.6 秒0.83 倍
OS 1.04252.8 秒0.84 倍257.5 秒0.83 倍
OS 1.05251.9 秒0.85 倍256.7 秒0.83 倍
OS 2.01295.8 秒0.72 倍301.7 秒0.71 倍
fx-9860GII [SH3]OS2.00300.0 秒0.71 倍306.2 秒0.70 倍
fx-9860GII [SH4]OS2.04288.3 秒0.74 倍291.1 秒0.73 倍
OS2.09301.7 秒0.71 倍303.8 秒0.70 倍

fx-9860GII は、fx-9860G より処理速度が少し遅くなっている。
PxlOn と Plot のドット描画処理速度は同レベルで、PxlOn の方が Plot よりも僅かに速い。この傾向は1つ前のモデル fx-9860G と同じである。

但し、fx-7000G よりは依然として遅い。加算処理や関数処理は大幅に高速化しているのに、ドット描画が大変遅いのは、画面更新時にVRAMからのデータ転送自体に時間がかかっているためだ。


画面更新プログラム
上で、画面へのデータ転送が処理速度のボトルネックになることが分かったので、頻繁に画面更新するプログラムを実行して、その処理速度を調べて比較することにする。

ところで新世代Casio Basic で用意されている Getkey コマンドは [AC]を除く全てのキーに個別に対応しており、Locate コマンドは任意の位置へのテキストの出力が可能であることから、画面がスクロールさせずに自由度の高いプログラムを書ける。そして画面がスクロールしないプログラムでは、画面更新速度が極めて重要な評価ポイントになる。これが適用できるのは、CFX-9850G, CFX-9850GC PLUSfx-9860G, そして 今回取り上げる fx-9860GII なので、これらのプログラムを比較する。

出力画面は、テキスト画面とグラフィックス画面 (グラフ画面) の2つがあり、これらは同時に表示できない。そこでテキスト画面の高速更新プログラムとグラフィックス画面の高速更新プログラムを作成して評価に利用することにする。

グラフィックス画面更新プログラム - モンテカルロ法にょる円周率計算 - MONTECAR
Monteca_9860GII  
プログラムのダウンロード - Montecar.g1m を電卓に転送する
プログラムの詳細はこちら
ランダムに500回点を打って出力するまでの時間を調べる。

テキスト画面更新プログラム - ピタゴラス数の計算 - PYTHA
9860GII_Pytha  
プログラムのダウンロード - PYTHA.g1m を電卓に転送する
プログラムの詳細はこちら
ピタゴラス数500個を計算して結果を出力するまでの時間を調べる。

PYTHAMONTECAR
CFX-9850G294.3 秒165.6 秒
CFX-9850GC PLUS295.2 秒0.99 倍267.7 秒0.62 倍
fx-9860GOS 1.0276.0 秒3.87 倍115.4 秒2.55 倍
OS 1.0389.3 秒3.30 倍115.8 秒2.54 倍
OS 1.0489.4 秒3.29 倍115.8 秒2.54 倍
OS 1.0589.2 秒3.30 倍115.9 秒2.54 倍
OS 2.0195.8 秒3.07 倍128.7 秒2.29 倍
fx-9860GII [SH3]OS2.00100.1 秒2.94 倍131.5 秒2.24 倍
fx-9860GII [SH4]OS2.0487.1 秒3.38 倍135.9 秒2.17 倍
OS2.0983.0 秒3.54 倍135.5 秒2.17 倍

GetkeyLocate を最初に搭載した CFX-9850G を基準に、処理速度の比率も合わせて示した。

MONTECAR はグラフィック画面にドットを繰り返し描画する。fx-9860G (SH3) に対して fx-9860GII (SH3) では処理速度が少し低下している。VRAMから画面への転送速度には変わりが無いので、機能が増えた分遅くなっていると思われる。

一方で、PYTHA はテキスト画面にテキストを繰り返し出力する。fx-9860GII (SH4) では テキスト出力の処理速度が上がっており、OS2.04 よりも OS2.09 でさらに向上している。fx-9860GII (SH4) は PLL回路の逓倍率 (14.75 MHz の整数倍) が fx-9860Gfx-9860GII (SH3) よりも 8 倍大きくなっていることが寄与していると思われる。


プログラム電卓の系譜 

単なる計算やグラフ表示のマクロ言語から脱却し、アプリケーションとしてのプログラムを書けるように進化した 新世代Casio Basic を搭載し、初めてアドインプログラムを走らせることができて、それを開発するための公式SDKを提供した野心的なモデルが fx-9860G シリーズであった。この基本仕様の完成度を高めた後継モデルが fx-9860GII シリーズだ。

北米の学校教育用に圧倒的シェアを有していた TI-84 Plus シリーズへの対抗モデルとして性能と価格で競争力のある fx-9860GII の前期モデル、後期モデルが投入されたが、シェアを大きく奪うまでには至らなかった。前期モデルと後期モデルの間に高精細カラー液晶搭載の fx-CG10 PRIZM を北米で発売しており、北米市場での競争の激しさを物語っている。

fx-9860GIIOS2.xx の機能が、1つ前のモデル fx-9860G のOSアップデートとして提供されたのも、競争力強化の施策の1つであろう。

fx-9860GII シリーズでは、新世代Casio Basic が大幅に拡張 (文字列処理、グラフ描画、表計算、統計計算のコマンドが追加増強) された。その背景にはグラフ関数電卓としてのグラフ描画機能、表計算機能、統計計算機能のアップデートがある。 

ハードウェア面では、fx-9860GII で液晶バックライトが標準装備されたのが大きな改善点だ。このバックライト機能は、2007年発売(ただし日本では未発売)の fx-9860G Slim で初めて搭載されたものだ。 

fx-9860GII は2009年発売のモデルであるが、そのハードウェアとソフトウェアの基本仕様は、2021年現在の最新モデル fx-CG50fx-9860GIIIfx-9750GIII にまで引き継がれていることから、カシオのグラフ関数電卓の基本仕様は fx-9860GII で完成したといえる。

fx-9860GII シリーズに続いて、表現力の高い高精細カラー液晶搭載モデルが投入されることになる。 




温故知新 - FX-502P / FX-602P / FX-603P
温故知新 - fx-4000P / fx-4500P / fx-4800P
温故知新 - fx-7000G
温故知新 - CFX-9850G
温故知新 - CFX-9850GC PLUS

温故知新 - fx-9860G
温故知新 - fx-5800P
温故知新 - fx-9860GII
温故知新 - fx-CG10 / fx-CG20
温故知新 - fx-CP400
温故知新 - fx-CG50
温故知新 - fx-9750GIII

温故知新:番外編 - 関数電卓としての使い勝手
温故知新:番外編 - 電卓評価用の積分を解いてみた
温故知新:番外編 - 電卓評価用の複素数を解いてみた




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


 


keywords: プログラム関数電卓、プログラミング、Casio Basic、CFX-9850GC PLUS

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


関連記事

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

温故知新 - fx-9860G

プログラム電卓 温故知新
 - 搭載プログラミング言語に注目して、プログラム電卓の変遷を考える - 
<目次>


 
2020/01/04
追記 2020/01/09
修正 2021/07/18
追記修正 2021/08/15

過去から現在に至る性能や仕様の変化を調べ、プログラミング言語を中心にカシオ製プログラム電卓の系譜を明らかにする。

6. 新世代 Casio Basic の登場 - プログラム機能の大幅な向上

今回は、CFX-9850GC PLUS の後継機として海外で2005年発売の fx-9860G を取り上げる。国内では、fx-5800P が先に発売され(2006年9月)、その後に fx-9860G が発売されている (2006年10月以降)。国内と海外で発売時期が異なるのは珍しいことではない。
2006年9月発行のカシオ電卓総合カタログ
2007年12月発行のカシオ電卓総合カタログ

カシオ機に搭載されたプログラム言語に初めて GetkeyLocate が追加され、画面スクロール無しで入出力ができるようになったのが CFX-9850G であった。これに関数やコマンド類が追加され、このシリーズ最終モデルが CFX-9850GC PLUS であったが、プログラミング言語としては色々な癖があり、使い易いとは言えなかった。

CFX-9850GC PLUS の後継機種として、その言語仕様ならびにエディタ画面が大幅に改善された fx-9860G が今回取り上げるモデルで、これには 新世代Casio Basic と言うべき言語が搭載されていた。

[2020/01/07 追記]
2005年に発売されてから、fx-9860G の基本設計はそのまま新機種 (例えば、2020年での fx-CG50) に引き継がれてているのは、このモデルの設計がどれだけ野心的であったか、そしてその完成度の高さを示している。


Casio fx-9860G

fx-9860G_Calc
fx-9860G が、欧米で2005年に発売され、国内では 2006年10月以降(おそらく2007年?)に発売された。

カタログ 取扱説明書 (e-Gadgetサイト) 

CPUは、日立製SH3のカスタムチップ SH7705を使っている。

メインメモリは 63KBで、Casio Basicを含めたOSが格納されている。

fx-9860G
の最大の特徴の1つはアドインプログラムが使えるようになったことで、1.5MBもの(当時としては広大な)ストレージメモリ(保存メモリ)を備えており、アドインプログラムを保存し走らせることが出来る。なお、アドインプログラム作成用のSDKも公開された。SDKの入手

なお、オーストラリア版の fx-9860G AU は、理由が不明だがストレージメモリが 0.8MB と少ない。

液晶周りの光沢コーティングや筐体裏側のつや消し黒塗装は高級感を演出していて、個人的には好きなデザインだ。

OSの変遷
2005年の発売当初のOSバージョンは 1.02、その後 1.03、1.04、1.05 とアップデートファイルが提供された。
2009年に fx-9860GII (SH3, OS2.00) が発売されると、機能を近づけた(実は完全に同じにならなかった) fx-9860G 用の OS2.00 へのアップデートファイルが公開され、その後 OS2.01 へのアップデートファイルが提供された。

OS 1.02 と 1.03 では Casio Basicの処理速度には大きな違いがなく、一連のバージョンの中で最速であった。OSがアップデートするにつれCasio Basicのデバッグと機能追加が進むが、一方で処理速度は遅くなる傾向は確実にある。実際にベンチマークを行った結果は以下に示す。

電源の変更
1つ前の機種 CFX-9850GC PLUS までは、駆動用電池に加えてバップアップ用電池を使っていた。fx-9860G も初期はバックアップ用のコイン型リチウム電池CR2032を用いていたが、そのうちバックアップ電池を使わずに単四電池4本のみでバックアップ機能を実現するようにマイナーアップデートされた。

fx-9860G_Battery_Case2 
左は コイン型リチウム電池 CR2032 を使うモデル、右は 単四4本のみでバックアップ機能のあるもの。バックアップ電池用の樹脂型が修正され、その跡が見てとれるのが興味深い。この電源周りのバージョンアップは特にアナウンスされないままマイナーバージョンアップされたようだ。

関数電卓としての性能

分数表示と演算精度
235÷658 を計算すると 0.3571428571 と表示される。ここで、[F↔D]キーを押すと 5/14  と表示される。計算精度は内部15桁だ。

複素指数関数
eπi を計算してみる。計算できれば答えは -1 になる。
1つ前の機種 fx-9850GC PLUS では複素指数関数の計算ができず、演算エラー(Ma ERROR) になったが、fx-9860G で初めて複素指数関数の計算に対応した。

一方、e(5/3)πi を計算させると、0.5 - 0.8660254038i と表示され、[F↔D]キーを押すと 1/2 - 0.8660254038i  と表示される (OSバージョンによらない)。なお、次の機種 fx-9860GII 以降は自然数式表示機能が徹底され、これを計算すると 1/2 - √3/2i と表示される。

積分計算 [2021/01/09 追記]
時間のかかる積分計算として以下の計算を調べる。
Integral_! 
※ 積分の詳細はこちら

モデル名 (OSバージョン)結果出力処理時間
fx-9860G Slim (OS2.00)3.14159265421.5 秒
fx-9860G (OS2.01)3.14159265422.3 秒
fx-9860G Slim (OS1.11)3.14159265423.6 秒
fx-9860G (OS1.03)3.14159265426.2 秒

fx-9860Gシリーズは、最初の出力が分数になり、[F↔D] キーを押すと π と表示される。
OSバージョンが 1.xx から 2.xx に変わると積分計算が速くなる。
同じOSバージョンでも、fx-9860G よりも fx-9860G Slim の方が速い。
 

搭載言語 (Casio Basic) の概要

fx-9860G OS1.0x では、CFX-9850GC PLUS の搭載コマンドと同一である。その後 OS2.01 では 次機種の fx-9860GII で追加された文字列処理や細かなコマンドと同じものが追加された。

主なコマンド (OS1.0x) [2020/01/07 修正 ※]
 - 入力:?→, Getkey
 - 出力:" ", , Locate
 - テキスト画面消去:ClrText
 - 無条件ジャンプ:Goto / Lbl
 - 条件ジャンプ: (fx-4000P、7000G と同じ仕様)
 - カウントジャンプ:Isz, Dsz
 - 条件分岐:If / Then / Else / IfEnd
 - For ループ:For / To / Step / Next
 - Do ループ:Do / LpWhile
 - While ループ:While / WhileEnd
 - 制御コマンド:Break, Return, Stop
 - 比較演算: =,, >, <,,
 - 論理演算: And, Or, Not
 - 配列:無し
 - リスト:List (配列としても使える)
  ※但し、x→Dim List 1 の初期化ができず、{1,2,3,4,5}→List 1 とする必要がある
  ※一方で、ClrList は正常動作する

 - 行列:Mat (配列としても使える)

  ※ {m,n}→Dim Mat A で初期化できず、ClirMat がないので行列機能はまだ不十分
 - 各種関数

1つ前の機種 CFX-9850GC PLUS の以下の問題は解消されている;
 - Then / Else 直後の改行:Syn ERROR になる
 - 行頭での改行 (空白行):Sys ERROR になる

 主なグラフィック コマンド [OS1.0x]
 - グラフ設定:CoordOn/CoordOff, GridOn/GridOff,
        AxesOn/AxesOff, LabelOn/LabelOff
 - 座標系設定:ViewWindow,
        Xmax/Xmin/Xscl/Xfct, XdotYmax/Ymin/Yscl/
Yfct
 - 消去コマンド:ClrGraph, Cls
 - Sketchコマンド:Plot, PlotOn/PlotOffPlotChg, LINE,
          PxlOn, PxlOff, PxlChg
PxlTest(, Text,
          F-Line, Vertical, Horizontal, Circle
 - 各種グラフコマンド

但し、Plot, PlotOn, PlotOff, PlotChg, PxlOn, PxlOff, PxlChg, Circle の詳細仕様は、CFX-9850GC PLUS と異なり、これらのコマンドのパラメータに X, Y を使えるが、これらのコマンドを実行すると論理座標系での X と Y の値が 変数 X と Y に自動的に入力される仕様を意識して X と Y を使う必要がある。


プログラムの作成と実行
キーコード取得プログラムを入力した。コマンドを入力するためのキー (キープレス) は、1つ前の CFX-9850GC PLUSfx-9860Gシリーズ、fx-9860GIIシリーズ、最新の fx-CGシリーズと全く同じだ。言語機能の基本仕様は1つ前の機種 (CFX-9850GC PLUS) から固まっていることが分かる

ファイル名:GETKEY
Locate 1,1,"=== Get Keycode ==="
Locate 1,3,"Keycode ="
Locate 10,5,"Hit Any Key"
Locate 13,7,"[AC]:Quit"
Do
While Getkey
WhileEnd
Do:Getkey→K
LpWhile K=0
Locate 9,3,"=   "
(スペース6個)
Locate 11,3,K
LpWhile 1


Keycode 
この画面は、[DEL]キーを押して、キーコード44が表示されているところだ。
なお、fx-9860G では アルファベットの小文字をプログラムで使えるようになった。
fx-9860GIIシリーズや fx-CGシリーズと同様に、テキスト表示の範囲は21桁、7行だ。

プログラムリスト
Program_List 
Program List には、アルファベット順にプログラム名 (ファイル名) が並んでおり、アルファベット順になっていなかった CFX-9850GC PLUS の入力順という仕様よりも大幅に使いやすく改善されている。

プログラムの編集
プログラム編集画面は、挿入モードになっており、使いやすい。

1つ前の CFX-9850GC PLUS まではプログラム編集は上書きモードになっており、極めて使いづらかった。ちなみにスタンダード関数電卓 (fx-991MSなど) も上書きモードになっていた。実は、2005年以降発売のプログラム電卓 (fx-9860G) やスタンダード関数電卓 (fx-991ES) から一斉に上書きモードに変更されている。

おもしろいことに、シャープも40周年記念モデルが発売されたほぼ同じ時期に上書きモードから挿入モードに一斉に切り替えられているようだ。余談だが、ソニー創業者の一人である井深大氏の著書(「ボスニアの夜は更けて」だったと思う...)で、"技術の連通管現象" ということを書かれている。世の中の技術の進歩はどこかで底通していて、そのレベルは同じように上がる、どこかだけのレベルが上がることはない、といった意味のことであり、これが思い出される。
 
パソコンで文章を書く時は、通常は挿入モードで利用しているはずで、上書きモードは必要な時のみ切り替えて使うと思う。fx-9860Gシリーズ以降のプログラム電卓では、プログラム編集画面は常に挿入モードになっていて、必要な時に [SHIFT]-[DELL](INS) と押して上書きモードに切り替えて使う。

以前のプログラム電卓やポケコンでは、区切り文字を使ってプログラムをズラズラと1行に書いていた。fx-9860G において、そのく仕様から完全に決別したと言える。


プログラムの転送
3Pin_USB_Link PCリンク : 3Pin - USB ケーブル利用
3pin-USBケーブル (SB-88) と プログラムリンク ソフトウェア (FA-124) を使えばPCリンクや電卓の画面取得が可能になる。
3pin-USBケーブル (SB-88)
現在は製造中止品だが、takumako様により互換ケーブルが有償頒布されているので私はこれを利用した。
プログラムリンク ソフトウェア (FA-124)
カシオのサイトから無償ダウンロードできる。

 電卓間転送
3pin-3pinケーブル (SB-62) を使えば、3pin端子のあるグラフ関数電卓とプログラムの転送ができる。
3pin-3pinケーブル (SB-62)
まだ販売されているが、takumako様により互換ケーブルが有償頒布されている。SB-62 は fx-9860Gシリーズや fx-CGシリーズの国内正規版には標準添付されている。

USB_USB_Link PCリンク:USB (mini) - USA (A) ケーブル利用 
fx-9860G に同梱される USB(mini)-USB(A)ケーブルを用いると、3Pin-USBケーブル利用よりも高速に転送可能だ。プログラムリンクソフトウェア (FA-124) を使えばPCリンクや電卓の画面取得が可能になる。


ところで、PCへ転送されるファイルは g1m ファイル (拡張子 g1m) だ。










テキストベース・プログラム
モグラ叩きゲーム
以前 fx-9860GII で作ったアクションゲーム - "Whack-a-Mole (もぐら叩き)" を転送した。fx-9860G の OS2.0 以上なら完全互換で動作した。ここで転送したプログラムファイルは、WHACKAMOWAMINPI の3つだ。

WAM_1 WAM_2 

fx-9860G OS1.02OS1.05 では、RanInt#( 関数が備わっていないので、RanInt#( の代わりに Int(Ran#( を使って同等に動作するように変更する必要があった。OS2.0 以上にアップデートすれば、RanInt#( 関数が追加さるので、fx-9860GII と完全互換で動作するようになる。


fx-9860G でのプログラミング

1つ前の CFX-9850GC PLUS からの改善点
CFX-9850GC PLUS のプログラミング言語 Casio Basic は数々の問題が残っていたが、fx-9860G で殆ど改善された。以下に個別の項目を列挙する。

空行 (改行のみの行) はSyn ERROR になる
 この問題は改善された。これは、昔の1行プログラミングの時代の影響が解消された。

Then / Else の直後を改行すると Syn ERROR になる
 この問題は改善された。上の空行禁止の問題の解消と併せて、If ステートメントの可読性が大いに向上した。

ループ (While / Do) の2重構造で、内側のループと If の入れ子構造が共存すると IfEnd のところで Syn ERROR になる
 この問題は改善された。このエラーは、While / DoIf の構造制御のスタック管理に失敗しているバグと考えられ、構造制御ステートメント While / Do を追加した直後に潜り込んだバグだったと思われる。 

出力 "" で内部カーソルが改行されない
 この問題は改善された。

行末に区切り文字 : があると Syn ERROR になる
 この問題は改善された。

出力文字列に : を含む行を ' でコメントアウトすると Syn ERRORになる
 ※対策:機切り文字 : の直後に ' を付加する
この問題は、fx-9860Gだけでなく、fx-9860GII や fx-CGシリーズにも残っており、カシオは操作マニュアルを修正して対応している。詳しくは 楽屋裏 - Casio Basic コメントアウト '  のバグ を参照

出力命令 " " では1文字ごとに出力する
"Strings" を実行するとタイプライターのように、左から1文字づつ出力されることは無くなった

fx-9860G OS1.0x では実装されていない関数やコマンドでの Syn ERROR
例えば、Whack-a-Mole (モグラ叩きゲーム) で使っている、RanInt#( は OS2.00 以降にはあるが、OS1.0x には無い。そこで、以下のようにすれば対抗可能だ。 
- RanInt#(1,9)Int(90Ran#÷10)+1 に変更
- RanInt#(1,3)Int(30Ran#÷10)+1 に変更
- RanInt#(0,9)Int(10Ran#) に変更

Do / While / For ループからの脱出に Dsz / Isz を使うと Syn ERROR になる
 ※対策:ループを Lbl / Goto に置き換えるか、ループ脱出に Break を使う
この現象は、fx-5800Pfx-9860G 以降のグラフ関数電卓でも存在することが確認されている。
⇒ 楽屋裏 - Dsz によるループ脱出 参照
カシオお客様サポートのご担当者とのやりとりの結果、ループの後 (必ずしも直後でなくても良い) に Goto 0:Lbl 0 と記述することでこのエラーを回避できることが分かっている (詳細は上記記事参照)。


処理速度の比較

四則演算および関数計算

加算プログラム
加算 

プログラムを起動し、N に 1000 を入力して実行時間を計る。

fx-9860G のプログラム
fx7000G_source_adding_up_Isz2 AddTest_For 
繰り返しに Goto / Lbl を使うケース(左)と For を使うケース(右)の2通りで処理速度を調べる。


数値積分プログラム
関数 

この通史積分は、とね日記 - 席初の手帳型プログラム関数電卓 CASIO FX-502P (1979), FX602P (1981) で取り上げられているものをそのまま使わせていただく。

プログラム起動し、分割数として 1000 を入力して、時効時間を計る。

fx-9860GS のプログラム
FuncTest_Goto_9850 FuncTest_For_985 
繰り返しに Goto / Lbl を使うケース(左)と For を使うケース(右)の2通りで処理速度を調べる。

以前調べた結果と併せて、上記の計算速度のを比較結果を示す [2019/07/31 修正]
加算プログラム数値積分プログラム
機種実行時間比較実行時間 (秒)比較
FX-502P123.1 秒---1261.8 秒---
FX-602P111.2 秒1.1 倍716.5 秒1.8 倍
FX-603P37.8 秒3.3 倍166.2 秒7.6 倍
fx-4000P61.7 秒2.0 倍349.1秒3.6 倍
fx-4500P195.0 秒0.6 倍798.1 秒1.6 倍

fx-4800P
A=A+126.3 秒4.7 倍114.3 秒11.0 倍
Isz A21.2. 秒5.8 倍109.4 秒 11.5 倍
fx-7000GA=A+120.7 秒5.9 倍146.1 秒8.6 倍
Isz A19.3 秒6.4 倍143.2 秒8.8 倍
CFX-9850GGoto20.9 秒5.9 倍98.3 秒12.8  倍
For9.2 秒13.4 倍84.3 秒15.0 倍
CFX-9850GC PLUSGoto22.0 秒5.6 倍100 秒12.6 倍
For9.2 秒13.4 倍85.4 秒14.8 倍

fx-9860G

OS 1.02
Goto2.1 秒61.6 倍14.6 秒86.4 倍
For1.3 秒94.7倍13.2 秒95.6 倍
OS 1.03Goto2.1 秒61.6 倍14.4 秒87.6 倍
For1.1 秒111.9 倍13.1 秒96.3 倍
OS 1.04Goto2.5 秒61.6 倍14.3 秒88.2 倍
For1.2 秒102.6 倍13.0 秒97.1 倍
OS 1.05Goto2.3 秒61.6 倍14.3 秒88.2 倍
For1.2 秒102.6 倍13.1 秒96.3 倍
OS 2.01Goto3.6 秒34.2 倍17.0 秒74.2 倍
For2.5 秒49.2 倍15.1 秒83.6 倍
記念すべき FX-502P を基準に、速度が何倍になっているかも併せて示している。

加算処理、数値積分(関数処理) は格段に高速化し、FX-502P の 100倍程度だ。Goto / Lbl ループより For の方が倍近く速い。
OSのバージョンにより、処理速度の差が顕著に表れている。OS 1.03 と OS 1.04 が最も高速だ。
次機種 fx-9860GII の登場に併せてがOS 2.01 へのアップデートファイルが提供され、使える関数が増強された。但し処理速度は遅くなった。


グラフィックス描画
▶ ドット描画プログラム

fx-7000G のグラフィック画面が 95 x 63 ドットなので、それに合わせて fx-9860G でも 95 x 63 ドットを塗りつぶして処理速度を比較する。

fx-7000G のプログラム
fx7000G_Dot DOT_fx7000G  

fx-9860G のプログラム
Dot_Plot Dot_Pxl 
Plot を使うケース(左)と PxlOn を使うケースの2通りで処理速度を調べる。

PxlOnPlot
fx-7000G213 秒
CFX-9850G926.5 秒0.23 倍496.0 秒0.43 倍
CFX-9850GC PLUS901.1 秒0.24 倍929.1 秒0.23 倍
fx-9860GOS 1.02251.2 秒0.85 倍255.7 秒0.83 倍
OS 1.03251.7 秒0.84 倍256.6 秒0.83 倍
OS 1.04252.8 秒0.84 倍257.5 秒0.83 倍
OS 1.05251.9 秒0.85 倍256.7 秒0.83 倍
OS 2.01295.8 秒0.72 倍301.7 秒0.71 倍

fx-9860G では、CFX-9850GC PLUS よりも3倍程度高速化している。
また1つ前の CFX-9850GC PLUS では、PxlOn によるドット描画は Plot の2倍程度の処理時間であったが、fx-9860G では PxlOnPlot は同等レベル、PxlOn が僅かに高速であった。

但し、fx-7000G よりは依然遅い。加算処理や関数処理は大幅に高速化しているのに、ドット描画が大変遅い理由として画面更新が大変遅いことが挙げられる。


画面更新プログラム
上で、画面へのデータ転送が処理速度のボトルネックになることが分かったので、頻繁に画面更新するプログラムを実行して、その処理速度を調べて比較することにする。

ところで Getkey コマンドが返すキーコードは、テンキーや[EXE]キーだけでなく、[AC]を除く全てのキーに対応しており、Locate コマンドで任意の位置への出力が可能なので、プログラムの自由度が大きく、画面がスクロールしないプログラムを書ける。そして画面がスクロールしないプログラムでは、画面更新速度は重要な評価ポイントになる。これが適用できるのは、CFX-9850G, CFX-9850GC PLUS そして fx-9860G なので、これらのデータを比較する。

出力画面は、テキスト画面とグラフィックス画面 (グラフ画面) の2つがあり、これらは同時に表示できない。そこでテキスト画面の高速更新プログラムとグラフィックス画面の高速更新プログラムを作成して評価に利用することにする。

グラフィックス画面更新プログラム - モンテカルロ法にょる円周率計算 - MONTECAR
Moneca_fx-9860G 
プログラムのダウンロード - Montecar.g1m を電卓に転送する
プログラムの詳細はこちら
ランダムに500回点を打って出力するまでの時間を調べる。

テキスト画面更新プログラム - ピタゴラス数の計算 - PYTHA
Pytha_fx9860G 
プログラムのダウンロード - PYTHA.g1m を電卓に転送する
プログラムの詳細はこちら
ピタゴラス数500個を計算して結果を出力するまでの時間を調べる。

PYTHAMONTECAR
CFX-9850G294.3 秒165.6 秒
CFX-9850GC PLUS295.2 秒0.99 倍267.7 秒0.62 倍
fx-9860GOS 1.0276.0 秒3.87 倍115.4 秒2.55 倍
OS 1.0389.3 秒3.30 倍115.8 秒2.54 倍
OS 1.0489.4 秒3.29 倍115.8 秒2.54 倍
OS 1.0589.2 秒3.30 倍115.9 秒2.54 倍
OS 2.0195.8 秒3.07 倍128.7 秒2.29 倍

GetkeyLocate を最初に搭載した CFX-9850G を基準に、処理速度の比率も合わせて示した。

MONTECAR はグラフィック画面にドットを繰り返し描画する。fx-9860G での処理速度向上は3倍以上になった。PYTHA はテキスト画面に文字を繰り返し出力する。fx-9860G での処理速度は 2.3~2.5倍程度となった。これらの比較から、fx-9860G ではテキスト出力、グラフィックス出力共に速くなり、グラフィックス出力高速化がより顕著である。

fx-9860G のOS が 1.0x から 2.01 にアップデートされると、明らかに画面出力が遅くなったことも併せて分かる。


プログラム電卓の系譜 

単なる計算やグラフ表示のマクロ言語から脱却し、アプリケーションとしてのプログラムを書けるように進化した 新世代Casio Basic を搭載したのが fx-9860G だ。後からアップデート可能なOSとアドインプログラムを格納できるフラッシュメモリを搭載し、アドインプログラムを開発するための公式SDKを提供するなど、カシオのプログラム電卓の中で極めて大きな進化を遂げた野心的なモデルであり、現行モデルの基本設計がこのモデルで固まった。

1999年に登場した TI-83 Plus が同様のコンセプトを有しており、それを取り込んだ仕様になっている。その後 2004年に発売された TI-84 Plus への対抗モデルが fx-9860G 発売の背景にあると考えるのが妥当であろう。

TI-83 Plus 内蔵プログラミング言語は、TI-Basic、マシン語、アセンブラ、C言語であるが、カシオは Casio Basic 内蔵のみであったのは残念でならない。アドイン開発用の純正SDKを用意することで C言語での開発環境が提供された。一方、カシオ自身が Basic-Like 言語といっている Casio Basic だが、新たな言語の開発にリソースを割いていない。しかし結果的に古いモデルからの上位互換が確保され、マクロ言語ではなく、使いこなすことで実用プログラムを作れるレベルまで進化しており、次のモデル fx-9860GII でさらに完成度があがる。

プログラム編集モードにおいて 挿入モードがデフォルトになった点は一見目立たない変更であはるが、高く評価できる。2005年発売の fx-9860G だけでなく、この年以降に発売されるプログラム電卓と関数電卓の全てがデフォルトで挿入モードに変更されているのは、カシオ電卓事業における大きな判断があったと思われる。

2005年発売の fx-9860G のハードウェア仕様、関数やコマンド類全てにおける基本設計は、2020年現在の fx-CG50 にまで引き継がれている。

fx-9860G は、新たにUSBポートを備え、PCとUSBケーブルでリンクできるようになり、従来の 3Pin - USB接続よりも高速なデータ転送が可能になった。SDカードをストレージとして使える fx-9860G SD が同時発売されたことから、データ保存とデータリンクに新たな機能を提供するモデルとなった。

さらに 2007年発売の fx-9860G Slim も重要なモデルで、クラムシェル(2つ折り)タイプで小型化しつつ液晶画面の大型化が実現した。ハンドヘルド電卓として世界初のバックライト機能も追加された。(fx-9860G Slim については別途まとめている)

fx-9860G シリーズは、ハードウェアとソフトエアの基本設計は、その後のグラフ関数電卓に色濃く引き継がれている。カシオの電卓開発史上、最重要のマイルストーンと言って良いと思う。

fx-9860G シリーズに搭載されている Casio Basic は、fx-4000Pfx-7000G の上位互換の仕様を有しており、Casio Basic の系譜は fx-9860G に引き継がれ、大きく改善され、ようやくマクロ処理ではない実用的なアプリ開発が可能な言語に仕上がった集大成が fx-9860G である。

fx-9860G の 新世代Casio Basic からグラフィクス、I/O機能と文字列処理機能が削られ、入力コマンドの改善と配列変数が追加されたサブセット版が fx-5800P に搭載され、この流れと並行して直系の改良版が fx-9860GII に引き継がれることになる。



温故知新 - FX-502P / FX-602P / FX-603P
温故知新 - fx-4000P / fx-4500P / fx-4800P
温故知新 - fx-7000G
温故知新 - CFX-9850G
温故知新 - CFX-9850GC PLUS

温故知新 - fx-9860G
温故知新 - fx-5800P
温故知新 - fx-9860GII
温故知新 - fx-CG10 / fx-CG20
温故知新 - fx-CP400
温故知新 - fx-CG50
温故知新 - fx-9750GIII

温故知新:番外編 - 関数電卓としての使い勝手
温故知新:番外編 - 電卓評価用の積分を解いてみた
温故知新:番外編 - 電卓評価用の複素数を解いてみた



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


 


keywords: プログラム関数電卓、プログラミング、Casio Basic、CFX-9850GC PLUS

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


関連記事

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

温故知新 - CFX-9850GC PLUS

プログラム電卓 温故知新
 - 搭載プログラミング言語に注目して、プログラム電卓の変遷を考える -
<目次>


 
2019/06/23
追記修正 2020/01/04
追記修正 2021/01/11
追記修正 2021/08/15


過去から現在に至る性能や仕様の変化を調べ、プログラミング言語を中心にカシオ製プログラム電卓の系譜を明らかにする。

5. 新世代 Casio Basic 登場前夜 - 可読性と機能の向上(2)

今回は、2004年発売の CFX-9850GC PLUS を取り上げる。国内では 2005年1月に発売された。海外では2010年まで発売されていたが、国内では2006年には生産中止扱いになり、2007年にはカタログに掲載されなくなった。国内でのカタログ掲載期間は1年8ヶ月と短かった。
2005年1月発行のカシオ電卓総合カタログ
2006年9月発行のカシオ電卓総合カタログ

カシオ機に搭載されたプログラム言語で、Basicコマンドが追加されたものを欧米のプログラム電卓コミュニティでは Casio Basic と呼ばれている。私も当ブログ開設当初から Casio Basic という呼称を使っていた。

Casio BasicGetkeyLocate が追加されたのが CFX-9850G であった。その後、コマンドや関数が追加され、シリーズ最終の CFX-9850GC PLUS が登場した。この機種の後継として fx-9860G が発売され、これ以降の機種に搭載された言語を当ブログでは "次世代Casio Basic" と呼称している。

fx-9860G の1つ前の機種である CFX-9850GC PLUS はCFXシリーズの最終形であり、新世代Casio Basic 登場前夜と言える。


Casio CFX-9850GC PLUS

CFX-9850GC_PLUSCFX-9850GC_PLUS_Manual

2004年海外で発売、2005年1月 に国内発売開始、海外では2004年発売。
カタログ 取扱説明書 (Casioサイト) 取扱説明書 (e=Gadgetサイト) 

64KBのメモリ領域にシステムも含まれており、それ以外がプログラムやデータに使える。取扱説明書の表紙から分かるのは、fx-9750G PLUS(モノクロ液晶)など複数の機種とほぼ共通の仕様になっている。

取扱説明書で分からない Casio Basic の使いこなし が当ブログのメインテーマなので、実際に触ってみたいと思い、以前から中古品を探していた。


実際に入手した CFX-9850GC PLUS
幸運なことに、eBayで "未使用品 - 動作確認のため開封" というものを見つけたので入手した。EU域内保証書が添付されていた。
 CFX-9860GC_PLUS_1 CFX-9850GC_PLUS_2 
実際に傷や汚れが一切なく、新品状態であった。

CFXシリーズは、3色カラー液晶搭載のグラフ関数電卓で、デフォルトがブルーで、オレンジとグリーンを追加した3色が使える。実際の画面は、輝度も色もコントラストが低い。液晶を見る角度でコントラストや色合いが大きく変化するのも見づらさの原因だ。明るいところでは問題ないが、少し暗くなると見づらいと感じる。実際にしばらく使い続けると多少は慣れた。
CFX-9850GC_PLUS_Display 

fx-9860GIIシリーズのメニュー画面を比較する。
CFX-9850GC_PLUS_Display fx-9860GII_SD_Display 
液晶のバックグランドが黄色みが強いことも視認性の悪さの原因だと感じる。
また、この3色カラー液晶は応答性が悪い。

なお、CFX-9850GC PLUSの液晶画面のサイズは、fx-9860Gシリーズと比較すると小さいことが分かる。
Disp_Size_9859GC_9860GII 


関数電卓としての性能 [2019/06/25 追記]
キーの種類と配置は、後継機のfx-9860Gシリーズと同じになっている。但し、[SHIFT] と一緒に押して選ぶ裏の機能やファンクションメニューの機能は fx-9860G よりは少なく、当然ながら後継機で進化しているわけだ 。

分数表示と演算精度
235÷658 を計算すると 0.3571428571 と表示される。計算精度は内部15桁で、後継機種 fx-9860Gと同じ。
ここで、[F↔D] キーを押しても 5/14 にはならない。ここは、後継機種 fx-9860Gと異なる。

複素指数関数
eπi を計算してみる。計算できれば答えは -1 になる。
Complex 
fx-9850GC PLUS では複素指数関数の計算ができず、演算エラー(Ma ERROR) になる。但し、複素数の加減乗除はできる。
後継機種の fx-9860G以降のモデルでは複素指数関数の計算に対応している。


搭載言語 (Casio Basic) の概要 [2019/8/18 追記]

追加されているBasicコマンドによりプログラムの可読性と機能が向上し、さらに GetkeyLocate が追加されているのでプログラムの自由度が向上している。さらに CFX-9850G よりも関数が追加されている。

主なコマンド
 - 入力:?→, Getkey
 - 出力:" ", , Locate
 - カラーコマンド:Orange, Green (" "とSketchコマンドにのみ有効)
 - 無条件ジャンプ:Goto / Lbl
 - 条件ジャンプ: (fx-4000P、7000G と同じ仕様)
 - カウントジャンプ:Isz, Dsz
 - 条件分岐:If / Then / Else / IfEnd
 - For ループ:For / To / Step / Next
 - Do ループ:Do / LpWhile
 - While ループ:While / WhileEnd
 - 制御コマンド:Break, Return, Stop
 - 比較演算: =,, >, <,,
 - 論理演算: And, Or, Not
 - 配列:無し
 - リスト:List (配列としても使える)
 - 行列:Mat (配列としても使える)、機能としてはまだ不完全(下記参照)
  
初期化コマンド Dim が追加されているが ClrMat が無いので、プログラム内で行列領域を削除できない。 
 - 各種関数

但し、以下の要因により可読性が損なわれている。
 - Then / Else 直後の改行:Syn ERROR になる
 - 行頭での改行 (空白行):Sys ERROR になる

 主なグラフィック コマンド
 - グラフ設定:CoordOn/CoordOff, GridOn/GridOff,
        AxesOn/AxesOff, LabelOn/LabelOff
 - 座標系設定:ViewWindow,
        Xmax/Xmin/Xscl/Xfct, XdotYmax/Ymin/Yscl/
Yfct  Xdotが追加されている
 - 消去コマンド:ClrGraph, Cls
 - Sketchコマンド:Plot, PlotOn/PlotOffPlotChg, LINE,
          PxlOn, PxlOff,
PxlTest, Text,
          F-Line, Vertical, Horizontal, Circle
 - 各種グラフコマンド

但し、Plot, PlotOn, PlotOff, PlotChg, PxlOn, PxlOff, PxlChg, Circle の詳細仕様は、後継の fx-9860G 以降とは異なる。CFX-9850GC PLUS ではこれらのコマンドのパラメータに X, Y を使うと誤動作する。X, Y は内部動作のために予約されていると思われ、これらのコマンドを実行すると予期せぬ値が X, Y に自動的に入力されてしまう。つまり、X, Y をパラメータに使ってはいけない。

後継機種である fx-9860G 以降 fx-CG50 までのグラフ関数電卓では上記のコマンド実行後に、それぞれのコマンドの詳細仕様に従った正しい値が X と Y に自動的に入力される。つまり、その詳細仕様を理解していれば上記のコマンドのパラメータに X, Y を使える。


プログラムの作成と実行
キーコード取得プログラム GETKEY を入力してみた。コマンドを入力するためのキー (キープレス) は、fx-9860Gシリーズや最新の fx-CGシリーズと全く同じだ。言語機能の基本仕様はこの機種の頃から固まっていることが分かる

ファイル名:GETKEY
Locate 1,1,"=== GET KEYCODE ==="
Locate 1,3,"KEYCODE ="
Locate 10,5,"HIT ANY KEY"
Locate 13,7,"[AC]:QUIT"
Do
While Getkey
WhileEnd
Do:Getkey→K
LpWhile K=0
Locate 9,3,"=   "
(スペース6個)
Locate 11,3,K
LpWhile 1


GETKEY 
[DEL]キーを押したところ、キーコード44が表示されている。
fx-9860Gシリーズや fx-CGシリーズと同様に、テキスト表示の範囲は21桁7行だ。

[AC]キーを押してプログラムを終了させると、画面下8行目に Break と表示される。
ここで、[EXE] を押すとプログラムが再起動し、もう一度 [AC] を押すとProgram List に戻らず RUNモードに切り替わる。
この仕様は、fx-9860Gシリーズや fx-CGシリーズとは異なる。完成したプログラムを繰り返し使うには便利な仕様だ。一方、プログラムを試してから修正する場合は面倒だ。RUNモードに戻った後、[MENU] を押して PRGMモードに移行して編集するプログラムを探す必要がある。

Program List には、プログラム名 (ファイル名) は入力した順序で並んでおり、アルファベット順になっていない。プログラムの数が多いと、編集あるいは実行したいプログラムを探すのが楽ではない。

CFX-9850GC PLUSProgram List でプログラムを探す最善の方法は、サーチ(検索)機能だ。Program List 画面で [F6] (▷) - [F1] (SRC) と押せば Search For Program 画面が現れるので、そこで探しているプログラム名の頭のアルファベットを押せば良い。すると同じ頭文字で始まるプログラム名が全て表示される。この機能は必須だ。

ところで、取扱説明書には、以下の記述がある。
Program_Manual_Note
繰り返し計算や複雑な計算を便利に実行するのが、プログラム機能の主目的だと考えれば、プログラム終了後に Program List 画面に戻らず、RUMモードになる仕様は、理にかなっている。


プログラムの編集 [2019/07/01 修正]
プログラム編集画面は、極めて使いにくい。

パソコンで文章を書く時は、通常は挿入モードで利用しているはずで、上書きモードは必要な時のみ切り替えて使うと思う。fx-9860Gシリーズや fx-CGシリーズでも、プログラム編集画面は常に挿入モードになっていて、必要な時に [SHIFT]-[DELL](INS) と押して上書きモードに切り替えて使う。

ところが、CFX-9850GC PLUS は、通常が上書きモードになっていて、[SHIFT]-[DELL](INS) を押して挿入モードに切り替える必要がある。一旦挿入モードに切り替えると、改行を超えない範囲でカーソル移動する限りは挿入モードが維持されるが、カーソルが改行を超えると上書きモードに戻ってしまう。改行から改行までを1行として認識し、その行内なら挿入モードが維持されるのは、ラインエディタの仕様をそのままマルチラインのエディタに持ち込んでると考えるのが妥当であろう。そのためマルチラインエディタとして編集の利便性が得られず残念な仕様と言える。

昔のプログラム電卓やポケコンで、区切り文字を使ってプログラムをズラズラと1行に書く時の仕様を、そのまま引きずっているのではないかと想像している。


プログラムの転送 [2019/08/15 追記修正]

PClink_9850GC_Plus2 PCリンク
3pin-USBケーブル (SB-88) と プログラムリンク ソフトウェア (FA-124) を使えばPCリンクや電卓の画面取得が可能になる。
3pin-USBケーブル (SB-88)
現在は製造中止品だが、takumako様により互換ケーブルが有償頒布されているので私はこれを利用した。
プログラムリンク ソフトウェア (FA-124)
カシオのサイトから無償ダウンロードできる。

 電卓間転送
3pin-3pinケーブル (SB-62) を使えば、3pin端子のあるグラフ関数電卓とプログラムの転送ができる。
3pin-3pinケーブル (SB-62)
まだ販売されているが、takumako様により互換ケーブルが有償頒布されている。SB-62 は fx-9860Gシリーズや fx-CGシリーズの国内正規版には標準添付されている。

PCへ転送されるファイルは CAT ファイル (拡張子 cat) だ。CATファイルには複数プログラムを格納できる。
具体的な操作方法は FA-124 のマニュアルを参照のこと。

ところで、電卓本体右下にある3pinコネクタには、防塵防滴用と思われるゴム製の "栓" が刺さっている。ある程度使われた中古品だとこれが無くなっているケースが多いのではないかと思う。無くしやすいので要注意だ。


fx-9860Gシリーズからのプログラムの移植
以前作ったプログラムの入った fx-9860Gシリーズと CFX-9850GC PLUS を 3pinケーブル (SB-62) で接続し、プログラムを CFX-9850GC PLUS に転送する。次にプログラムを走らせ、エラーが出たら [◀] か [▶] キーを押すとエラーが発生したコマンドにカーソルが表示されている。そこでカーソルのある部分を修正できるので、移植作業は比較的楽だ。当然エラーが発生している原因と対策を知っておく必要がある。具体的には、以下で紹介しているので、参照ください。

テキストベース・プログラム
モグラ叩きゲーム
以前作ったアクションゲーム - "Whack-a-Mole(もぐら叩き)" を転送して、必要な変更を行ってから遊んでみた。ついでにトップ画面のタイトルをオレンジにしてみた。デフォルトはブルーになっている。
ここで転送して修正したプログラムファイルは、WHACKAMOWAMINPI の3つだ。
プログラムのダウンロード - ダウンロードした Whackamo.cat には上記3つのプログラムを含む
Whack-a-Mole_9850GC 

CFX-9850GC PLUS の処理速度に対応するために、WHACKAMO の冒頭にある変数A の初期化を 2→A と変更しただけで、ロジックは変えていない。他は CFX-9850GC PLUS の搭載言語の制限に合わせて、エラーが出なくなるように修正を行うだけで移植は完了する。搭載言語のこの制限と修正方法については後述する。

実際に遊んでみると、液晶のハードウェアとしての応答性が悪い割にはゲームとして遊べて、それほど悪い感じはしない。表示が始まってところで反応できるから、表示が完了するまでのタイムラグが問題にならないのだろうと思う。

キーコード取得プログラム
以前作ったキーコード取得プログラムを転送し、エラーが出なくなるように必要な修正を行って CFX-9850GC PLUS / fx-9750G 専用に変更した。
プログラムのダウンロード - Keycode.cat
GetKey_1 GetKey_2 
左:起動直後の画面、右:キーコード取得プログラム、[EXIT] キーを押してみたところ。

CFX-9850GC PLUSfx-9860Gシリーズ / fx-CG シリーズは、全く同じキーを備えており、キーコードも同一になっている。従って、CFX-9850GC PLUS 特有の修正を行えば、ロジックや数値を変更せずに移植が可能となる。

さて、このプログラムや上のモグラ叩きゲームで、アルファベットの小文字が表示されていることにお気づきだろうか?

CFX-9850GC PLUS
 本体では、プログラム編集画面で小文字アルファベットを入力する方法が見つからない。ところが、小文字を使ったプログラムを fx-9860Gシリーズから転送したら小文字が表示されているのだ。

システムには既に小文字フォントが準備されていて、コードさえ入力されればプログラムで使えるようになっている。fx-5800P も同じ事情で、CcEditor / CcLinker を使えば 小文字アルファベットやその他フォントが使える。

温度換算プログラム
以前作った温度換算プログラムを転送し、エラーが出なくなるように必要な修正を行った。
ここで、転送・修正したプログラムファイルは、TEMPCONV と IN の2つだ。
プログラムのダウンロード - ダウンロードした TempConv.cat には TEMPCONV と IN が含まれる
TempConv 

プログラムの構造、ロジックは全く変更せず、プログラムが正常に動作する。

和暦-西暦換算・年齢推定プログラム - あの人の歳は今いくつ?
以前作った 和暦-西暦換算・年齢推定プログラムを転送して、エラーを解消する変更を実施した。長押し判定のカウンタの初期値Lを実機の処理速度に合わせて30に変更した (プログラム冒頭に 30→L と変更)。
転送・修正したプログラムファイルは、YEARCONV、YRC、YRD、INPI の4つだ。
プログラムのダウンロード - ダウンロードした YearConv.cat には YEARCONV, YRC, YRD, INPI の4つが含まれる。
YearConv 

ある程度複雑な構造でも、CFX-9850CG PLUS 搭載言語の制限や欠点を理解すれば、移植できることが分かった。


CFX-9850GC PLUS でのプログラミング

プログラミング上の制限と注意点 - fx-9860Gシリーズ / fx-CGシリーズとの比較

空行 (改行のみの行) はSyn ERROR になる
 ※対策空行を削除する
 対策を実施すると、ソースコードが非常に見づらくなる。特にブロック構造を意識した分かりやすいプログラミングには困った仕様だ。幸いコメントアウト ' が使えるので、空行の代わりに
'== 
などと書けば良いが、ソースレベルでブロック構造を分かりやすく見るには空行はとても便利だ。それが出来ないのは発展途上の欠点だと敢えて申し上げたい。これは、昔の1行プログラミングの時代の影響を引きすっていると感じられる。

Then / Else の直後を改行すると Syn ERROR になる
 ※対策Then / Else 直後の改行を削除する
 対策を実施すると、ソースコードが見づらくなる。上の空行禁止を組み合わさると、If ステートメントが非常に分かりにくくなる。ソースレベルで、ブロック構造を意識した見やすいコードを書けないにのは困った仕様だ。
これも、昔の1行プログラミングの影響をまだ引きずっている結果だと感じられる。

ループ (While / Do) の2重構造で、内側のループと If の入れ子構造が共存すると IfEnd のところで Syn ERROR になる
 ※対策:外側のWhile / DoLbl / Goto に置き換える。Break が有れば新たに Goto ジャンプに置き換える
 対策を施すと、スパゲティ化の第一歩となり、分かりやすいブロック構造を意識したプログラミングの大敵だ。個人的には最大の問題と感じている。
このエラーは、上記の 温度換算プログラムと和暦・西暦換算・年齢推定プログラムをfx-9860GII から転送して発見した。
While / DoIf の構造制御のスタック管理に失敗しているバグと考えている。昔は Goto / Lbl しか無かったところに構造制御ステートメントを追加している過渡期に潜り込んだバグがまだ解消していないのだろう。
取扱説明書の第22章ライブラリー編に掲載されているサンプルプログラムでは、構造制御に While / Do を使ったものが無く、全て Lbl / Goto が使われていることから、この時点で While / Do の機能が不完全だったと考えている。 

出力 "" で内部カーソルが改行されない
 ※対策"" で内部カーソルの改行機能を当てにせず Locate で表示位置を明示的に指定する
"" はNOP (何もしない) 処理になっているかも知れない。
"" で内部カーソル行を制御しているプログラム (fx-5800Pfx-9860G 以降のグラフ関数電卓で正常動作しているもの) を転送した場合、CFX-9850GC PLUS では画面配置が崩れる。

行末に区切り文字 : があると Syn ERROR になる
 ※対策:行末の区切り文字 : を削除する
 対策を実施しても大きな問題はない。
区切り文字は改行と同じ内部実装になっていれば、空行でエラーになるのと同じ原因なのだろう。

カラーコマンドは " " 出力には有効だが、Locate 出力には無効 [2019/05/25 追記]
 ※対策:有効な対策はない。"" で内部カーソルが改行されないので Locate を " "出力に変更できないことが多いためだ。
 カラーコマンドには、Orange と Green がある。Orange "String" と書けば String がオレンジ色で表示される。
一方、Locate コマンドで出力する場合は、カラーコマンドを追加すると Syn ERRORになる。 

出力文字列に : を含む行を ' でコメントアウトすると Syn ERRORになる
 ※対策:機切り文字 : の直後に ' を付加する
この問題は、fx-9860Gシリーズや fx-CGシリーズにも残っており、カシオは操作マニュアルを修正して対応している。
詳しくは 楽屋裏 - Casio Basic コメントアウト '  のバグ を参照

出力文字列に : を含んでも Syn ERRORにならない
これは、後継機種の fx-9860Gの OS2.1 かそれ以前のバージョンではエラーになっており、OS2.04 以降で修正されており、この修正は fx-9860GIIfx-CG20、そして最新の fx-CG50 まで維持されている。それなのに fx-9860G よりも古い CFX-9850GC PLUS で同じエラーが発生するかと思えば、エラーにならないのは、面白い。
改行のみの空行や区切り文字が行末にあることを許すように変更した際に、新たにバグが入り込んだと推測される。細かいようではあるが、このような開発の苦労や経緯が透けてくるのは面白い。 

出力命令 " " では1文字ごとに出力する
"Strings" を実行するとタイプライターのように1左から1文字づつ出力される。一方 Locate 1,1,"Strings" を実行すると、文字列が一度に出力される。

fx-9860Gシリーズ以降の機種からの移植では、実装されていない関数やコマンドで Syn ERROR
 ※対策:使えるコマンドを使って別表現に変更する (当たり前ですね)
今回移植を試みたプログラムには一例として、RanInt#( があったので、それぞれ以下のように別表現にした。 
- RanInt#(1,9)Int(90Ran#÷10)+1 に変更
- RanInt#(1,3)Int(30Ran#÷10)+1 に変更
- RanInt#(0,9)Int(10Ran#) に変更

Do / While / For ループからの脱出に Dsz / Isz を使うと Syn ERROR になる [2019/06/30 追記]
 ※対策:ループを Lbl / Goto に置き換えるか、ループ脱出に Break を使う
この現象は、fx-5800Pfx-9860G 以降のグラフ関数電卓でも存在することが確認されている。
⇒ 楽屋裏 - Dsz にとるループ脱出 参照
カシオとのやりとりの結果、ループの後 (必ずしも直後でなくても良い) に Goto 0:Lbl 0 と記述することでこのエラーを回避できることが分かっている (詳細は上記記事参照)。ところが、CFX-9850GC PLUS では、この対処方法が効かない。


処理速度の比較

四則演算および関数計算

加算プログラム
加算 

プログラムを起動し、N に 1000 を入力して実行時間を計る。

CFX-9850GC PLUS のプログラム
fx7000G_source_adding_up_Isz2 AddTest_For 
繰り返しに Goto / Lbl を使うケース(左)と For を使うケース(右)の2通りで処理速度を調べる。


数値積分プログラム
関数 

この通史積分は、とね日記 - 席初の手帳型プログラム関数電卓 CASIO FX-502P (1979), FX602P (1981) で取り上げられているものをそのまま使わせていただく。

プログラム起動し、分割数として 1000 を入力して、時効時間を計る。

CFX-9850GC PLUS のプログラム
FuncTest_Goto_9850 FuncTest_For_985 
クリア絵師に Goto / Lbl を使うケース(左)と For を使うケース(右)の2通りで処理速度を調べる。

以前調べた結果と併せて、上記の計算速度のを比較結果を示す [2019/07/31 修正]
加算プログラム数値積分プログラム
機種実行時間比較実行時間 (秒)比較
FX-502P123.1 秒---1261.8 秒---
FX-602P111.2 秒1.1 倍716.5 秒1.8 倍
FX-603P37.8 秒3.3 倍166.2 秒7.6 倍
fx-4000P61.7 秒2.0 倍349.1秒3.6 倍
fx-4500P195.0 秒0.6 倍798.1 秒1.6 倍
fx-4800PA=A+126.3 秒4.7 倍114.3 秒11.0 倍
Isz A21.2. 秒5.8 倍109.4 秒11.5 秒 
fx-7000GA=A+120.7 秒5.9 倍146.1 秒8.6 倍
Isz A19.3 秒6.4 倍143.2 秒8.8 倍
CFX-9850GGoto20.9 秒5.9 倍98.3 秒12.8  倍
For9.2 秒13.4 倍84.3 秒15.0 倍
CFX-9850GC PLUS
Goto22.0 秒5.6 倍100 秒12.6 倍
For9.2 秒13.4 倍85.4秒14.8 倍
記念すべき FX-502P を基準に、速度が何倍になっているかも併せて示している。

Basicコマンドとして追加された For 文は効率化、高速化している。Basicコマンドは可読性向上だけでは無いことが分かる。併せて関数処理も高速化していることが分かる。但し、CFXシリーズ初号機である CFX-9850G よりは少し遅くなっている。インタープリター言語なので、コマンドが追加されたことが原因だと思われる。


グラフィックス描画
▶ ドット描画プログラム

fx-7000G のグラフィック画面が 95 x 63 ドットなので、それに合わせて CFX-9850GC PLUS でも 95 x 63 ドットを塗りつぶして処理速度を比較する。

fx-7000G のプログラム
fx7000G_Dot DOT_fx7000G  

CFX-9850GC PLUS のプログラム
Dot_Plot Dot_Pxl fx9850GC_Plus_Dot 
Plot を使うケース(左)と PxlOn を使うケースの2通りで処理速度を調べる。

PlotPxlOn
fx-7000G213 秒
CFX-9850G926.5 秒0.23 倍496.0 秒0.43 倍
CFX-9850GC PLUS901.1 秒0.24 倍929.1 秒0.23 倍

CFX-9850G と全く同じコードであるにも関わらず、CFX-9850GC PLUS では遅くなっている。
PxlOn によるドット描画は、CFX-9850G の2倍の時間がかかった。
fx-7000G と比べると、処理が4倍以上遅くなった。


画面更新プログラム
上で、画面へのデータ転送が処理速度のボトルネックになることが分かったので、頻繁に画面更新するプログラムを実行して、その処理速度を調べて比較することにする。

ところで Getkey コマンドの追加によりテンキーと[EXE]キーだけでなく、[AC]を除く全てのキー入力が検知可能になり、Locate コマンドの追加により任意の位置への出力が可能になったので、プログラムの自由度が大きく向上し、画面がスクロールしないプログラムを書けるようになった。画面がスクロールしないプログラムでは、画面更新速度は重要な評価ポイントになる。

出力画面は、テキスト画面とグラフィックス画面 (グラフ画面) の2つがあり、これらは同時に表示できない。そこでテキスト画面の高速更新プログラムとグラフィックス画面の高速更新プログラムを作成して評価に利用することにする。

CFX-9850GC PLUS で調べる。
以下は CFX-9850G の結果で、CFX-9850GC PLUS のデータを後日追加する。

グラフィックス画面更新プログラム - モンテカルロ法にょる円周率計算
fx9850GCplus_Montekar 
プログラムのダウンロード - Montecar.cat を電卓に転送する
プログラムの詳細はこちら
ランダムに500回点を打って出力するまでの時間を調べる。

テキスト画面更新プログラム - ピタゴラス数の計算
CFX9860GCplus_Pytha 
プログラムのダウンロード - Pytha.cat を電卓に転送する
プログラムの詳細はこちら
ピタゴラス数500個を計算して結果を出力するまでの時間を調べる。

[2020/01/04 追記]
GetkeyLocate が初めて搭載された CFX-9850GCFX-9850GC PLUS の結果を比較した。
PYTHAMONTECAR
CFX-9850G294.3 秒---165.6 秒---
CFX-9850GC PLUS295.2 秒0.99 倍267.7 秒0.62 倍

CFX-9850G に比べてグラフィック画面出力 (MONTECAR) と テキスト画面出力 (PYTHA) ともに遅くなった。
特に、テキスト画面への繰り返し出力は60%程度に速度低下している。関数やコマンドが追加されたので、当然ながら処理が遅くなったと言える。速度向上には、CPUやOSの大きな改訂が必要であり、次の機種である fx-0860G でそれが実現されている。


プログラム電卓の系譜 [2019/08/15 追記修正]

CFXシリーズの最終機種である CFX-9850GC PLUS は、CFX-シリーズの初号機 CFX-9850G と同じ仕様の言語を搭載しているが、処理速度が遅くなっている。CFX-9850G よりも関数や機能が増強されているので多少処理が遅くなるだろうと思う。しかしグラフィックスのドット描画については、特に PxlOn の処理が倍程度遅くなっているのは意外であった、

さて、CFX-9850GC PLUS に搭載されたプログラミング言語は、CFX-9850G と同様に Baiscコマンドとして IfFor / While / Do / Getkey / Locate などが追加されているが、編集画面で考えながらコーディングするのは難しいと思う。

後継機種である fx-9860G では、搭載言語と編集画面の大幅な修正が行われた。この改良は、fx-9860G と同年に発売された fx-5800P にも反映されている。

編集画面については、FX-502P / FX-602P / FX-603P では、デフォルトで挿入モードになっており、必要に応じて 上書きモードに切り替える仕様になっている。ところが、その後の fx-3650Pfx-4000P シリーズ、fx-7000G シリーズ そして CFXシリーズの最終モデル CFX-9850GC PLUS に至るまで、デフォルトで上書きモードになっていた。

当時、欧米市場での競合であった TI の電卓でも84シリーズのような古くからある機種では上書きモードが主流であった (sentaro様による情報、コメント欄参照)。

ところが、2005年に発売された機種、fx-71Ffx-5800Pfx-9860G では、一斉に挿入モードに切り替わっている。プログラミングのできない関数電卓においても、fx-991MS まではデフォルトで上書きモードで、2005年発売の次機種 fx-991ES から挿入モードに切り替わっている (2005年1月の電卓総合カタログ参照。

[2019/07/01 追記]
コメント欄に情報をお寄せいただいたsentaro様によれば、SHARP製の関数電卓も以前は上書きモードだったが、2004年以降のモデルは挿入モードに変わっているとのこと。Casioとほぼ同時期に変更されているようだ。

sentaro様の考察によれば(コメント欄参照)、欧米、特に北米での学校販売ビジネスでしのぎを削っていた TI 機と使い勝手の異なる挿入モード機を一斉に投入するには、ビジネス上のリスクを伴う大きな判断があったに違いないとのことだ。私もそれに賛同する。その上で、一斉に挿入モードに切り替えたのは、グラフ関数電卓やプログラム関数電卓の将来の目標 / ビジョンがあったのではないかと私は想像している。それは計算補助のマクロ機能を超えて、より柔軟な一般的なプログラミングが可能な言語仕様を目指すことであった、と想像している。

LocateGetley コマンドの存在は、スクロールしないプログラムを可能にするが、これらのコマンドは CFXシリーズの初代 CFX-9860G に初めて追加された。CFXシリーズは、プログラム関数電卓、ポケコン、グラフ関数電卓それぞれで個別に開発が進んでいた搭載言語が、ようやく1つの方向性に収束し、Locate / Getkey コマンドを追加することで柔軟なプログラミングが可能になり、大きく進化した。3色限定とは言えカラー表示を可能にしたのも CFXシリーズの特徴であり、各種コマンドや関数を増強した最終機種 CFX-9850GC PLUS は、カシオ機搭載のプログラミング言語の歴史の重要な転換点を示しており、次世代Casio  Basic 登場前夜の記念すべきモデルと言える。

Casio Baisc は fx-9860G シリーズでさらに進化してゆく。



温故知新 - FX-502P / FX-602P / FX-603P
温故知新 - fx-4000P / fx-4500P / fx-4800P
温故知新 - fx-7000G
温故知新 - CFX-9850G
温故知新 - CFX-9850GC PLUS

温故知新 - fx-9860G
温故知新 - fx-5800P
温故知新 - fx-9860GII
温故知新 - fx-CG10 / CG20
温故知新 - fx-CP400
温故知新 - fx-CG50
温故知新 - fx-9750GIII

温故知新:番外編 - 関数電卓としての使い勝手
温故知新:番外編 - 電卓評価用の積分を解いてみた
温故知新:番外編 - 電卓評価用の複素数を解いてみた



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


 


keywords: プログラム関数電卓、プログラミング、Casio Basic、CFX-9850GC PLUS

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













関連記事

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

温故知新 - CFX-9850G

プログラム電卓 温故知新
 - 搭載プログラミング言語に注目して、プログラム電卓の変遷を考える -
<目次>


 
2019/08/14
追記修正 2019/12/03
追記修正 2021/08/15


過去から現在に至る性能や仕様の変化を調べ、プログラミング言語を中心にカシオ製プログラム電卓の系譜を明らかにする。


4. Casio Basic 登場 - 可読性と機能の向上 (1)


今回は、世界初のグラフ関数電卓 fx-7000P シリーズの後、プログラム言語としてターニングポイントとなる仕様追加を果たした CFX-9850G を取り上げる。

1996年に発売された CFX-9850G には、いくつかの Basic コマンドが追加されており、LocateGetkey コマンドが初めて搭載されたことは、電卓で実用的なプログラムを作るためには非常に重要な出来事と言って良いと思う。

当ブログで使っている Casio Basic という呼称は、カシオが公式に使っているものではないが、欧米のプログラム電卓愛好家のコミュニティでは以前から使われている。当ブログでは、当初管理人が CasioBasic と呼んでいたが、その後海外のコミュニティで同じ名称が使われているのを知った。

但しそれらの海外のコミュニティにおいて Casio Basic の明確な定義が見当たらない。当ブログでは以前から、Basic風のコマンドが追加された搭載言語を "Casio Basic" と呼んでいる。

さらに進化して下記の条件を備えたものを当ブログでは "新世代Casio Basic" と呼んでいる。
 - Locate と Getkey を含んだ Basic コマンドが追加されている
 - 行頭の改行がエラーにならない
 - Then と Else 直後の改行がエラーにならない


今回は、"新世代" 前夜の "Casio Basic" に焦点を当てる。


Basicコマンドの追加

ネットで得られる操作マニュアルを調べたところ、最初にBasicコマンドが追加されたのは、1995年フランスで発売された GRAPH 20 (fx-9610aG) であり、世界市場で最初に Basicコマンドが搭載されたのは、1996年発売の fx-7400G であった。
  GRAPH 20 (fx-9610aG) の User's Manual 
 ▶ fx-7400G の User's Manual - Programming編
これらでは、If 文、For 文、Do 文、While 文、Break、Return、Stop が追加されている。 


Locate, Getkey の追加

カシオのプログラム電卓で、初めて Locate コマンドと Getkey コマンドが追加されたのは、1996年発売の CFX-9850G であった。

それまでの搭載言語では、入力検知できるのはテンキーと[EXE]キーのみ、文字列や数値の出力は " " コマンドや  コマンドで行うが出力位置は指定できなかった。ところが、Getkey コマンドが追加されたことで、[AC]キー以外の全てのキーの入力を個別に検知できるようになり、Locate コマンドが追加されたことで、出力位置を自由に設定できるようになった。これにより、画面がスクロールしないプログラムを書けるようになり、プログラムの自由度が格段に向上した。極めて大きな進化といえる。

CFX-9850G は、LocateGetkey が初めて追加された機種だ。カシオのプログラム電卓の系譜で重要なマイルストーンだ。CFX-9850G の系統には下記がある。
- CFX-9850G / CFX-9850G Plus / CFX-9850GA Plus / CFX-9850GB Plus (1996 1998)
- CFX-9950G / CFX-9959GB Plus (1996 - 2003)
- CFX-9850GC Plus
(2004 - 2010、2005年国内発売)


CFX-9850G
が発売された頃は、fx-4500Pfx-4800P が販売されていた。
1996年4月発行のカシオ電卓総合カタログ - CFX-9850G (国内では 1996年3月発売), fx-4500P, fx-4800P


Casio CFX-9850G

CFX-9850G_22GBのメモリに、プログラム領域26KBが含まれる。

CFXシリーズは、3色カラー液晶搭載のグラフ関数電卓で、デフォルトがブルーで、オレンジとグリーンを追加した3色が使える。実際の画面は、輝度も色もコントラストが低い。液晶を見る角度でコントラストや色合いが大きく変化するのも見づらさの原因だ。明るいところでは問題ないが、少し暗くなると見づらいと感じる。この3色カラー液晶は応答性が悪い。

CFX9850G_Display 

プログラムの転送
PClink_9850G_2 PCリンク
3pin-USBケーブル (SB-88) と プログラムリンク ソフトウェア (FA-124) を使えばPCリンクや電卓の画面取得が可能になる。
3pin-USBケーブル (SB-88)
現在は製造中止品だが、takumako様により互換ケーブルが有償頒布されている。
プログラムリンク ソフトウェア (FA-124)
カシオのサイトから無償ダウンロードできる。

 電卓間転送
3pin-3pinケーブル (SB-62) を使えば、3pin端子のあるグラフ関数電卓とプログラムの転送ができる。
3pin-3pinケーブル (SB-62)
まだ販売されている。takumako様により互換ケーブルが有償頒布されている。

ところで、電卓本体右下にある3pinコネクタには、防塵防滴用と思われるゴム製の "栓" が刺さっている。ある程度使われた中古品だとこれが無くなっているケースが多いのではないかと思う。


搭載言語 (Casio Basic) の概要
Basicコマンドが追加されたことでプログラムの可読性と機能が向上し、さらに GetkeyLocate が追加されたことでプログラムの自由度が向上している。

主なコマンド
 - 入力:?→, Getkey
 - 出力:" ", , Locate
 - カラーコマンド:Orange, Green (" "とSketchコマンドにのみ有効)
 - 無条件ジャンプ:Goto / Lbl
 - 条件ジャンプ: (fx-4000P、7000G と同じ仕様)
 - カウントジャンプ:Isz, Dsz
 - 条件分岐:If / Then / Else / IfEnd
 - For ループ:For / To / Step / Next
 - Do ループ:Do / LpWhile
 - While ループ:While / WhileEnd
 - 制御コマンド:Break, Return, Stop
 - 比較演算: =,, >, <,,
 - 論理演算: And, Or, Not
 - 配列:無し
 - リスト:List (配列としても使える)
 - 行列:Mat (配列としても使える)、
但し初期化コマンド Dim は適用できない
 - 各種関数
GRAPH20fx-7400G 以降で追加されたBasicコマンドを青色で示す
CFX-9850G で追加されたコマンドを赤色で示す

但し、以下の要因により可読性が損なわれている。
 - Then / Else 直後の改行:Syn ERROR になる
 - 行頭での改行 (空白行):Sys ERROR になる

 主なグラフィックス コマンド
 - グラフ設定:CoordOn/CoordOff, GridOn/GridOff,
        AxesOn/AxesOff, LabelOn/LabelOff
 - 座標系設定:ViewWindow,
        Xmax/Xmin/Xscl/Xfct, Ymax/Ymin/Yscl/
Yfct
 - 消去コマンド:ClrGraph, Cls
 - Sketchコマンド:Plot, PlotOn/PlotOff, PlotChg, LINE,
          PxlOn, PxlOff, PlxChg
PxlTest, Text
          F-Line, Vertical, Horizontal, Circle

但し、Plot, PlotOn, PlotOff, PlotChg, PxlOn, PxlOff, PxlChg, Circle の詳細仕様は、後継の fx-9860G 以降とは異なる。CFX-9850G ではこれらのコマンドのパラメータに X, Y を使うと誤動作する。X, Y は内部動作のために予約されていると思われ、コード上予期せぬ値が X, Y に自動的に入力されてしまう。つまり、X, Y をパラメータに使ってはいけない。

後継機種である fx-9860G 以降 fx-CG50 までのグラフ関数電卓では、上記のコマンドで X, Y を使える。各コマンド実行後に、それぞれのコマンドの詳細仕様に従った正しい値 (論理座標系での値) が自動的に入力されるので、それを正しく理解すれば X, Y をパラメータとして使っても問題ない (積極的に使えば有用なこともある)。


プログラムの作成と実行
キーコード取得プログラム GETKEY を入力してみた。コマンドを入力するためのキー (キープレス) は、fx-9860Gシリーズや最新の fx-CGシリーズと全く同じだ。言語機能の基本仕様はこの機種の頃から固まっていることが分かる

ファイル名:GETKEY
Locate 1,1,"=== GET KEYCODE ==="
Locate 1,3,"KEYCODE ="
Locate 10,5,"HIT ANY KEY"
Locate 13,7,"[AC]:QUIT"
Do
While Getkey
WhileEnd
Do:Getkey→K
LpWhile K=0
Locate 9,3,"=   "
(スペース6個)
Locate 11,3,K
LpWhile 1


Getkeycode_1 Getkeycode_DEL  
[DEL]キーを押したところ、キーコード44が表示されている。
fx-9860Gシリーズや fx-CGシリーズと同様に、テキスト表示の範囲は21桁7行だ。

[AC]キーを押してプログラムを終了させると、画面下8行目に Break と表示される。
ここで、[EXE] を押すとプログラムが再起動し、もう一度 [AC] を押すとProgram List に戻らず RUNモードに切り替わる。
この仕様は、fx-9860Gシリーズや fx-CGシリーズとは異なる。完成したプログラムを繰り返し使うには便利な仕様だ。一方、プログラムを試してから修正する場合は面倒だ。RUNモードに戻った後、[MENU] を押して PRGMモードに移行して編集するプログラムを探す必要がある。

Program List には、プログラム名 (ファイル名) は入力した順序で並んでおり、アルファベット順になっていない。プログラムの数が多いと、編集あるいは実行したいプログラムを探す最善の方法は、サーチ(検索)機能だ。Program List 画面で [F6] (▷) - [F1] (SRC) と押せば Search For Program 画面が現れるので、そこで探しているプログラム名の頭のアルファベットを押せば良い。すると同じ頭文字で始まるプログラム名が全て表示される。この機能は必須だ。


プログラムの編集
プログラム編集画面は使いにくい。
パソコンで文章を書く時は、通常は挿入モードで利用しているはずで、上書きモードは必要な時のみ切り替えて使うと思う。fx-9860Gシリーズや fx-CGシリーズでも、プログラム編集画面は常に挿入モードになっていて、必要な時に [SHIFT]-[DELL](INS) と押して上書きモードに切り替えて使う。

ところが、CFX-9850G は、通常が上書きモードになっていて、必要な時に [SHIFT]-[DELL](INS) を押して挿入モードに切り替える。一旦挿入モードに切り替えると、カーソルのある行内で挿入モードが維持されるが、カーソルが別の行に移ると上書きモードに戻ってしまう。


fx-9860Gシリーズからのプログラムの移植
以前 fx-9860Gシリーズで作ったプログラムを CFX-9850G に転送した。fx-9860Gシリーズは"次世代Casio Basic"を搭載しており、CFX-9850G への移植にはコードへの若干の手直しが必要だ。多くの場合はなんとかなるが、移植不可能、あるいは極めて困難なケースもある。

モグラ叩きゲーム
Whack-a-Mole_1 Whack-a-Mole_2  
fx-9860GII
で作ったアクションゲーム - "Whack-a-Mole(もぐら叩き)" は移植できた。トップ画面のタイトルをオレンジにしてみた。CFX-9850G の処理速度に対応するために、WHACKAMO の冒頭にある変数A の初期化を 2→A と変更しただけで、ロジックは変えていない。実際に遊んでみると、液晶の応答性の悪さは、さほど気にならない。
 Whack-a-Mole のダウンロード

キーコード取得プログラム
fx-9860GIIで作ったキーコード取得プログラムを移植した後、CFX-9850G 用になるよう表示を一部変更した。
 Keycode_1 Keycode_MENU 
左:起動直後の画面、右:キーコード取得プログラム、[MENU] キーを押したところ。

CFX-9850G は、fx-9860Gシリーズや fx-CGシリーズと全く同じキーを備えており、キーコードも同一になっている。
 Keycode のダウンロード

ところで、上記2つのプログラムは、fx-9860G から CFX-9850G に転送したもので、小文字アルファベットが表示されている。プログラム編集画面で小文字アルファベットを入力する方法は、CFX-9850G 本体には用意されていないが、小文字を使ったプログラムを転送すると小文字が表示されることから、システムには既に小文字フォントが準備されていることが分かる。

アルファベット小文字を出力させる他の方法もある。プログラムリンクソフトウェア FA-124 でCATファイルを開くとコードを編集でき、そこで出力文字列を小文字アルファベットに書き換えてから、このCATファイルを保存して CFX-9850G に転送すれば、プログラムで小文字アルファベットを表示可能になる。 



処理速度の比較

四則演算および関数計算

加算プログラム
加算 

プログラムを起動し、N に 1000 を入力して実行時間を計る。

CFX-9850G のプログラム
fx7000G_source_adding_up_Isz2 AddTest_For 
繰り返しに Goto / Lbl を使うケース(左)と For を使うケース(右)の2通りで処理速度を調べる。


数値積分プログラム
関数 

この通史積分は、とね日記 - 席初の手帳型プログラム関数電卓 CASIO FX-502P (1979), FX602P (1981) で取り上げられているものをそのまま使わせていただく。

プログラム起動し、分割数として 1000 を入力して、時効時間を計る。

CFX-9850G のプログラム
FuncTest_Goto_9850 FuncTest_For_985 
クリア絵師に Goto / Lbl を使うケース(左)と For を使うケース(右)の2通りで処理速度を調べる。

以前調べた結果と併せて、上記の計算速度のを比較結果を示す [2019/07/31 修正]
加算プログラム数値積分プログラム
機種実行時間比較実行時間 (秒)比較
FX-502P123.1 秒---1261.8 秒---
FX-602P111.2 秒1.1 倍716.5 秒1.8 倍
FX-603P37.8 秒3.3 倍166.2 秒7.6 倍
fx-4000P61.7 秒2.0 倍349.1秒3.6 倍
fx-4500P195.0 秒0.6 倍798.1 秒1.6 倍
fx-4800PA=A+126.3 秒4.7 倍114.3 秒11.0 倍
Isz A21.2. 秒5.8 倍109.4 秒11.5 秒 
fx-7000GA=A+120.7 秒5.9 倍146.1 秒8.6 倍
Isz A19.3 秒6.4 倍143.2 秒8.8 倍
CFX-9850GGoto20.9 秒5.9 倍98.3 秒12.8  倍
For9.2 秒13.4 倍84.3 秒15.0 倍
記念すべき FX-502P を基準に、速度が何倍になっているかも併せて示している。

Basicコマンドとして追加された For 文は効率化、高速化している。Basicコマンドは可読性向上だけでは無いことが分かる。併せて関数処理も高速化していることが分かる。


グラフィックス描画
▶ ドット描画プログラム

fx-7000G のグラフィック画面が 95 x 63 ドットなので、それに合わせて CFX-9850G でも 95 x 63 ドットを塗りつぶして処理速度を比較する。

fx-7000G のプログラム
fx7000G_Dot DOT_fx7000G  

CFX-9850G のプログラム
Dot_Plot Dot_Pxl Dot_9850 
Plot を使うケース(左)と PxlOn を使うケースの2通りで処理速度を調べる。

PlotPxlOn
fx-7000G213 秒
CFX-9850G926.5 秒0.23 倍496.0 秒0.43 倍

fx-7000G では Rangeコマンドで指定した論理座標系に従って Plot コマンドでドットを描画する。CFX-9860G では ViewWindowコマンドで指定した論理座標系に従って Plot コマンドでドットを描画する。

For 文は効率化・高速化されていることは上の例で分かっているが、ドット塗りつぶしプログラムでは CFX-9850G がかなり処理が遅い。グラフィック画面へのデータ転送に時間がかかっており、それがボトルネックになっていると考えられる。
fx-7000G の液晶は 95 x 63 = 5985 ドット、CGX-9850G は 127 x 63 = 8001 ドット、その差 2016 ドット。1ドット出力するたびに転送しているなら、CFX-9850G のグラフィック画面への転送は fx-7000G よりもデータが多いから転送が重い理由となり得る。 

CFX-9850G には、PxlOn コマンドが追加されている。このコマンドは左上が原点 (1, 1) の物理座標系でのドット描画コマンドであり、Plot よりは約2倍高速だ。PlxOn は論理座標系のように座標計算が不要なので高速になっていると考えられる。


画面更新プログラム
上で、画面へのデータ転送が処理速度のボトルネックになることが分かったので、頻繁に画面更新するプログラムを実行して、その処理速度を調べて比較することにする。

ところで Getkey コマンドの追加によりテンキーと[EXE]キーだけでなく、[AC]を除く全てのキー入力が検知可能になり、Locate コマンドの追加により任意の位置への出力が可能になったので、プログラムの自由度が大きく向上し、画面がスクロールしないプログラムを書けるようになった。画面がスクロールしないプログラムでは、使い勝手の善し悪しが画面更新の速度に深く依存してくる。

出力画面は、テキスト画面とグラフィックス画面 (グラフ画面) の2つがあり、これらは同時に表示できない。そこでテキスト画面の高速更新プログラムとグラフィックス画面の高速更新プログラムを作成して評価に利用することにする。

そこで、グラフィックス画面とテキスト画面それぞれの更新速度を調べる。

グラフィックス画面更新プログラム - モンテカルロ法にょる円周率計算
MonteCar_9859 
プログラムのダウンロード - Montecar.cat を電卓に転送する
プログラムの詳細はこちら
ランダムに500回点を打って出力するまでの時間を調べると、165.6 秒であった。

テキスト画面更新プログラム - ピタゴラス数の計算
Pytha_9850 
プログラムのダウンロード - Pytha.cat を電卓に転送する
プログラムの詳細はこちら
ピタゴラス数500個を計算して結果を出力するまでの時間を調べると、294.3 秒であった。


プログラム電卓の系譜

1996年発売の CFX-9850G に GetkeyLocate が初めて搭載された。これはCasio Basicの極めて大きな進化と言える。

世界初の手帳サイズのプログラム関数電卓として1978年に発売された FX-502P のプログラミング言語はキーストローク型で、表示レジスタやメモリに直接アクセスして演算を行うことで効率の高い処理が行え、プログラムのサイズも小さく抑えられる。一方でコードの可読性は決して良くなく、まるでアセンブリ言語のコードのようだ。シリーズ最終の FX-603P は1990年に発売され、CPUの高速化、メモリの増強、シリアル通信機能とPCリンク機能などハードウェアが充実しており、2006年の生産中止までの16年間製造が続いた。この間ポケットコンピュータが市場に登場し消えてゆき、プログラム関数電卓が生き残ったのは興味深い。

fx-3000Pシリーズやfx-4000Pシリーズでは、大きく異なる2系統の言語を搭載された機種が発売された。これらはいずれもコードの可読性が向上している。シンプルな計算マクロ言語を搭載した機種も発売された。シリーズ最終の fx-4850P は1997年に発売され、CPUの高速化、メモリ増強(26KB)などバードウェアが充実し 2006年まで生産が継続された。ハードウェアデザインやソフトウェアメニューが fx-5800P に引き継がれたが、一方で fx-4850P に搭載されていた言語は主流とはならず、1985年発売の fx-4000P の搭載言語の系統がその後のグラフ関数電卓の主流となり、fx-5800P にも搭載されたのが大変興味深い。

世界初のグラフ関数電卓 fx-7000G が1985年に発売された。fx-4000Pシリーズの初号機 fx-4000P も同年に発売されている。fx-7000G はグラフ機能以外は fx-4000P と同一の関数電卓としての機能とキーレイアウト、そして同一の搭載言語を有しているのは着目すべきだろう。fx-7000Gfx-4000P が同時開発された可能性も十分考えられる。

いずれにせよ、グラフ関数電卓初代の fx-7000G の言語系統がそのままグラフ関数電卓で発展してきている。これはネットで確認できるマニュアルを調べると明らかだ。1995年フランスモデルとして発売されたグラフ関数電卓 GRAPH 20、そして1996年に世界で発売された fx-7400G で初めてBasicコマンドが追加された。追加されたのは 条件分岐 (If) とループ (For, Do, While) 関連のコマンドで、処理効率の向上が図られた。また明らかにコードの可読性も向上した。Casio Basic 初版が登場したわけだ。しかし残念なことに、検出できる入力がテンキーと[EXE]キーに限定されており、出力位置もプログラムで制御できないものであった。

1996年に発売された CFX-9850G では、[AC]キー以外の全てのキーの入力を検知できる Getkey コマンド、そして任意の位置に出力できる Locate コマンドが追加された。このたかだか2つのコマンドの追加により、プログラムの自由度が飛躍的に向上した。大きな進化と言える。現行の最新機種 fx-CG50 や1つ前の fx-9860GII で動作するプログラムの多くが、CFX-9850G で動作するのは、その進化の大きさを示している。

但し CFX-9850G は、行頭に改行があると Syn ERROR となり、空行が許されない。さらに If 文で使う ThenElse の直後が改行だと Syn ERRORになってしまう。この残念な仕様のためコードの可読性が損なわれている。さらに行列の初期化コマンドが無いので変数を用いた行列の初期化ができないなどの基本的な仕様に、プログラミング言語としての問題が多く残っている。

さて、ドット描画コマンド Plot と PxlOn / PxlOff の詳細仕様が現行の最新機種とは異なり、理解できない動作をする。これについては 温故知新 - CFX-9850GC PLUS で述べる。

登場したばかりの Casio Basic は、まだ発展途上と言える。



温故知新 - FX-502P / FX-602P / FX-603P
温故知新 - fx-4000P / fx-4500P / fx-4800P
温故知新 - fx-7000G
温故知新 - CFX-9850G
温故知新 - CFX-9850GC PLUS

温故知新 - fx-9860G
温故知新 - fx-5800P
温故知新 - fx-9860GII
温故知新 - fx-CG10 / fx-CG20
温故知新 - fx-CP400
温故知新 - fx-CG50
温故知新 - fx-9750GIII

温故知新:番外編 - 関数電卓としての使い勝手
温故知新:番外編 - 電卓評価用の積分を解いてみた
温故知新:番外編 - 電卓評価用の複素数を解いてみた




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


 


keywords: プログラム関数電卓、プログラミング、Casio Basic、CFX-9850GC PLUS

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

関連記事

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

番外編 - Let's note 中古改造PC

番外編
e-Gadget

初版 2021/07/28
ネットセレクタLite の記述を追記 2021/07/29
TPM 2.0 へのファームウェアアップデートを追加 2021/07/30
新品大容量バッテリーの使用感を追記 2021/08/01
記事の整理と目次追加 2021/08/09


Panasonic Let's note 中古改造PC

今メインで使っているPCの緊急バックアップ用PCが不調になって、その代わりを新品・中古品の両方で探していました。今回アマゾンで良さそうな中古改造PCがあったので、それを入手しました。中古を入手するのは初めてです。

 独り言:DELL Inspiron 3148 (Core i3-4030U, 4GB RAM, 500GB HDD) がどうにも普通に使えないレベルまで遅くなったので、初期化するかSSD換装+RAM 8GB化をするかを考えていたところ、同様な改造をした中古品で Core i5-5300U を搭載したコスパの良いモノがあったので、そちらへ日和ってしまったというのが正直なところ...

         CF-NX4

さて、中古PCが 2015年1月モデルの Let's Note CF-NX4 (Windows7 Professional プリインストール、Core i5-5300U (第5世代),  RAM 4GB, HDD 320GB、無線LAN搭載機、12.1インチ液晶) のままであれば、入手する気にはなりません。

入手する気になったのは、以下の条件によります;
Core i5-5300U (第5世代 i5) - オリジナルと同じ
8GB RAM - オリジナルの4GB から増設
・新品 512BG SSD への換装 - これが最大のポイント
・無線LAN - オリジナルと同じ、いまどきこれが無いと問題外
Win10 Pro プリインストール - これもポイント
・バッテリーが簡単に脱着できること - 中古品にはかなり重要

Core i5-5300U 搭載で、Windows 10 ProSSD4GB 増設で 8GB RAM というのはコスパが良さそうです。但し、液晶の具合、外装の傷、そしてバッテリーの劣化度合いは、実際に入手しないと判らず、リスクはありますが、初めての中古品を試しに購入してみました。

中古品はどうしてもアタリハズレがありますが、今回は幸運にも比較的良い買い物だったと思います。
自分自身のための記録のために以下をまとめますが、中古 Let's note を入手した方の参考になれば良いと思います。

なお、SU 桜 というセラーがアマゾンで出品していたPCですが、その後セラーの名前が SU に変わっています。セラーへの連絡が取れない可能性があります。サポート窓口の日本の修理センターのメールアドレスが書かれた保証書が添付されていましたが、問い合わせをしても返事がありません。今回は比較的良い製品に当たりましたが、何かあってもサポートは受けられない覚悟が必要で、こういうPCを購入するのは、賭けに近いかも知れません。



Windows 10 Pro が再インストールされ、Let's note 独自のドライバやアプリが殆どインストールされていない状態だったので、Windows Updateした後、基本機能の確認、Let's note 独自のドライバやアプリをインストール&アップデートし、性能確認を行いました。


目 次

 最初の作業

 外観・液晶画面の確認
   外装の傷
   キーボード
   パームレスト
   液 晶
  
 機能の確認
   メインストーレージ
   RAM
   ACアダプタ警告
   バッテリー
   [Fn] と [Ctrl]
   ホイールパッド
   バッテリー容量
   "不明なデバイス"
   ネットセレクタ

 Let's note 専用ドライバの追加とアップデート
   CF-NX4 マニュアル類の閲覧と入手
   バッテリー診断・制御プログラム
   Let's note 専用ドライバ・アプリのリストとインストール順序
   ドライバのアップデート
   最新ドライバアップデートページの確認方法
  
 イメージバックアップ

 回復ドライブの作成 

 おまけの 32GB USB フラッシュメモリ

 添付の中古バッテリー動作

 新品の大容量バッテリー動作




最初の作業

簡易だが確実な梱包で、次のものが到着しました。

CF-NX4_Top
 AC_SX425 USB_Flash
CF-NX4EHCS             ACアダプタ        32GB USBメモリ

各種確認をする前に、まずは以下の作業をしました。

1. 梱包状態と内容物の外観チェック ⇒ 特に問題なさそう
  ・PC本体: Panasonic Let's note NX4 (CF-NX4EDHCS) - 品番から法人モデルだとわかる。
   ただし、大容量バッテリー(L)でなく軽量バッテリー(S) 付属。
   軽量バッテリー(S) は 220 g、バッテリーを含めてPCの重量は実測で 1.00 kg、軽い。
  ・ACアダプタ: Panasonic純正 (CF-AA6412C M2) - 新品時の型番ではない。
  ・おまけの 32GB USB3.0 フラッシュメモリ - これはハズレ (後述)

2. ネット接続を確立 ⇒ 無線LAN接続

3. Windowsセキュリティ ⇒ Microsoft Difenderの設定
 ※ スタートメニュー [設定]-[更新とセキュリティ]-[Windowsセキュリティ]

4. Windows 10 の確認Windows Update の実行
 ※ Windows 10 Pro、21H1 (19043.1110) Windows Feature Experience Pack がインストールされていました
 ※ Windowsのインストールは購入日の1ヶ月ほど前の日付でした (Start Menu - 設定 - システム - 詳細情報)
 ※ Windows Update を実行すると最新の状態でした。

5. Adobe Acrobat Reader のインストール
 ※ PDFを開くアプリがインストールされていなかった。(マニュアルや手順書を読むのに必要)

6. この時点で SSD をイメージバックアップ (Acronic True Image 2019 使用) 

<目次に戻る>



外観・液晶画面の確認

外装の傷
マグネシウム合金の外側は、思っていたよりも傷が少なかった。

NX4_Scratched_Top

NX4_Scratched_Left  

上記以外にも細いひっかき傷がいくつか有りますが、ほとんど気にならないレベルでした。
外側のマグネシウム合金についた傷はぼやけた感じで、遠目に糊やグリースなどが付着しているような感じです。
 
<目次に戻る>
 

キーボード
キーボードはそれなりに使い込んだらしく、特定のキートップにテカリがあります。テカリ以外は傷も汚れもなく、キートップの文字の薄れや欠損はありません。いくつかのキートップを外してみたところ、汚れもなく内部は綺麗でした。そこで消毒用エタノール (濃度70%程度) でキートップの清掃だけしました。

NX4_Keyboard
 
<目次に戻る>
 

パームレスト
パームレストはキズや汚れが全く見あたらず、表面の細かいザラザラ感も残っていて、とても綺麗な状態です。

PalmRest_Left PalmRest_Right
 
<目次に戻る>


液晶
液晶画面はドット欠けはなく、不均一に見えるところもなく、良好な状態です。
額縁部分は、キズ一つなく、表面の微細な凹凸(意匠)もしっかりと残っています。

Display
※ 最低限のセットアップをした後の画面

外観は、それほど程度が悪くなく十分許容範囲。液晶ディスプレイは全く問題なくきれいな表示です。
企業ユースでかなり丁寧に使われていたことが覗われます。
 
<目次に戻る>
 
CF-NX4_Top
CF-NX4_Inside

<目次に戻る>



機能の確認

基本的に、快適に動作します。
Windowsの起動は速く、Visual Studio Community 2019 のビルド作業もストレスなくできます。
冒頭の "独り言" のぼやきはほぼ解決されました。 

具体的に確認した内容を以下にまとめます。

NX4_Part_NumberPC裏側に貼ってあるラベルで品番が確認できます。
この品番に対応する構成を以下で確認できます。
CF-NX4E のカタログ

入手したPCは、BIOS でも型番 CF-NX4EDHCS が確認できるので、マザーボードレベルで CF-NXEDHCS だとわかります。
 
このPCの世界遍歴! ===
ところで、品番の末尾が [S] の場合は企業向けレッツノートです (CLUB PANASONIC に説明あり)。ネットで中古 NX4 の改造記事をよく見かけますが、その多くが CF-NX4EDHCS です。企業からの廃棄品を整備改造する対象として、数多く出回っているのでしょう。このPCも企業向けでした。

このPCにインストールされている Windows 10 Pro で Microsoft Account にサインインすると、PC名からこのPCの最後の登録地がアフリカの都市だとわかりました。日系企業のアフリカの事務所で使われ、そこで登録されたものが回り回って私の手元にやってきたのかも知れません。
================================

機能確認の具体的な内容をまとめます。

<目次に戻る>

メインストレージ

 (元は320GB HDD)

: Wise Advanced の 512GB SSD (新品) に換装されているのを確認

CrystalDiskInfodispaly
使用時間と電源投入回数をチェックすれば、新品のSSDだと確認できます。

Serial ATA は NVMe よりは遅いので、どのくらいのアクセス速度かを見てみます。
NVMe の半分以下ですが、2.5インチ HDD に比べたら4倍以上速くて良いです。
CrystalDiskMark_display

RAM

 (元は4MB?)

: 8MB を確認


元はスロット1に 4GB、スロット2はメモリが無い状態。そこで スロット2に
4GB メモリを簡単に増設したと思われます。
Setup_System_1
なお BIOS でも 8GB RAM を確認できます。 

ACアダプタ警告

: 同梱されていたバッテリーは警告が出る

同梱されていたPanasonicのロゴ入りACアダプタを繋いで電源を入れると
 "製品に同梱されているACアダプターをご使用ください。
 
製品に同梱されているACアダプターを使用時にこのお知らせが表示された場合は、
  ACアダプターがパソコン本体に正しく奥まで挿し込まれていない可能性があります。
  一度パソコン本体よりACアダプタを抜いてから奥まで挿し直してください。

  何かキーを押すと続行します。"

というメッセージが表示され、起動するためにワンアクション余計に要求。

AC_Adapter
同梱されていた 純正ACアダプタ CF-AA6412C M2 (Output 16V, 4.06A)

この CF-AA6412C M2 では 警告が出ないというブログもあるのですが...??
Let's note R7 で使っていた純正ACアダプタでも同じ警告が表示されます。
ちなみに、NX4 用の正規ACアダプタは CF-AA6412CJS です。


バッテリー

 (元はLパック?)

: 本来は大容量バッテリーパック(L) が付属するはずが、軽量バッテリーパック
  (S)が付属。幸運なことに 90%程度の劣化であった。


劣化が進んだ大容量バッテリーパックよりは良い。ラッキー!
大容量バッテリーパック(L)は 430g、軽量バッテリーパック(S)は 220gなので、
持ち運びには軽量バッテリーの方が軽くて良い。

※ Lパックは公称放電容量 13,600 mAh (9時間)、Sパックは 6,800 mAh (18時間)
※ 設計容量は Lパックで 93 Wh、Sパックは 47 hW とラベルに記載
※ Battery report の結果は Lパックで 92,16092,160 mWh、Sパックは 46,080 mhW

今回のPCに付属していたバッテリー CF-VZSU75JS はリコール対象の
可能性があり(発火事故)、ロット番号により判別可能対象です ⇒ リコール社告
新品に交換して貰える可能性に期待しましたが、残念なことに対象外でした。
Panasonicでは、対象バッテリーの交換と同時に、充電を80%に抑える「充電制御
ユーティリティ」を提供しています。

さて、Windows に標準で用意されている電源管理ユーティリティ powercfg.exe に
含まれる Battery Report 機能を使ってこのバッテリの評価を行います。
詳しい使い方は以下が参考になります。
【Windows】ノートPCのバッテリー容量などの情報を確認する方法
WindowsノートPCのバッテリー寿命/劣化具合を調べる ~ 

BatteryReport_Result

新品時の設計容量 (DESIGNED CAPACITY) が 46,080 mWh
現在フル充電できる容量 (FULL CHARGE CAPACITY) が 41,470 mWh

現在のバッテリー容量は新品に対して 89.99% に低下していました。
へたり具合が 90% 程度というのは、程度の良い中古バッテリーパックです。

余談ですが、上の結果の中で SYSTEM PRODUCT NAMEPANASONIC 
CORPORATION CFSX4-1
と表示されています。メインボードレベルでは、
CF-SX4 のバリエーションの1つが CF-NX4 となっているようです。

[Fn] と [Ctrl]


 

BIOS で入れ替えた


普段使っている複数のPCは、[Ctrl] キーが左端にあるが、Let's note は [Fn] キー
が左端にあるため、手が覚えている [Ctrl] の位置に [Fn] があって頻繁に押し間違
えます。
※ BIOS に [Fn][Ctrl] を入れ替える機能があるので、入れ替えました。
※ キートップのサイズが異なるため、キー自体の入れ替えはできませんでした。

ホイールパッド


 

: 上下左右のスクロール機能、拡大/縮小機能が使えない

 Let's note 専用ドライバの追加とアップデートで対応
 

バッテリー管理

: 残り時間の表示が不安定で不正確

 Let's note 専用ドライバの追加とアップデートで対応
 

"不明なデバイス"

: デバイスマネージャーで "不明なデバイス" が10個以上ある

 Let's note 専用ドライバの追加とアップデートで対応
 

ネットセレクタ

: ネットセレクタがインストールされていない

2008年頃に Let's note R7 を購入して使っていたが、Let's note 専用アプリの
ネットセレクタは非常に秀逸でこれなしでは困るくらいに愛用していた。

 Let's note 専用ドライバの追加とアップデートで対応
 

 


Let's note 専用ドライバの追加とアップデート

Let's note 専用のデバイスドライバは、ほとんどインストールされていませんでした。
新品のSSDにWindows 10 をクリーンインストールしたようです。そこで専用ドライバをインストールすれば、上に挙げた "ホイールパッド"、"バッテリー管理"、"不明なデバイス"、"ネットセレクタ" の問題は解決すると考えました。

Let's note NX4 は発売当初 Windows 8.1 に変更可能な状態で Windows 7 も選択できる仕様になっており、Windows 8.1 対応のドライバが準備されていました。さらにその後 Windows 10 への無償アップデートに対応して、Windows 10 に必要なアップデートが用意されていました。

ネットで調べたところ、ちょうど良い情報があったので、それを参考にしてドライバとアプリをインストールしました。
Panasonic レッツノート CF-NX4 に Windows 10をクリーンインストールする&不明なデバイスのデバイスドライバ

ドライバやアプリの多くは、インストールの手順書が PDF で提供されており、ジックリと読んでから作業を行いました。


 CF-NX4 のマニュアル類の閲覧と入手


バッテリー診断・制御プログラム
 ※ これは既にインストールされていました。
 ※ 不良バッテリーが劣化すると発火の恐れがあるため、バッテリーのリコール対応がまだ続いています。
 ※ リコール対象のバッテリー交換だけでなく、"バッテリー診断・制御プログラム" のインストール推進キャンペーンも継続。
  "バッテリ診断・制御プログラム" インストール促進策
  ノートパソコン「バッテリー診断・制御プログラム」インストールのお願い
 2018年3月に発表したリコールに対して、2020年10月 になっても対応を継続しているとは、
 さすが panasonic ですね。

<目次に戻る>


Let's note 専用ドライバ・アプリのリストとインストール順序
このページで download をクリックしても管理人の環境のセキュリティ条件では exeファイルのダウンロードが受け付けられない。この場合は、右クリックして「リンクのアドレスをコピー」を選択し、ブラウザの新たなタブを開いてアドレスバーに [Ctrl] + [V] でペーストし [Enter] を押してダウンロードします。

 ※ #21ホイールパッドユーティリティ をインストールするため
   #1 から #21 までは、順序通りに全てインストール 

 ※ #37ネットセレクタLite をインストールするため
   必須のもの #24#30 を順序通りに全てインストール
なお、私が入手した機種は、非接触ICカードリーダー、スマートカードリーダー、ワイヤレスWAN (スマホのSIMカード組み込み) はないので、#31#35 はインストールしません。 

デバイスマネージャでの不明のデバイスが全て消えました。
 
ホイールパッドユーティリティーを新たにインストールした直後は、ホーイルパッドはまだ使えません。
スタートメニューの [Panasonic] - [ホイールパッドユーティリティ] をクリックして有効化すると、上下左右のスクロールや拡大/縮小ができるようになりました。
スタートメニューの [Panasonic] - [ホイールパッドの設定] で細かい設定を行います。
特に問題ないので、デフォルトのままにしています。
 
実は、ネットセレクターLite の設定を行う前に、下記の ドライバーのアップデート を先に実施しています。特に [4] Windows 10用、無線ドライバー、Bluetoothドライバーアップデートプログラム による影響を回避する目的で、このようにしました。

切り替えて使いたいインターネットアダプターの設定を ネットセレクターLite に登録し、これらの間で簡単に切替えができることを確認しました。バージョン V1.10L12 がWindows 10 で問題なく動作しています。

NetSelectorLite_inOperation

ネットセレクター Lite のマニュアルが簡単に見つかりません。そこで実際に触って設定を行いました。このアプリは、一旦保存しておいたネットワークアダプターの設定を使って切り替えるものであり、それ以上でも以下でもないという点を理解して使ってみれば、個々の動作は理解できて、設定は難しくありません。

なお [プリセット無線LAN] と [プリセット有線LAN] のプロファイルはそのまま残しておくほうが良いかも
知れません。

上の画像は、無線LANのネットワークアダプター設定を2通り登録し、自動適用モードにしているところです。「DHCP接続の設定」と「IPアドレスを設定した接続」を自動で切り替えます。

自動適用モードはとても便利な機能です。というのも、接続したい無線LANのSSIDを選ぶか、有線LAN のケーブルをPCに接続するだけで、それに対応したアダプター設定に自動的に切り替えてから接続してくれます。つまり、自動適用モードではネットセレクターLite を直接操作しないで、文字通り自動接続します。
これがやりたかったのです!

秀逸なアプリだと思います。
この利便性は、Let's note 専用アプリの ネットセレクター以外のアプリで見たことが無いので、もしあれば是非教えていただきたいところです。他のPCでも是非とも使いたい機能です。
 
以上で当面の目的は達成されました
次は、セキュリティ上の脆弱性に対応したアップデートを行います。

<目次に戻る>


ドライバのアップデート (CF-NX4EDHCS の場合) このページは随時更新されます
このページにはアップデートするドライバがインストール順のリストになっていて、必要なものだけをアップデートします。必要かどうかは以下のようにして判断しました。
1. 上記の ドライバアップデートのページの各項目ごとに確認します
2. リストの上にあるものが新しいアップデート情報。
  ※ リストの下に Win8.1 / 7 用の同じドライバのアップデートがあれば、それは不要
  ※ 搭載されていないハードウェア機能に関するものは不要
3. 各項目のページにジャンプし、手順書をダウンロードしよく読む
  ※ 手順書をよく読み、Windows 10用であるか、アップデートドライバのバージョンが新しいかを確認
  ※ ドライババージョン確認には、上でインストールした "PC情報ビューアー" が必要なことがある

  [3] Windows 10、Windows 8.1用 タッチパネルドライバアップデートプログラム
  [4] Windows 10用、無線LANドライバー、Bluetoothドライバーアップデートプログラム
  [8] CF-SX4、NX4シリーズ BIOSアップデートプログラム
  [9] インテル(R) ラピッド・ストレージ・テクノロジーインストールプログラム (14.8.16.1063)
[10] Intel(R) MEファームウェア アップデートプログラム (10.0.60.3000)
・[12] Windows 7, Windows 8.1, Windows 10用 TPM 1.2 ファームウェア更新ツール
・[16]
 Windows 10用 ビデオドライバーアップデートプログラム (2019.15.4835)

[7] Windows 7/8/10用 セキュリティ改善ユーティリティ 201909A は、適用すると 不具合が発生。Windows Update を適用して不具合が回避された。従ってこのアップデートの適用性は疑問。ただし一度適用して Windows Update を適用するのが正しいのかもしれないが、その真偽は不明。

[2021/07/30 追記]
[12] Windows 7, Windows 8.1, Windows 10用 TPM 1.2 ファームウェア更新ツール は、TPM 2.0 へアップデートする。将来Windows 11 へアップデートする場合は、TPM 2.0 が条件の1つになりそうなので更新して見たが、Windows 11 へのアップデートはできないことが判った。なお TPM 2.0 へのアップデートは、サインインにPINを設定している場合は無効にしておかないと、更新後PINを設定できなくなる問題があり、さらに BitLocker を "無効化" あるいは "中断状態" にしておかなければ更新できないので、要注意! 途中で3回再起動するが、そこで英文での説明画面で [F12] を押すなど、事前に手順書を十分読んで理解しておかないと混乱する可能性がある。手順が煩雑なので、慎重に作業を進める必要がある。
=== 追記ここまで ===

それぞれのアップデートに関して、必ず手順書のPDFをダウンロードし、しっかりと内容を理解しながら、記述に従って進めるようにします。BIOSのアップデートなど、複数のアップデートファイルが提供されているので、CF-NX4EDHCS 用の正しいものを間違いなく選んでダウンロードします。

USB接続機器を取り外して作業を進めるように指示される場合は、マウスが使えずにホイールパッドを使わないといけないので、1つ前の「各種ドライバのインストール」でホイールパッドのデバイスドライバのインストールをして、ホイールパッドが確実に動作する状態にしておくと良いでしょう。

無線LANドライバー、Bluetoothドライバのアップデートは、手順が煩雑なので、手順書通りに注意深く作業を進めます。時間の余裕のあるときに作業をすると良いと思います。

<目次に戻る>


 最新ドライバアップデートページの確認方法
1. Panasonic サイトの "パソコンサポート トップ" > “ダウンロード" ページにアクセス
2. ページの一番上にある検索ボックスで、正しい型番を入力して検索
 ※ 今は CF-NX4EDHCS と入力して [検索] クリック
これで、最新のドライバアップデートリストが表示されます。

このページで [新着情報] を念のために確認しましたが、CF-NX4EDHCS 用のアップデートはありません。NX4 は古くてサポートが終了しているので新着情報には含まれないと思います。

ここまでの一連のドライバ・アプリの適用を行うと、システムドライブ (C:¥ など) に展開用フォルダが作成され、合計で 3GB 以上の容量が使われていました。

<目次に戻る>



イメージバックアップ
専用ドライバの導入とアップデートはそれなりの注意力と時間を要したので、ここまでの状態でストレージ (SSD) のイメージバックアップをしました。Acronis True Image 2019 のPC 3台インストール対応版を持っていて、1台分余っていたので、これを使いました。

ちなみに、512GB SSDは以下のようになっています。
NX4ディスクの管理

<目次に戻る>



回復ドライブの作成
32GB のUSBフラッシュメモリに回復ドライブを作成しました。

<目次に戻る>



おまけの 32GB USBフラッシュメモリ
USB_Flash

VETESA と金属表面にレーザマーキングされています。VETESA は格安パソコンのメーカーだと思うのですが、USBメモリも作っているのでしょうか? ひょっとしてプロモーション用のアメニティかも、と思って Amazonで調べてみると全く同じデザインのものが見つかりました。金属表面に様々なレーザマーキングをして販売しているようです。ということで、VETESAのアメニティグッズがおまけてついてきたようです。

USBポートに挿しても認識されないことが結構な割合で発生します。やはりそれなりのモノなのでしょう。一時的なデータのやりとりに使ってその場で確認するような使い方には良いですが、大切なデータを保存するのはチョット怖くて使いたくないですね。

ちなみに、書き込みが結構速いです。
32GB USB Memory


ドライブを調べてみると、プライマリパーティションになっていました。
NX4_USBDrive_ディスクの管理

<目次に戻る>



添付の中古バッテリー動作
添付されていた中古バッテリーは、軽量バッテリーパック(S) CF-VZSU75JS (G45G-50475) で、劣化90%程度でした。
これは 220g 程度と軽く、本体に取り付けてもはみ出さず持ち歩きが楽で、バッテリーを含む重量は 1.0 kgです。この中古の軽量バッテリーで実際に使ったときの印象は、やはり駆動時間は作業内容で大きく異なるということです。

バッテリーメーターに表示されるプランを "パナソニックの電源管理" にし、ディスプレイの明るさを 40% に設定しました。

電源モード "最大のバッテリー残量" のとき
軽い作業
ネットでいろいろと調べてブログ記事を書く程度なら、満充電から4時間で 20% まで低下、6時間程度で 9% まで低下しました。
中程度の作業
Visual Studio Community 2019 をダウンロード&インストールしたときは、2時間程度で80%から10%までの70%程度低下しました。このときは、この中程度の作業以外は軽作業で、トータルで5時間程度で満充電から10%まで低下しました。

電源モード "より良いバッテリー" のとき
中程度の作業
ファイルのコピー、設定変更に伴う多くの再起動を行い、それ以外はOfficeアプリやブラウザでブログの作成を行ったときは、4.5時間程度で満充電から10%まで低下しました。

Let's note 専用アプリの "PC情報ビューワー" を起動し、"バッテリー使用状況" タブを開くとバッテリーの使用履歴がわかります。
Battry_Status
 
積算充電指数 - ほぼ空から満充電までの充電に相当する充電 - が64回分しか無いことがわかります。この中古のバッテリーは、あまり使われていなかったようです。このアプリは内部で  PowerCfg を使って情報をとっているのだと思います。

<目次に戻る>



新品の大容量パッテリー動作 [2021/08/01 追記]
大容量バッテリー CF-VZSU76JS (J87K-10403) を購入しました。これでほぼ一日バッテリーのみで使えると思います。
430g と軽量バッテリーの倍近い重さで、本体に取り付けるとはみ出します。このバッテリーを取り付けるとPCがずっしりと重く感じます。

バッテリーメーターで表示されるプランを "パナソニックの電源管理" にし、ディスプレイの明るさ 40% に設定しました。

電源モードが "より良いバッテリー" のとき
中程度の作業
大量のファイルコピー、アプリのインストール、各種設定変更に伴う多くの再起動を行い、Officeアプリを使った資料作成、ホームページ更新、ブログ更新を行いました。約11.5時間で、満充電から容量 10% まで低下しました。
軽い作業のみ、そして電源モードを "最大のバッテリー残量" にすると、間違いなく12時間以上、おそらく13時間程度使えると思われます。

電源負荷の多い作業を行うと残り時間が一時的に短くなり、しばらく軽い作業を続けると残り時間が長くなるという変動がみられます。合理的な表示だと思います。

<目次に戻る>



今後、気付いたことや更新内容があれば、随時追加します。



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




keywords: Windows8.1環境移行

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

関連記事

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

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

やす (Krtyski)

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


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

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

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


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

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

ブロとも申請フォーム

この人とブロともになる

QRコード
QR