温故知新 - fx-5800P

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


 
2021/01/04
追記:2021/01/09
追記修正:2021/02/10

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

7. 新世代 Casio Basic の特殊バージョン - 機能の改善

今回は、fx-9860G からの派生モデルとして2006年に発売された fx-5800P を取り上げる。日本国内では fx-5800P が先に2006年9月に発売され、その後2006年10月以降に fx-9860G が発売されている。
2006年9月発行のカシオ電卓総合カタログ - fx-5800P が NEW として収録されている
2007年12月発行のカシオ電卓総合カタログ - fx-9860G が収録、これ以前に発売開始

fx-9860G シリーズ (fx-9860G SDfx-9860G Slim を含む) は当初 OS1.xx として発売されたが、その後のアップデートでOS2.0x に搭載された 新世代Casio Basic は、2021年1月時点での最新モデル fx-CG50fx-9750GIIIfx-9860GIII にもその機能がほぼそのまま引き継がれており、大きな差が見られない。つまり 新世代Casio Basicfx-9860Gシリーズの OS2.0x でほぼ完成されていたことになる。

その一方で、fx-9860G シリーズの Casio Basic から、グラフィックス、I/O、文字列処理関連のコマンドを無くしたサブセット版が fx-5800P に搭載されている。但しサブセット版であるだけでなく、一部のコマンド(旧来の命令) では極めて重要な改善が行われている点には注目すべきであろう。改善点の詳しくは後述するが、この機能改善は何故かその後のグラフ関数電卓には反映されず、土木測量専用電卓 fx-FD10 Pro にのみ引き継がれているのは誠に残念だと言える。


Casio fx-5800P

fx5800P_calcfx-5800P は、2006年9月に新発売された。

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

使用可能なメインメモリは 28.5KBで、グラフ関数電卓のようにストレージメモリが無くアドインプログラムが使えない。

fx-5800P
 は、スタンダード関数電卓と同等のサイズと重量であり、グラフ関数電卓よりも遙かに小型軽量になっている。製品カテゴリは "プログラム関数電卓" であり、fx-9860G 以降のグラフ関数電卓で可能になっているOSアップデートには対応していない。

fx-5800P は、スタンダード関数電卓に 新世代Casio Basicによるプログラミング機能を追加したような位置づけになっている。

プログラム可能な電卓として、グラフ関数電卓と大きく異なるのは、COMPモード(通常の関数電卓モード) から [FILE] キーで新世代Casio Basicプログラムを呼び出して使える機能だ。COMPモードにおいて PROG コマンドが使えて、PROG "プログラム名" と入力するとプログラムを実行できる仕様が背景にある。プログラムモードに入らずにプログラムを実行できるので、不用意なプログラム変更の危険性を排除できる。なお、プログラム名に12文字使え、最大8文字のグラフ関数電卓と異なっている。


ハードウェアと外観
fx-5800P のサイズやキー配置は fx-4800P に極めて類似しており、外観だけでなく各種機能を呼び出すためのソフトウェアメニューも fx-4800P から発展したものになっている。

Programable_calcs

ハードウェアと外観からみれば、fx-5800Pfx-4800P の後継モデルのように見えるが、ソフトウェア仕様、特に搭載言語の面では、fx-4800P とは全く異なる系統であり、fx-9860G 搭載の 新世代Casio Basic の派生バージョンになっている。

ハードカバーのヒンジの脆弱性
fx-5800P の問題点の1つに、ハードカバーのヒンジが脆弱で壊れやすいことが挙げられる。これは材料選定や設計上の問題だと考えており、その詳細と解決策を以下で紹介している;
 ⇒ fx-5800P:ヒンジ破損でカバーが取れた
 ⇒ fx-5800P の破損ヒンジの交換、ついでにリニューアル

PCリンク機能
fx-5800P は SB-62ケーブル (3Pinケーブル)を用いて fx-5800P 同士を繋いでプログラムの転送ができる。しかしPCとの間で転送するための PCリンク機能はカシオから提供されていない。これが fx-5800P のもう1つの問題点である。

ところが、takumako様により CcLinker というハードウェアとソフトウェアが提供されたことで、fx-5800P のPCリンクが可能になっている。
詳しくは以下を参照;
 ⇒ ついに fx-5800P がPCリンク可能になった

