CASIO fx-5500LA
CASIOの関数電卓シリーズですが、fx-4600DCに続いて本日はfx-5500LAを紹介したいと思います。この機種は数式記憶機能を拡張したプログラム機能(最大1095ステップ)と、"Scientific Library"という計算機能(行列、求根、数値積分、複素数、2/8/10/16進数、統計)を備えているのが特徴です。また、単位換算機能なども備えています。

この電卓は2行表示のドットマトリクスLCDを備えていおり、一部の機能を使用する場合にはHPのRPL電卓のようにファンクションキーで機能選択を行うようになっています。画像は[SHIFT][5]でCALC(数式記憶機能)のメニューを呼び出したところです。例えばこの状態なら"CAL"→[F4]キーを押すと記憶されている数式が実行されます。

"Scientific Library"は[SHIFT]+[F1]~[F6]で呼び出すことができます。[F1]で行列演算、[F2]で方程式の解(2次方程式と、連立1次方程式)、[F3]で数値積分、[F4]で複素数演算、[F5]で2/8/10/16進演算、[F6]で統計計算(直線回帰分析も可能)となっています。画像は行列演算のメニューです。

プログラムの入力は、数式記憶(fx-4500Pのものに近い文法で、マルチステートメントや一時停止も使用できます)を拡張したものです。プログラムの入力・実行モードに入るには[SHIFT][5]でCALCメニューを呼び出し、数式を入力します。この状態で[IN]([F2])を押すと通常の数式記憶領域に保存され、[CAL]([F4])で計算可能になります。例によってここではピタゴラスの定理の計算式です。

[CAL]([F4])を押したところ。数値を入力して[F1]を押すとAの値、[F2]を押すとBの値を設定可能です。このあたりの操作はHP-19BIIのソルバー機能に通じるものがありますね(ただしこちらはソルバーではないので、方程式の解を求めたりすることはできません)。

変数をすべて設定してから[CAL]([F6])を押すと計算が実行されて結果が表示されます。

では、この数式をプログラム領域に保存してみましょう。CALCメニューで[OUT]([F3])を押すと先ほどの数式が呼び出されますので、[SET]([F6])を押すと保存されます。また、ここで新たな数式を入力して[SET]でもOKです。

[f]([F1])を押すと保存されている数式を呼び出すことができます([↑][↓]でスクロールできます)ので、必要な数式を選択して[IN]([F2])を押すと選択した数式が数式記憶エリアに呼び出されます。ここでは円の面積を求める式を呼び出してみました。

この状態で[CAL]([F4])を押すと実行できるようになります。

[F1]を押してRの値を設定してから[CAL]([F6])を押すと結果が表示されます。

このように、fx-5500LAの場合はプログラム領域に保存した数式を数式記憶領域に呼び出して利用するという方式になっています。文字で書くと複雑そうに思えますが、実際に操作してみると意外と簡単です。詳しくはマニュアル(英文のものをこちらにアップしておきます)をご覧ください。
恒例ですので内部も調べておくことにしました。電池はCR2032を3個使用するようになっています(うち1個はバックアップ用)。

基板を見てびっくり。fx-4500Pかfx-4600DCに似ているのかと思いきや、実はfx-6300Gのものと瓜二つです。CPUもHD62067で同じものを使用しています。

参考までにfx-6300Gの内部の写真も再掲しておきます。基板のパターンや部品配置もよく似ています。

つまりこの機種はfx-4500Pの兄弟というよりはむしろfx-6300Gの兄弟と言ったほうがよさそうですね。並べてみると確かに似ています。LCDの色などもそっくり…。

今思えばfx-6300Gにダミーのバックアップバッテリボックスがあったのは、このfx-5500LAと部品を共用するためだったのでしょうか。

というわけで、今回のシリーズで紹介した機種たちと、その兄弟たち、fx-4500P/4600DC/5500LA/6300Gについては近々ベンチマークの成績比較を行ってみたいと思います。

この電卓は2行表示のドットマトリクスLCDを備えていおり、一部の機能を使用する場合にはHPのRPL電卓のようにファンクションキーで機能選択を行うようになっています。画像は[SHIFT][5]でCALC(数式記憶機能)のメニューを呼び出したところです。例えばこの状態なら"CAL"→[F4]キーを押すと記憶されている数式が実行されます。

"Scientific Library"は[SHIFT]+[F1]~[F6]で呼び出すことができます。[F1]で行列演算、[F2]で方程式の解(2次方程式と、連立1次方程式)、[F3]で数値積分、[F4]で複素数演算、[F5]で2/8/10/16進演算、[F6]で統計計算(直線回帰分析も可能)となっています。画像は行列演算のメニューです。

プログラムの入力は、数式記憶(fx-4500Pのものに近い文法で、マルチステートメントや一時停止も使用できます)を拡張したものです。プログラムの入力・実行モードに入るには[SHIFT][5]でCALCメニューを呼び出し、数式を入力します。この状態で[IN]([F2])を押すと通常の数式記憶領域に保存され、[CAL]([F4])で計算可能になります。例によってここではピタゴラスの定理の計算式です。

[CAL]([F4])を押したところ。数値を入力して[F1]を押すとAの値、[F2]を押すとBの値を設定可能です。このあたりの操作はHP-19BIIのソルバー機能に通じるものがありますね(ただしこちらはソルバーではないので、方程式の解を求めたりすることはできません)。

変数をすべて設定してから[CAL]([F6])を押すと計算が実行されて結果が表示されます。

では、この数式をプログラム領域に保存してみましょう。CALCメニューで[OUT]([F3])を押すと先ほどの数式が呼び出されますので、[SET]([F6])を押すと保存されます。また、ここで新たな数式を入力して[SET]でもOKです。

[f]([F1])を押すと保存されている数式を呼び出すことができます([↑][↓]でスクロールできます)ので、必要な数式を選択して[IN]([F2])を押すと選択した数式が数式記憶エリアに呼び出されます。ここでは円の面積を求める式を呼び出してみました。

この状態で[CAL]([F4])を押すと実行できるようになります。

[F1]を押してRの値を設定してから[CAL]([F6])を押すと結果が表示されます。

このように、fx-5500LAの場合はプログラム領域に保存した数式を数式記憶領域に呼び出して利用するという方式になっています。文字で書くと複雑そうに思えますが、実際に操作してみると意外と簡単です。詳しくはマニュアル(英文のものをこちらにアップしておきます)をご覧ください。
恒例ですので内部も調べておくことにしました。電池はCR2032を3個使用するようになっています(うち1個はバックアップ用)。

基板を見てびっくり。fx-4500Pかfx-4600DCに似ているのかと思いきや、実はfx-6300Gのものと瓜二つです。CPUもHD62067で同じものを使用しています。

参考までにfx-6300Gの内部の写真も再掲しておきます。基板のパターンや部品配置もよく似ています。

つまりこの機種はfx-4500Pの兄弟というよりはむしろfx-6300Gの兄弟と言ったほうがよさそうですね。並べてみると確かに似ています。LCDの色などもそっくり…。

今思えばfx-6300Gにダミーのバックアップバッテリボックスがあったのは、このfx-5500LAと部品を共用するためだったのでしょうか。

というわけで、今回のシリーズで紹介した機種たちと、その兄弟たち、fx-4500P/4600DC/5500LA/6300Gについては近々ベンチマークの成績比較を行ってみたいと思います。
CASIO fx-4600DC
以前、CASIOの高機能プログラム関数電卓fx-4500Pを紹介しましたが、この機種にもデザインの似た機種がいくつかあります。本日から紹介していくのは、そんなfx-4500Pの兄弟たちで、下の画像で紹介している2機種(左から順に、fx-4500P, fx-4600DC, fx-5500LA)になります。

これらの機種はすべて2段表示のLCDを搭載していますが、その内容はそれぞれ異なります。fx-4500Pは上段が12桁のドットマトリクス、下段が仮数10桁+指数2桁の7セグメント表示となっています。

fx-4600DCは上段が12桁のドットマトリクス、下段が仮数12桁+指数2桁の7セグメント表示となっています。とはいっても有効数字12桁の演算結果表示を行ってくれるわけではなく、後述する電話帳機能で利用するためです。

fx-5500LAでは上段、下段とも16桁のドットマトリクス表示となっています。

これらLCD以外のデザイン(キーの配列など)はかなり似ている兄弟たちですが、本日はこの中からfx-4600DCについて紹介したいと思います。fx-4600DCは電話帳機能搭載の変わり種ですが、関数計算機能はfx-4500Pとほぼ同じでごく一部の機能(数値積分、Int、Frac、Abs)のみが省略されています。メモリもA~Zが利用できる点では共通ですが、配列やDefmは利用できません。

fx-4600DCには127ステップの数式記憶機能が搭載されており、いちおう「プログラム関数電卓」と言ってもよいと思われます(SHARPなどは同程度のフォーミュラメモリー搭載機を「プログラマブル関数電卓」と称しています)。その点ではfx-4100Pに近い印象を受けますが、数式記憶機能の文法自体はむしろfx-4500Pに似ており、◢(右下に角のある直角三角形)で一時停止、初出の変数名の後ろに""で括ったメッセージを置くことでプロンプトを表示可能など、fx-4100Pにはない機能が利用可能です。

そして、この機種の最大の特徴である電話帳機能です。マニュアルがないのですべての機能を解説することはできませんが、操作してみて分かった範囲で書いてみたいと思います。電話帳閲覧モードに入るには[TEL]キー(電話マークのキー)を押します。この状態でカーソル[↓][↑]キーで順送り、逆送りが可能です。このようにハイフンも入力・表示可能ですが、表示が12桁を超える場合は右端に"→"マークが点灯します。この場合はカーソル[→][←]キーでスクロールが可能です。また、閲覧モード時にはアルファベットキーを押して名前の先頭数文字を入力し[TEL]キーを押すと、前方一致での検索も可能となっています。

データの入力・編集モードに入るには[N/SET]キーを押します。"SET"表示が点灯し、入力・編集が可能な状態となったことを示します。

この状態で名前を入力して[EXE]、電話番号を入力して[EXE]と操作することで新規登録が可能です。

また、名前の入力待ちの状態("NAME?"表示中) に[↓][↑]キーで表示の順送り、逆送りができ、目的のデータを呼び出した状態で[→]キーを押すことで編集モードに入ることができます。

ちなみにレコードを削除するには、編集モードに入って名前を[DEL]ですべて消去して[EXE]を押します。

"DATA CLEAR?"の確認表示で再度[EXE]でレコードが削除されます。

入力できる名前、電話番号の桁数はよくわかりませんが、容量は1100バイトあるようです。[SHIFT][CAPA]キーを押すことで使用中の容量と、残り容量を確認することができます(ちなみにfx-4500PでのCAPA命令は、プログラムエリアの空き容量を確認する命令でした)。fx-4500Pでのプログラムエリアの容量が1103ステップであったことを考えると、搭載しているRAMの容量自体は同じと考えてよさそうですね。ちなみにデータの全削除が可能なのかどうかについては不明です。オールリセットするしかないのかもしれません。

電話帳機能にはいちおうシークレット機能も付いているようです。シークレットデータを入力するには、まず[N/SET]で入力モードに入り、[SHIFT][N/SET]と操作するとパスワード入力画面が表示されます。一度もパスワードを入力したことがない状態であれば、ここで入力したパスワードが登録され、すでにパスワードを入力したことがあればここで同じパスワードを入力します。(ちなみにパスワードのリセット、変更方法についてはわかりませんでした。シークレットデータをすべて削除しても保持されているようです。オールリセットすればクリアされるとは思いますが…。)