CcLinkerに続いて、fx-5800P新世代Casio Basic プログラムをPCで編集・作成できるエディタ CcEditor も takumako様により公開され、CcEditorで編集・作成したプログラムを CcLinkerfx-5800P に転送可能になっている。
なお、fx-5800P に内蔵されているが fx-5800P では入力できない隠しフォントを 文字や変数として使えることは殆ど知られていない。CcEditor には、fx-5800P の隠しフォントを文字や変数として使用可能とする機能もある。
詳しくは以下を参照;
 ⇒ fx-5800P Casio Basic をPCでコーディング - CcEditor


電 源
単四アルカリ乾電池1本で動作し、公称1年間動作となっている。単四サイズのニッケル水素充電池 (エネループなど) も使える。電源を入れると、前回電源を切った状態が再現されるデータバックアップ機能もある。このバックアップ機能はカシオのスタンダート関数電卓にはない機能であり、とても有用だと思う。


関数電卓としての性能

関数電卓としての使いやすさ
 グラフ関数電卓は大きくて重いので、スタンダード関数電卓に近いサイズと重さの fx-5800P は手軽に使える。実際に使ってみると、fx-5800P を関数電卓として使う時は、グラフ関数電卓よりも使いやすいと感じる。

そこで、シングルアクション(キーを1回押すだけ)で各種関数機能を呼び出せると使いやすく、次はダブルアクション(キーを2回押すだけ)で呼び出せると使いやすさが少し悪化する、といった観点で、スタンダード関数電卓、プログラム関数電卓、グラフ関数電卓の代表的モデルで比較してみた ( 温故知新:番外編 - 関数電卓としての使い勝手) 。その結果、グラフ関数電卓よりも fx-5800P がシングルアクションで呼び出せる関数が僅かに多いことが分かった。小型軽量であることも fx-5800P の使いやすさに繋がると思う。

分数表示と演算精度
235÷658 を計算すると 5/14 と表示され、[S↔D] キーを押せば 0.3571428571 と小数表示される。計算精度は 10 桁になっている。

桁落ち
123456789123456 - 123456789123411 を計算すると、本来 45 となるべきところ 0 となり、桁落ちが発生する。COMPモードだけでなく、Casio Basicでの計算でも同様だ。これは fx-5800P に限らずカシオの全ての関数電卓、グラフ関数電卓で見られるカシオ特有の問題である。ちなみに一部のモデルに搭載されている Pythonモードでは、この桁落ちの問題はない。

複素指数関数
eπi を計算してみる。計算できれば答えは -1 になる。
fx-9860G では複素指数関数の計算に対応し -1 が得られるが、fx-5800P では Math ERROR となり未対応だ。