正しいパスワードを入力して再度[SHIFT][N/SET]を押すとシークレットデータの入力・編集画面になります("SET"表示の横に鍵のマークが点灯します)。この状態で入力したデータはすべてシークレットデータとして登録されます。ちなみにすでに登録されたデータをシークレットデータに変更することができるのかどうかは不明です。シークレットデータを閲覧するには"SET"が点灯してない状態で[SHIFT][N/SET]を押し、パスワードを入力して[SHIFT][N/SET]を押します。この操作によりシークレットデータ閲覧モードになり、シークレットデータのみが表示されます。
…と駆け足で解説してみましたが、こんな感じで電話帳機能を利用可能です。最後に内部も調べてみました。電池はメイン、バックアップともCR2032を1個ずつ使用するようになっています。

基板上には東芝のT6A56Hというチップが載っており、パターンもfx-4500Pとは全く異なっています。T6A56Hという型番は何となくゲートアレイっぽい印象も受けますが、検索してみてもよくわかりませんでした。機能やメモリ容量などはfx-4500Pと似ているので当然中身も似ているのかと思っていたので、意外な結果でした。

参考までに、こちらがfx-4500Pの内部です。

この機種が発売されたのは1991年ですからまさに電子手帳などがブームとなっていた時代ですね。CASIOはこの機種より少し前にfx-4200Pという機種も出していますが、これはfx-4100Pにメモ機能をつけたもののようです。関数電卓を肌身離さず持ち歩く人がどの程度いたのかは不明ですが(私などは学生時代FX-601Pを持ち歩いていましたが…汗)、時代を感じてしまう興味深い機種だと思います。次回はfx-5500LAを紹介したいと思います。

これらの機種はすべて2段表示のLCDを搭載していますが、その内容はそれぞれ異なります。fx-4500Pは上段が12桁のドットマトリクス、下段が仮数10桁+指数2桁の7セグメント表示となっています。

fx-4600DCは上段が12桁のドットマトリクス、下段が仮数12桁+指数2桁の7セグメント表示となっています。とはいっても有効数字12桁の演算結果表示を行ってくれるわけではなく、後述する電話帳機能で利用するためです。

fx-5500LAでは上段、下段とも16桁のドットマトリクス表示となっています。

これらLCD以外のデザイン(キーの配列など)はかなり似ている兄弟たちですが、本日はこの中からfx-4600DCについて紹介したいと思います。fx-4600DCは電話帳機能搭載の変わり種ですが、関数計算機能はfx-4500Pとほぼ同じでごく一部の機能(数値積分、Int、Frac、Abs)のみが省略されています。メモリもA~Zが利用できる点では共通ですが、配列やDefmは利用できません。

fx-4600DCには127ステップの数式記憶機能が搭載されており、いちおう「プログラム関数電卓」と言ってもよいと思われます(SHARPなどは同程度のフォーミュラメモリー搭載機を「プログラマブル関数電卓」と称しています)。その点ではfx-4100Pに近い印象を受けますが、数式記憶機能の文法自体はむしろfx-4500Pに似ており、◢(右下に角のある直角三角形)で一時停止、初出の変数名の後ろに""で括ったメッセージを置くことでプロンプトを表示可能など、fx-4100Pにはない機能が利用可能です。

そして、この機種の最大の特徴である電話帳機能です。マニュアルがないのですべての機能を解説することはできませんが、操作してみて分かった範囲で書いてみたいと思います。電話帳閲覧モードに入るには[TEL]キー(電話マークのキー)を押します。この状態でカーソル[↓][↑]キーで順送り、逆送りが可能です。このようにハイフンも入力・表示可能ですが、表示が12桁を超える場合は右端に"→"マークが点灯します。この場合はカーソル[→][←]キーでスクロールが可能です。また、閲覧モード時にはアルファベットキーを押して名前の先頭数文字を入力し[TEL]キーを押すと、前方一致での検索も可能となっています。

データの入力・編集モードに入るには[N/SET]キーを押します。"SET"表示が点灯し、入力・編集が可能な状態となったことを示します。

この状態で名前を入力して[EXE]、電話番号を入力して[EXE]と操作することで新規登録が可能です。

また、名前の入力待ちの状態("NAME?"表示中) に[↓][↑]キーで表示の順送り、逆送りができ、目的のデータを呼び出した状態で[→]キーを押すことで編集モードに入ることができます。

ちなみにレコードを削除するには、編集モードに入って名前を[DEL]ですべて消去して[EXE]を押します。

"DATA CLEAR?"の確認表示で再度[EXE]でレコードが削除されます。

入力できる名前、電話番号の桁数はよくわかりませんが、容量は1100バイトあるようです。[SHIFT][CAPA]キーを押すことで使用中の容量と、残り容量を確認することができます(ちなみにfx-4500PでのCAPA命令は、プログラムエリアの空き容量を確認する命令でした)。fx-4500Pでのプログラムエリアの容量が1103ステップであったことを考えると、搭載しているRAMの容量自体は同じと考えてよさそうですね。ちなみにデータの全削除が可能なのかどうかについては不明です。オールリセットするしかないのかもしれません。

電話帳機能にはいちおうシークレット機能も付いているようです。シークレットデータを入力するには、まず[N/SET]で入力モードに入り、[SHIFT][N/SET]と操作するとパスワード入力画面が表示されます。一度もパスワードを入力したことがない状態であれば、ここで入力したパスワードが登録され、すでにパスワードを入力したことがあればここで同じパスワードを入力します。(ちなみにパスワードのリセット、変更方法についてはわかりませんでした。シークレットデータをすべて削除しても保持されているようです。オールリセットすればクリアされるとは思いますが…。)

正しいパスワードを入力して再度[SHIFT][N/SET]を押すとシークレットデータの入力・編集画面になります("SET"表示の横に鍵のマークが点灯します)。この状態で入力したデータはすべてシークレットデータとして登録されます。ちなみにすでに登録されたデータをシークレットデータに変更することができるのかどうかは不明です。シークレットデータを閲覧するには"SET"が点灯してない状態で[SHIFT][N/SET]を押し、パスワードを入力して[SHIFT][N/SET]を押します。この操作によりシークレットデータ閲覧モードになり、シークレットデータのみが表示されます。
…と駆け足で解説してみましたが、こんな感じで電話帳機能を利用可能です。最後に内部も調べてみました。電池はメイン、バックアップともCR2032を1個ずつ使用するようになっています。

基板上には東芝のT6A56Hというチップが載っており、パターンもfx-4500Pとは全く異なっています。T6A56Hという型番は何となくゲートアレイっぽい印象も受けますが、検索してみてもよくわかりませんでした。機能やメモリ容量などはfx-4500Pと似ているので当然中身も似ているのかと思っていたので、意外な結果でした。

参考までに、こちらがfx-4500Pの内部です。

この機種が発売されたのは1991年ですからまさに電子手帳などがブームとなっていた時代ですね。CASIOはこの機種より少し前にfx-4200Pという機種も出していますが、これはfx-4100Pにメモ機能をつけたもののようです。関数電卓を肌身離さず持ち歩く人がどの程度いたのかは不明ですが(私などは学生時代FX-601Pを持ち歩いていましたが…汗)、時代を感じてしまう興味深い機種だと思います。次回はfx-5500LAを紹介したいと思います。
CASIO fx-300P
本日からまた少しCASIOのプログラム関数電卓を紹介していきたいと思います。本日紹介するfx-300Pは、学校教育用電卓として1980年ごろに発売されたと考えられています。機能的には同時期発売のfx-2700P、fx-3500Pに近く、デザインも似ていますが、双曲線関数の機能が省略されています。

fx-2700P(右)と並べてみました。双曲線関数の[hyp]キーがなくなったため、[MODE]キーが移動しています。それ以外のデザインはおおむね同じです(fx-300Pは10桁、fx-2700Pは8桁のため、LCDの幅は異なっています。)

では、これらの兄弟機種と思われる3機種のスペックを比較してみましょう。参考までにfx-3500Pの後継機であるfx-3600Pも載せています。上位機種であるfx-3500P/3600Pのみ三乗根キーがなかったりしますが、これは[P1/P2]キーを増やしたため場所が足りなくなったものと思われます。下記の違いに注意すればfx-3600Pのマニュアル(こちらで英語版を参照できます)を参考にできると思います。
プログラム言語はfx-3600P/3600Pv/360MTのものと同じであり、ジャンプ命令はプログラム先頭に戻る[RTN]命令、条件判断命令も条件が真の場合にプログラム先頭に戻る[x>0], [x≦M]命令を備えています。恒例のベンチマークも行ってみました。プログラムはfx-360MTと同じもの(整数はこちら、三角関数はこちら)を利用します。比較のため、fx-2700Pも同じプログラムで行ってみました。参考までにfx-3600Pの結果も載せておきます。(tan(355/226)の正解は -7497258.1853255…) 3機種ともほぼ同じような性能なのがわかりますね。
内部も調べてみました。基板のパターンや部品配置もfx-2700Pと似ており、CPUも同じHD43148が使用されています。性能・機能が似通っているのも当然ですね。

このfx-300Pには、fx-310P, fx-330Pという同シリーズの後継機(あるいは兄弟機?)があるようですが、300Pとの違いについてはよくわかりません。また、fx-300Pの前にはfx-180Pという学校教育用電卓があったようですが、180Pには少しずつ型番の違う後継機が何種類かあり、かなりの期間販売されていたようです。これらの学校教育用電卓については資料が少なく、たとえば300P系列の機種と180P系列の機種が併売されていた期間があったのか、そうだとしたらどのように使い分けられていたのかなど、不明な点が多いです。どなたか詳しい方がおられれば教えていただければありがたいです。

fx-2700P(右)と並べてみました。双曲線関数の[hyp]キーがなくなったため、[MODE]キーが移動しています。それ以外のデザインはおおむね同じです(fx-300Pは10桁、fx-2700Pは8桁のため、LCDの幅は異なっています。)

では、これらの兄弟機種と思われる3機種のスペックを比較してみましょう。参考までにfx-3500Pの後継機であるfx-3600Pも載せています。上位機種であるfx-3500P/3600Pのみ三乗根キーがなかったりしますが、これは[P1/P2]キーを増やしたため場所が足りなくなったものと思われます。下記の違いに注意すればfx-3600Pのマニュアル(こちらで英語版を参照できます)を参考にできると思います。
fx-300P | fx-3500P | fx-2700P | fx-3600P | |
表示桁数 | 10 | 10 | 8 | 10 |
プログラムステップ | 38 | 38 | 38 | 38 |
プログラムエリア | 1 | 2 | 1 | 2 |
双曲線関数 | × | ○ | ○ | ○ |
三乗根 | ○ | × | ○ | × |
数値積分 | × | ○ | × | ○ |
プログラム言語はfx-3600P/3600Pv/360MTのものと同じであり、ジャンプ命令はプログラム先頭に戻る[RTN]命令、条件判断命令も条件が真の場合にプログラム先頭に戻る[x>0], [x≦M]命令を備えています。恒例のベンチマークも行ってみました。プログラムはfx-360MTと同じもの(整数はこちら、三角関数はこちら)を利用します。比較のため、fx-2700Pも同じプログラムで行ってみました。参考までにfx-3600Pの結果も載せておきます。(tan(355/226)の正解は -7497258.1853255…) 3機種ともほぼ同じような性能なのがわかりますね。
fx-300P | fx-2700P | fx-3600P | |
1~1000の和 | 3分5秒 | 3分8秒 | 3分1秒 |
sin(1)~sin(100)の和 | 53.7秒 | 54.6秒 | 52.7秒 |
sin(1)を10回加算 | 4.4秒 | 4.4秒 | 4.4秒 |
69! | 1.1秒 | 1.1秒 | 1.1秒 |
tan(355/226)の値 | -7501875.46 | -7501875.5 | -7501875.46 |
内部も調べてみました。基板のパターンや部品配置もfx-2700Pと似ており、CPUも同じHD43148が使用されています。性能・機能が似通っているのも当然ですね。