積分計算 [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-5800Pπ173 秒

fx-9860Gシリーズは、最初の出力が分数になり、[F↔D] キーを押すと π と表示される。
fx-5800P では、最初の出力が π となり、[S↔D] キーを押すと分数に切り替わる。
但し、fx-5800P は fx-9860G よりも処理速度が非常に遅い。


搭載言語 (Casio Basic) の概要

搭載されている 言語 (新世代Casio Basic) の詳細仕様に着目すれば、fx-5800Pfx-9860G と互換のサブセット版になっている。fx-5800PCasio Basic は、fx-9860G 搭載コマンドから、グラフィックス、I/O、文字列処理のコマンドを取り去り、一部のコマンドは使いやすくなるように改善されている。この改善点は fx-FD10 Pro に反映されているが、fx-9860G よりも新しいグラフ関数電卓には反映されておらず、fx-5800P は特殊なサブセット版を搭載していると言える。

fx-9860G OS1.xx にはなく OS2.0x で追加されたコマンドの一部 (整数乱数発生 RanInt# など) が fx-5800P に追加されている。fx-9860G OS2.0xfx-9860GII 発売に合わせて公開されており、その公開前に fx-5800P に搭載されたものが OS2.0x に反映されているのが正しい順序だ。

主なコマンド
 - 入力:?, ?→, Getkey
 - 出力:" ", , Locate
 - 無条件ジャンプ: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
 - 乱数: Ran#, RanInt#
 - 配列:Z[] (配列変数) が1つだけ使える
 - リスト:List 
 - 行列:Mat 、行列初期化コマンド
Dim が未サポート
 - 各種関数

fx-5800P で改善されたコマンド類 (fx-FD10 Proでも対応)
 - ? のみでの入力
 - ?→" ":fx-9860G 以降のグラフ関数電卓では極めて使いにくい点が fx-5800P で改善されている。
詳細は以下を参照;
  fx-9860GII への移植 - 厄介な旧来の命令 を参照。


プログラムの作成と実行
キーコード取得プログラムを入力した。コマンドを入力するためのキー (キープレス) は、fx-9860Gシリーズ以降のグラフ関数電卓とは異なる。

ファイル名:GET KEYCODE
" GET KEYCODE" (スペース2個)
Locate 6,3,"HIT ANY KEY"
Locate 8,4,"<AC>:QUIT"
Lbl 0
Do
Getkey→K
LpWhile K=0
Locate 1,1,"KEYCODE =   "
(スペース4個)
Locate 11,1,K
Goto 0


GetKeyCode_simple_1 GetKeyCode_simple_2 

fx-5800P 隠しフォントの利用
fx-5800P では、デフォルトでは、数字と大文字アルファベット、いくつかの特殊文字だけが入力できる。
ところが実際には、小文字アルファベット、ギリシャ文字、添え字のフォントが内蔵されており、この隠しフォントが文字や変数として使える。
GetKeycode1 



このバージョンのプログラムの動作を説明する。
いずれかのキーを押せば、そのキーコードが表示される。追加機能として、キーを長押しするとプログレスバーが延びてゆき、キーリピート回数が表示される。この追加機能には実用的な目的はなく、動きのある表現を加えてみたかっただけである。
CcLinkerで転送する cclファイル、CcEditorで編集できる cce ファイルは以下からダウンロード;
  GetKeycode2.zip のダウンロード


プログラムリスト
 
Program List には、アルファベット順にプログラム名 (ファイル名) が並んでおり、アルファベットを押すとそれから始まるプログラム名にジャンプできる。
ProgLIst 


プログラムの作成・編集
プログラム編集画面は、挿入モードになっており、使いやすい。
各コマンドのキープレス (コマンド入力のためのキー入力) は、[FUNCTION] キーで現れるソフトウェアメニューの配下に全て集まっているので、グラフ関数電卓よりもコマンドを探しやすい。

プログラムの作成について、詳しくは Casio Basic 入門 を参照。


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

PCリンク 
CcLinker_fx-5800Pカシオは fx-5800P のPCリンクの手段を提供していない。 

PCリンクを実現するのは、現在のところ takumako様による CcLinker が唯一の方法である。 

詳しくは ついに fx-5800P がPCリンク可能になった を参照。









テキストベース・プログラム
モグラ叩きゲーム
アクションゲーム - "Whack-a-Mole (もぐら叩き)" をCcLinker で転送した。そもそもオリジナルは fx-5800P で作成したもの。ここで転送したプログラムファイルは、WHACK-A-MOLEWAM の2つだ。

 Whacka-a-Mole_start Whacka-a-Mole_pla 

この程度のアクションゲームなら fx-5800P新世代Casio Basic でも作れることを確かめたくて作ったというのが真相だ。
このゲーム作成の詳細は以下を参照;
  プログラムライブラリ - もぐら叩き (fx-5800P)
  fx-5800P【ゲーム】:もぐら叩き~まとめ~


fx-5800P でのプログラミング

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


処理速度の比較

四則演算および関数計算

加算プログラム
加算 

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

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


数値積分プログラム
関数 

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

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

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

以前調べた結果と併せて、上記の計算速度のを比較結果を示す;
加算プログラム数値積分プログラム
機種実行時間比較実行時間 (秒)比較
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-9860GC 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-5800PGoto25.1 秒4.9 倍151.9 秒8.3 倍
For16.4 秒7.5 倍126.8 秒10.0 倍
記念すべき FX-502P を基準に、速度が何倍になっているかも併せて示している。

fx-5800P は、グラフ関数電卓 fx-9860G に比べて10倍以上処理速度が遅いことが判る。
単四電池1本で1年間保たせる設計は、スタンダード関数電卓を意識したものと思われ、そのために電流消費を抑える必要からCPUの処理速度を抑えてることを優先させたことから、グラフ関数電卓よりもかなり処理速度が遅くなっていると思われる。


プログラム電卓の系譜 

単なる計算やグラフ表示のマクロ言語から脱却し、アプリケーションとしてのプログラムを書けるように進化した 新世代Casio Basic を初めて搭載したのが fx-9860G で、さらにカシオのプログラム電卓で初めてアドインプログラムを走らせることができるようになり、それを開発するための公式SDKの提供も行った野心的なモデルであった。また、新たにUSBポートを備え、PCとUSBケーブルでリンクできるようになり、従来の 3Pin - USB接続よりも高速なデータ転送が可能になった点も大きな進歩であった。2005年発売の fx-9860G の基本設計は、2021年現在の最新モデル fx-CG50fx-9860GIIIfx-9750GIII にまで、ほぼそのまま引き継がれている。

このような野心的な fx-9860G の発売後、直接の後継モデル fx-9860GIII よりも先に 2006年に発売されたのが fx-5800P であり、このモデルには fx-9860GII で新たに搭載されることになるコマンドがいち早く搭載され、加えて fx-9860G の Casio Basic で使い勝手の悪いコマンド(旧来の命令) が改善されている。 しかし、この Casio Basic の改善点は、その後発売される土木測量専用モデル fx-FD10 Pro には引き継がれたが、残念ながら直系の後継モデル fx-9860GII には反映されていないのは残念だと思う。fx-5800P 搭載言語は、最新モデルに繋がる新世代Casio Basic の特殊な派生バージョンとなっている。

fx-5800P はスタンダート関数電卓にプログラミング機能を追加したという製品コンセプトが与えられているように思われ、直前に発売された fx-9860G 搭載の 新世代Casio Basic からグラフィックス機能、I/O機能、文字列処理機能を取り去ったサブセット版 Casio Basic を搭載したことで、処理速度は遅いながらも実用性の高いプログラムが作れるプログラム電卓に仕上がっている。fx-5800P には、関数電卓としての使いやすさが残されており、さらに通常の関数電卓モードであるCOMPモードから[FILE]キーを押して表示されるプログラムリストから直ちにプログラムを実行できる仕様 (グラフ関数電卓には無い仕様) により、プログラム実行環境としても良いやすく仕上がっている。

fx-5800P のハードウェア設計は、fx-4800P を発展させたもので、fx-4800P の後継モデルのようにみえる。一方で、搭載言語の詳細をみれば fx-9860G の Casio Basic の系譜てあることが明らかだ。

カシオの関数電卓のカテゴリーは、スタンダード関数電卓、プログラム関数電卓、そしてグラフ関数電卓に分けられる。主な市場は、数学や科学・工学教育市場 (主に学生) と技術者向けの市場であり、特にグラフ関数電卓は、日本国外の教育市場を主戦場として新製品が投入されるようになって久しい (2021年現在)。一方、プログラム関数電卓 fx-5800P は教育市場というよりも、スタンダード関数電卓に付加価値としてプログラム開発機能追加した製品に興味を持つ人が対象で、理工系の学生や技術者向けの実用的な実用的な用途を想定しているのは明らかだ。このような実用ユーザーは、安価な普通のスタンダード関数電卓で十分と思うのか、多少高価で大きく重い最新のグラフ関数電卓を使うのか、その間の価格帯で小型軽量なプログラム関数電卓 (fx-5800P) が良いと思うのか、という基準で関数電卓を選んでいるのではないか?

手軽にプログラムを書いて使う環境として、fx-5800P 以外にも最近はパソコンで手軽に使える Python などは有用になってきている。管理人は、Pythonfx-5800P の最大のライバルであるように感じている。2006年発売から 15年もの長期間、製造販売が継続している fx-5800P の存在価値は、パソコンを起動しなくても手軽に実用プログラムを作成&実行できる環境であることにあると考えている。 

2019年以降、最新のグラフ関数電卓 fx-CG50fx-9860GIIIfx-9750GIII には Pythonモードが追加され、ゆっくりであるがアップデートも進んでいる。Python 搭載は今後のプログラム電卓の新たな訴求点になってゆくと思われる。この方向性は、パソコンを起動しなくても手軽にプログラムを作成・実行する環境を提供するという視点では、fx-5800P の位置づけと大きく変わらない。

カシオのプログラム電卓の系譜を考えるとき、実用プログラムの作成が可能で過去の資産も豊富にある 新世代 Casio Basic と、言語仕様としてはまだ不十分かつ (まだ)実用性に乏しい Python モード (参照記事) の両方を搭載し、Pythonモードのアップデートをどのように進めるのかが、カシオのプログラム電卓の大きな転換点になると考えられる。




温故知新 - 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-CG20
温故知新 - fx-CG50
温故知新 - fx-CP400
温故知新:番外編 - 関数電卓としての使い勝手



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


 


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

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













関連記事

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

コメントの投稿

非公開コメント

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

やす (Krtyski)

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


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

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

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


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

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

ブロとも申請フォーム

この人とブロともになる

QRコード
QR