このfx-300Pには、fx-310P, fx-330Pという同シリーズの後継機(あるいは兄弟機?)があるようですが、300Pとの違いについてはよくわかりません。また、fx-300Pの前にはfx-180Pという学校教育用電卓があったようですが、180Pには少しずつ型番の違う後継機が何種類かあり、かなりの期間販売されていたようです。これらの学校教育用電卓については資料が少なく、たとえば300P系列の機種と180P系列の機種が併売されていた期間があったのか、そうだとしたらどのように使い分けられていたのかなど、不明な点が多いです。どなたか詳しい方がおられれば教えていただければありがたいです。
fx-201Pでのプログラミング (2)
前回はfx-201Pでのプログラミングの基本を書いてみましたが、今回はジャンプ、サブルーチン、条件判断について書きたいと思います。
fx-201Pにおけるジャンプ命令は、[GOTO]を用い、ジャンプ先のラベルを指定するのに[ST#]を用います。ラベルは0~9の数値を利用可能です。また、[GOTO]のジャンプ先のラベルが[SUB#]になっている場合にはサブルーチン呼出として処理されます。それぞれの書式は下記の通りです。
[GOTO] ラベル [:]
[ST#] ラベル [:]
[SUB#] ラベル [:]
なお、サブルーチンから戻る命令は用意されておらず、プログラムの最後に達したら戻るようになっています。実際には下記のような書き方をすると、GOTO 1:, GOTO 2:, GOTO 3:はサブルーチン呼出として処理されると思われます。ちなみにサブルーチンのネスティングはできません。
……
<メインルーチン>
……
GOTO 9:
SUB# 1:
……
……
GOTO 9:
SUB# 2:
……
……
GOTO 9:
SUB# 3:
……
……
ST #9:
<プログラム末尾>
ジャンプ命令には[GOTO]のほかに[MJ]という命令があります。これは「マニュアルジャンプ」というもので、この命令を書いておくと、入力待ち([ENT])や結果表示([ANS])中に[MJ]キーを押すことによりその位置にジャンプすることができるというものです。[ST#]~[GOTO]のループで入力と計算を繰り返し、[MJ]キーを押すと最終結果が表示される、というような用途に利用できます。なお、この[MJ]コマンドについては後ろの[:]は不要です。
次は条件判断です。条件判断には[IF]命令を使用しますが、書式は以下のとおりとなります。
[IF] x [=] y [:] l1 [:] l2 [:] l3 [:]
xとyには0~9のメモリ番号、I, IMのいずれか、またはKに続く定数を指定できます。l1, l2, l3はラベルを示し、この場合の動作としてはx<yならl1, x=yならl2, x>yならl3にそれぞれジャンプするということになります。
fx-201Pのプログラム命令は以上ですべてになります。最低限のものは揃ってはいますが、かなり貧弱なのはお分かりいただけるかと思います。簡単なことをするのにもステップ数が多くなってしまいがちで、127ステップの容量はすぐに使いきってしまいそうですね。最後にこれまで利用してきたベンチマーク(1~1000までの和、sin(1)~sin(100)までの和)のプログラムを作ってみることにします。まずはこちら、1~1000までの和を計算するプログラムです。
0 = K1000 :
1 = K0 :
ST# 0 :
1 = 1 + 0 :
0 = 0 - K1 :
IF 0 = K0 : 1 : 1 : 0 :
ST# 1 :
ANS 1 :
結果は7分1秒で、これまで計測可能であった電卓の中では最も遅い結果でした。自分のPC-1212では未検証ですが、up-cさんのところで最も遅い部類のPC-1210/1211よりも遅いということになります。

次に、sin(1)~sin(100)までの和も計算してみました。これまでの機種はRADモードを利用してきたのですが、この機種ではsin(100)がエラーになってしまうためDEGモードを利用しました。プログラムは下記の通りとなります。
0 = K100 :
1 = K0 :
ST# 0 :
1 = 1 + 0 sin :
0 = 0 - K1 :
IF 0 = K0 :1 : 1 : 0 :
ST# 1 :
ANS 1 :
結果は3分8秒でした。これも計測可能な機種の中では最も遅い結果でした。そういえば古いプログラム関数電卓ということだとPC-1200が未計測でしたので、また近々やってみたいと思います。最後はループを用いずにsin(1)を10回計算して加算するプログラムです。(最初このプログラムがどうしても動作せず、なぜかと思ったら定数を表す"K"がすべて抜けていました…汗)
0 = K1 sin + K1 sin + K1 sin + K1 sin + K1 sin + K1 sin + K1 sin + K1 sin + K1 sin + K1 sin :
ANS 0 :
結果は15.9秒で、なんとPC-1001より遅い!! このままではウチの電卓の中では最も遅い電卓ということになってしまいそうです。ちなみにfx-201Pは階乗計算機能はついていないので、そちらで比較することはできませんでした。最後にtan(355/226)の精度も計算してみました。

結果は上の通りで、fx-140やfx-2500などに比べると良好な結果で、HP-15CやHP-41Cに近い精度でした(正しい結果は-7497258.1853255… です)。
以上で、合計3回にわたってfx-201Pについて紹介してきましたが、かなりクセがあるプログラム関数電卓であるということはお分かりいただけたかと思います。同時期のプログラム関数電卓であるPC-1200(1977年発売)、HP-41C(1979年発売)と比べるとかなり使いにくいと思いました。やはりCASIOのプログラム関数電卓で他のメーカーと渡り合えるものは、1978年のFX-501P/502P発売まで待たなければいけなかったようです(このfx-201Pは1976年発売です)。そのFX-501P/502Pが打って変わってかなり魅力的な機種に仕上がったのは皆様ご存知の通りですが…。
fx-201Pにおけるジャンプ命令は、[GOTO]を用い、ジャンプ先のラベルを指定するのに[ST#]を用います。ラベルは0~9の数値を利用可能です。また、[GOTO]のジャンプ先のラベルが[SUB#]になっている場合にはサブルーチン呼出として処理されます。それぞれの書式は下記の通りです。
[GOTO] ラベル [:]
[ST#] ラベル [:]
[SUB#] ラベル [:]
なお、サブルーチンから戻る命令は用意されておらず、プログラムの最後に達したら戻るようになっています。実際には下記のような書き方をすると、GOTO 1:, GOTO 2:, GOTO 3:はサブルーチン呼出として処理されると思われます。ちなみにサブルーチンのネスティングはできません。
……
<メインルーチン>
……
GOTO 9:
SUB# 1:
……
……
GOTO 9:
SUB# 2:
……
……
GOTO 9:
SUB# 3:
……
……
ST #9:
<プログラム末尾>
ジャンプ命令には[GOTO]のほかに[MJ]という命令があります。これは「マニュアルジャンプ」というもので、この命令を書いておくと、入力待ち([ENT])や結果表示([ANS])中に[MJ]キーを押すことによりその位置にジャンプすることができるというものです。[ST#]~[GOTO]のループで入力と計算を繰り返し、[MJ]キーを押すと最終結果が表示される、というような用途に利用できます。なお、この[MJ]コマンドについては後ろの[:]は不要です。
次は条件判断です。条件判断には[IF]命令を使用しますが、書式は以下のとおりとなります。
[IF] x [=] y [:] l1 [:] l2 [:] l3 [:]
xとyには0~9のメモリ番号、I, IMのいずれか、またはKに続く定数を指定できます。l1, l2, l3はラベルを示し、この場合の動作としてはx<yならl1, x=yならl2, x>yならl3にそれぞれジャンプするということになります。
fx-201Pのプログラム命令は以上ですべてになります。最低限のものは揃ってはいますが、かなり貧弱なのはお分かりいただけるかと思います。簡単なことをするのにもステップ数が多くなってしまいがちで、127ステップの容量はすぐに使いきってしまいそうですね。最後にこれまで利用してきたベンチマーク(1~1000までの和、sin(1)~sin(100)までの和)のプログラムを作ってみることにします。まずはこちら、1~1000までの和を計算するプログラムです。
0 = K1000 :
1 = K0 :
ST# 0 :
1 = 1 + 0 :
0 = 0 - K1 :
IF 0 = K0 : 1 : 1 : 0 :
ST# 1 :
ANS 1 :
結果は7分1秒で、これまで計測可能であった電卓の中では最も遅い結果でした。自分のPC-1212では未検証ですが、up-cさんのところで最も遅い部類のPC-1210/1211よりも遅いということになります。

次に、sin(1)~sin(100)までの和も計算してみました。これまでの機種はRADモードを利用してきたのですが、この機種ではsin(100)がエラーになってしまうためDEGモードを利用しました。プログラムは下記の通りとなります。
0 = K100 :
1 = K0 :
ST# 0 :
1 = 1 + 0 sin :
0 = 0 - K1 :
IF 0 = K0 :1 : 1 : 0 :
ST# 1 :
ANS 1 :
結果は3分8秒でした。これも計測可能な機種の中では最も遅い結果でした。そういえば古いプログラム関数電卓ということだとPC-1200が未計測でしたので、また近々やってみたいと思います。最後はループを用いずにsin(1)を10回計算して加算するプログラムです。(最初このプログラムがどうしても動作せず、なぜかと思ったら定数を表す"K"がすべて抜けていました…汗)
0 = K1 sin + K1 sin + K1 sin + K1 sin + K1 sin + K1 sin + K1 sin + K1 sin + K1 sin + K1 sin :
ANS 0 :
結果は15.9秒で、なんとPC-1001より遅い!! このままではウチの電卓の中では最も遅い電卓ということになってしまいそうです。ちなみにfx-201Pは階乗計算機能はついていないので、そちらで比較することはできませんでした。最後にtan(355/226)の精度も計算してみました。

結果は上の通りで、fx-140やfx-2500などに比べると良好な結果で、HP-15CやHP-41Cに近い精度でした(正しい結果は-7497258.1853255… です)。
以上で、合計3回にわたってfx-201Pについて紹介してきましたが、かなりクセがあるプログラム関数電卓であるということはお分かりいただけたかと思います。同時期のプログラム関数電卓であるPC-1200(1977年発売)、HP-41C(1979年発売)と比べるとかなり使いにくいと思いました。やはりCASIOのプログラム関数電卓で他のメーカーと渡り合えるものは、1978年のFX-501P/502P発売まで待たなければいけなかったようです(このfx-201Pは1976年発売です)。そのFX-501P/502Pが打って変わってかなり魅力的な機種に仕上がったのは皆様ご存知の通りですが…。
fx-201Pでのプログラミング (1)
少し前に紹介したCASIO初の本格的プログラム関数電卓fx-201Pですが、本日はそのちょっと変わったプログラム言語について紹介したいと思います。
fx-201のプログラムを入力するには、モード切替スイッチを"WRITE"に切り替えますが、WRITEモードで[AC]キーを押すとそれまで入力されていたプログラムは消去されますので注意が必要です。表示が"0."の状態でキー入力を行うと、プログラムとして記録されていきますが、プログラム入力中の画面は下記のような感じで左端の3桁が最後に入力したキーのステップ数(右端に表示されている"Γ6"が11ステップ目という意味です)を示し、その右側には3ステップ分のプログラムが表示されています。

プログラムの確認・編集は、WRITEモードでプログラムの新規入力中か"0."表示の状態で[CHECK]キーを押すと可能になります。この表示を"0."に戻す方法ですが英語版のマニュアルを読んでもよくわからず、モードスイッチを"COMP"にして[AC]を押し、再び"WRITE"に切り替えなおす方法しか見つけられませんでした(WRITEモードでは[AC]キーはプログラムのクリア、[C]キーは現在表示中の命令の消去になってしまいます)。ちなみに[CHECK]キーはFX-50xP/60xPなどの[FST]キーと同様の動作をしますが、[BST]に相当する逆送りキーは備わっていないようです。[CHECK]でプログラムを表示している状態で何かキーを押すと次の命令が新しく入力した命令で上書きされます(FX-50xP/60xPなどでは挿入になりますが、201Pでは上書きです)。また[C]を押すと表示中の命令が消去され"00"(FX-50xP/603PなどのNOP命令と同じでしょうか)に置き換わります。つまり、挿入や削除は一切できず、NOP命令を含めた他の命令で上書きするという形でしか編集はできません。下記に実際の操作例を示します。わかりやすいように[1][2][3][4][5][6][7][8][9]というプログラムを入力後、編集を行っている様子です。

[CHECK]で3ステップ目の"3"を呼び出したところ。

[C]キーを押すと"3"が"00"に置き換わるとともにステップが一つ前に戻ります。

再度[CHECK]キーを押して進めると、このように"3"が"00"に置き換わっているのが確認できます。

2つ上の画像のように2ステップ目に戻ったところで"9"を押すと、このように3ステップ目の"00"が"9"で上書きされます。

ステップを進めたところ。"3"が"9"に置き換わっており、その次の"4"以降は変化していません。

とまあ、こんな感じでかなり操作性は悪いです。では、実際のプログラムの基本構成を見てみることにしましょう。fx-201Pのプログラムは、データを入力するENTメッセージ→実際の演算を行う計算式→結果を表示するANSメッセージ、という構造が基本となっています。また、メモリはMANUALモードで利用できる独立メモリ(M)は使用できず、プログラム専用のメモリ0~9と、間接指定用レジスタI、Iによって指定されたメモリIMの12個が利用できます(Iには一桁の整数0~9のみ代入できます)。間接指定の考え方ですが、例えばI=3であれば、IMはメモリ3を指定したのと同じことになります。また、ひとつ独特な点として、計算式のなかでそのまま0~9と表記するとそれはメモリ0~9を指定したことになってしまい、定数値を指定したい場合は[K]に続けて書く必要がありますので注意が必要です。次に、各メッセージの書式を列挙していきます。
1. ENTメッセージ
メモリへの数値入力を求めるENTメッセージは次のように記述します。
[ENT] メモリ番号 [:]
メモリ番号は[:]で区切って複数記述すること可能で、たとえばメモリ1,2,3への数値入力を求める場合は次のようになります。
[ENT] 1 [:] 2 [:] 3 [:]
同じプログラムは、FX-50xP/60xPでは次のようになります。fx-201Pのほうが融通がきかないぶんシンプルになっていますね。(FX-50xP/60xPの[HLT]は単に実行を一時停止するだけの命令ですので、後にはメモリ代入の[Min]命令以外の命令も使用できます)
[HLT] [Min] 1 [HLT] [Min] 2 [HLT] [Min] 3
上記の命令を実際に実行すると下記のような画面になります。左端に"1"と表示され"ENT"インジケータが点灯していますが、これはメモリ1への数値入力を待っているという意味です。ここで数値を入力して[ENT]キーを押すと、入力した値がメモリ1に代入されます。

2. 計算式
基本的な書式は下記のとおりとなります。
メモリ番号 [=] 計算式 [:]
上記の書式を、必要な数だけ記述できます。計算式の書き方は通常の演算とほぼ同じですが、上でも書いた通り単なる数値はメモリ番号として認識され、定数値は[K]に続けて書きます。例えば、メモリ0に半径を入力して円の面積を計算し、メモリ1に結果を代入する場合は下記のようになります。(ちなみに[π]キーはWRITEモードでは定数に前置する[K]キーとして働くため、円周率を計算式中で使用するには手入力するしかなさそうです。)
1 [=] 0 [×] 0 [×] [K] 3.14 [:]
ちなみに同じプログラムは、FX-502P/602Pなどでは次のようになります。fx-201Pのものはこれに比べるとかなりわかりにくいですね。
[MR] 0 [x2] [×] [π] [=] [Min] 1
3. ANSメッセージ
結果を表示するANSメッセージは次のように記述します。
[ANS] メモリ番号 [:]
これもENTメッセージと同様、メモリ番号を[:]で区切って複数指定できます。
以上で簡単なプログラムを作成することは可能になります。例えば、ピタゴラスの定理のサンプルプログラム(昔電器店に展示してあったPC-1211の横に置いてあった説明書にピタゴラスの定理のプログラム例が書いてあったのが印象に残っており、ついつい使ってしまいます)はこんな感じです。乗除優先や()がないので書きにくいですね。これだけで31ステップも使ってしまいます。
ENT 0 : 1 :
2 = 0 × 0 :
3 = 1 × 1 :
4 = 2 + 3 :
4 = 4 √ :
ANS 4 :
実行するにはモードスイッチを"COMPに切り替えて[START]を押します。実際に実行し、0に3, 1に4を入力した場合の答え。左端に"4"と表示され"ANS"インジケータが点灯していますが、これはメモリ4の内容が表示されていることを示しています。この状態で[ANS]キーを押すと、表示を終了(メモリ番号を複数指定している場合は次の結果を表示)して次のプログラムステップへ進みます。

次回は条件判断やジャンプ、サブルーチンについて書いてみたいと思います。またそれを利用して他の電卓で行ったようなベンチマークテストも行う予定です。
fx-201のプログラムを入力するには、モード切替スイッチを"WRITE"に切り替えますが、WRITEモードで[AC]キーを押すとそれまで入力されていたプログラムは消去されますので注意が必要です。表示が"0."の状態でキー入力を行うと、プログラムとして記録されていきますが、プログラム入力中の画面は下記のような感じで左端の3桁が最後に入力したキーのステップ数(右端に表示されている"Γ6"が11ステップ目という意味です)を示し、その右側には3ステップ分のプログラムが表示されています。

プログラムの確認・編集は、WRITEモードでプログラムの新規入力中か"0."表示の状態で[CHECK]キーを押すと可能になります。この表示を"0."に戻す方法ですが英語版のマニュアルを読んでもよくわからず、モードスイッチを"COMP"にして[AC]を押し、再び"WRITE"に切り替えなおす方法しか見つけられませんでした(WRITEモードでは[AC]キーはプログラムのクリア、[C]キーは現在表示中の命令の消去になってしまいます)。ちなみに[CHECK]キーはFX-50xP/60xPなどの[FST]キーと同様の動作をしますが、[BST]に相当する逆送りキーは備わっていないようです。[CHECK]でプログラムを表示している状態で何かキーを押すと次の命令が新しく入力した命令で上書きされます(FX-50xP/60xPなどでは挿入になりますが、201Pでは上書きです)。また[C]を押すと表示中の命令が消去され"00"(FX-50xP/603PなどのNOP命令と同じでしょうか)に置き換わります。つまり、挿入や削除は一切できず、NOP命令を含めた他の命令で上書きするという形でしか編集はできません。下記に実際の操作例を示します。わかりやすいように[1][2][3][4][5][6][7][8][9]というプログラムを入力後、編集を行っている様子です。

[CHECK]で3ステップ目の"3"を呼び出したところ。

[C]キーを押すと"3"が"00"に置き換わるとともにステップが一つ前に戻ります。

再度[CHECK]キーを押して進めると、このように"3"が"00"に置き換わっているのが確認できます。

2つ上の画像のように2ステップ目に戻ったところで"9"を押すと、このように3ステップ目の"00"が"9"で上書きされます。

ステップを進めたところ。"3"が"9"に置き換わっており、その次の"4"以降は変化していません。

とまあ、こんな感じでかなり操作性は悪いです。では、実際のプログラムの基本構成を見てみることにしましょう。fx-201Pのプログラムは、データを入力するENTメッセージ→実際の演算を行う計算式→結果を表示するANSメッセージ、という構造が基本となっています。また、メモリはMANUALモードで利用できる独立メモリ(M)は使用できず、プログラム専用のメモリ0~9と、間接指定用レジスタI、Iによって指定されたメモリIMの12個が利用できます(Iには一桁の整数0~9のみ代入できます)。間接指定の考え方ですが、例えばI=3であれば、IMはメモリ3を指定したのと同じことになります。また、ひとつ独特な点として、計算式のなかでそのまま0~9と表記するとそれはメモリ0~9を指定したことになってしまい、定数値を指定したい場合は[K]に続けて書く必要がありますので注意が必要です。次に、各メッセージの書式を列挙していきます。
1. ENTメッセージ
メモリへの数値入力を求めるENTメッセージは次のように記述します。
[ENT] メモリ番号 [:]
メモリ番号は[:]で区切って複数記述すること可能で、たとえばメモリ1,2,3への数値入力を求める場合は次のようになります。
[ENT] 1 [:] 2 [:] 3 [:]
同じプログラムは、FX-50xP/60xPでは次のようになります。fx-201Pのほうが融通がきかないぶんシンプルになっていますね。(FX-50xP/60xPの[HLT]は単に実行を一時停止するだけの命令ですので、後にはメモリ代入の[Min]命令以外の命令も使用できます)
[HLT] [Min] 1 [HLT] [Min] 2 [HLT] [Min] 3
上記の命令を実際に実行すると下記のような画面になります。左端に"1"と表示され"ENT"インジケータが点灯していますが、これはメモリ1への数値入力を待っているという意味です。ここで数値を入力して[ENT]キーを押すと、入力した値がメモリ1に代入されます。

2. 計算式
基本的な書式は下記のとおりとなります。
メモリ番号 [=] 計算式 [:]
上記の書式を、必要な数だけ記述できます。計算式の書き方は通常の演算とほぼ同じですが、上でも書いた通り単なる数値はメモリ番号として認識され、定数値は[K]に続けて書きます。例えば、メモリ0に半径を入力して円の面積を計算し、メモリ1に結果を代入する場合は下記のようになります。(ちなみに[π]キーはWRITEモードでは定数に前置する[K]キーとして働くため、円周率を計算式中で使用するには手入力するしかなさそうです。)
1 [=] 0 [×] 0 [×] [K] 3.14 [:]
ちなみに同じプログラムは、FX-502P/602Pなどでは次のようになります。fx-201Pのものはこれに比べるとかなりわかりにくいですね。
[MR] 0 [x2] [×] [π] [=] [Min] 1
3. ANSメッセージ
結果を表示するANSメッセージは次のように記述します。
[ANS] メモリ番号 [:]
これもENTメッセージと同様、メモリ番号を[:]で区切って複数指定できます。
以上で簡単なプログラムを作成することは可能になります。例えば、ピタゴラスの定理のサンプルプログラム(昔電器店に展示してあったPC-1211の横に置いてあった説明書にピタゴラスの定理のプログラム例が書いてあったのが印象に残っており、ついつい使ってしまいます)はこんな感じです。乗除優先や()がないので書きにくいですね。これだけで31ステップも使ってしまいます。
ENT 0 : 1 :
2 = 0 × 0 :
3 = 1 × 1 :
4 = 2 + 3 :
4 = 4 √ :
ANS 4 :
実行するにはモードスイッチを"COMPに切り替えて[START]を押します。実際に実行し、0に3, 1に4を入力した場合の答え。左端に"4"と表示され"ANS"インジケータが点灯していますが、これはメモリ4の内容が表示されていることを示しています。この状態で[ANS]キーを押すと、表示を終了(メモリ番号を複数指定している場合は次の結果を表示)して次のプログラムステップへ進みます。

次回は条件判断やジャンプ、サブルーチンについて書いてみたいと思います。またそれを利用して他の電卓で行ったようなベンチマークテストも行う予定です。