newRPL は電卓用の OS です。HP 39gs/HP 40gs/HP 50g で動作します。
HP 50g
で最後になった
RPL言語
の実行環境の後継を目指しているようです。
前回の「
HP 39gs を newRPL 搭載電卓に改造
」において、HP 39gs で newRPL Build 1089 を使えるようになりました。
今回は newRPL について書いてみます。
しかし、newRPL は未だにベータ版なので未完成な面が多く、完全に調べる気はしませんでした。
オンライン説明書
も未完成すぎます。説明されていない機能が多く、関数の詳細説明がなかったり、未実装の関数が書かれていたりしています。
そのため、筆者が気になったところを中心にレビューを構成します。
newRPL User Manual の Introduction to newRPL によると、HP 50g(標準ROM) と比べて以下の変更点があるとのことです。
newRPL Build 1089 は、HP 50g(標準ROM) と比べて以下の機能を欠いています。
実用性という面では退化しています。
ALGモードがない方が操作の一貫性が良くなるので、個人的には歓迎です。
しかし、それ以外の機能に関しては将来の更新で追加されることが期待されます。
GUI は退化面もありますが、改良された面もあります。
Angle Indicator | 角度単位を表示。角度単位の種類は、DEGREE, RADIAN, GRAD, DMS。 |
Autocompletion Area | コマンドの自動補完を行う。写真では AT と入力した状態で ATANH が表示されている。 |
Command Line Editor | コマンド・数値・数式・文字列・プログラムの入力と編集を行う。 |
Complex Mode | 複素数モードかどうかの表示 |
Flag Indicators | フラグ1〜6の状態表示。プログラムで使用する。 |
Menu 1 | F1〜F6 キーと関連したメニュー |
Menu 2 | G〜L キーと関連したメニュー |
SD Card Indicator | SDカードの状態(HP 39gs では使えない) |
Stack Area | RPL言語でお馴染みのスタックを表示 |
HP 50g(標準ROM) の OS は、Saturn CPU コードで書かれていたので、エミュレーターで ARM コードに変換して動作させていました。
一方、newRPL は、ARM コードで直接動作します。そのため、newRPL の動作は HP 50g(標準ROM) よりも圧倒的に高速化しています。
もっさりとした操作性の HP 50g(標準ROM) と違ってサクサクと操作できます。
さらに HP 50g(標準ROM) は起動に数秒かかりますが、newRPL は一瞬で起動します。
HP 50g(標準ROM) は、Soft Menu の階層構造を複数持っていました。
一方、newRPL は、Soft Menu を1つの階層構造に統合しています。
ただし、newRPL の方が機能が少ないからこそ可能だっただけのような気もします。
操作は Menu 1 と Menu 2 によって行います。
Menu 1 が主に操作する Soft Menu です。
newRPL の Soft Menu (Menu 1) の基本操作は、以下のようになります。
キー操作 | 機能 |
---|---|
F1〜F6 | Menu 1 の項目を実行する。下の階層があるときは、下の階層に行く。 |
F1〜F6 長押し | Menu 1 に表示されている項目が関数・コマンドのとき、ヘルプを表示する。 |
P | 最上位階層に移動 |
右シフトを押してから M 押下 | 上の階層に移動 |
右シフトを押してから 6 押下 | Soft Menu の一部 UNIT を表示する |
HP 50g(標準ROM) の場合、上の階層に移動する操作が面倒でした(メニュー項目から上移動の項目を選ばないといけない)。
そのため、newRPL は、HP 50g(標準ROM) よりも Soft Menu の階層移動が容易になっています。
前述の写真のように newRPL には、Menu 2 が追加されています。 これは Menu 1 の補助的な役目をします。
Menu 2 の基本操作は以下のようになります。
キー操作 | 機能 |
---|---|
右シフトを押してから F1〜F6 | Menu 1 の項目に下の階層があれば、下の階層を Menu 2 に表示する。 |
G〜L | Menu 2 の項目を実行する。下の階層があるときは、下の階層に行く。 |
右シフトを押しながら M 押下 | 履歴に残った以前の Menu 2 を表示できる。Menu2 の履歴は8つまで。 |
Menu 2 の必要性ですが、Menu 1 で激しいメニュー階層内移動をするため、メニュー項目の表示を持続できる Menu 2 が必要だったのではないでしょうか。
ちなみに設定で Menu 1 と Menu 2 の役目を入れ替えることができます。
HP 50g(標準ROM) の文字入力方法は、以下のようになっていました。
キー操作 | 機能 |
---|---|
[ALPHA][1文字] | アルファベット大文字を1つだけ入力 |
[ALPHA][左シフト][1文字] | アルファベット小文字を1つだけ入力 |
[ALPHA][ALPHA] | アルファベット大文字ロック |
[ALPHA][ALPHA][左シフト][ALPHA] | アルファベット小文字ロック |
[ALPHA] | ロック解除 |
newRPL の文字入力は以下のように単純化されています。
キー操作 | 機能 |
---|---|
[ALPHA] | アルファベット大文字ロック |
[ALPHA][ALPHA] | アルファベット小文字ロック |
[ALPHA][ALPHA] | ロック解除 |
その代わり、1文字だけ入力する機能はありません(さほど必要ないと思われる)。
さらにカーソルキーが点滅しながら以下の表示をすることによって、入力モードを分かりやすくしています。
カーソル表示 | 入力モード | 説明 |
---|---|---|
D | Direct mode | 数値、コマンドなどの入力 |
A | Algebraic mode | 数式入力 |
P | Programming mode | プログラムの入力 |
C | Alphanumeric mode (Capital) | 大文字の入力 |
L | Alphanumeric mode (Lower) | 小文字の入力 |
HP 50g(標準ROM) の設定画面 |
HP 50g(標準ROM) のような設定画面がなくなりました。
そのため、newRPL の場合、一部の設定をコマンドでやる必要があります(Soft Menu だけで可能な設定もあります)。
特に数値表示の書式設定はかなり面倒です。
例えば、デフォルトの数値表示に設定する場合、以下のコマンドが必要になります。
{ "#.12#." 1E-12 "#.12#.E*" 1E12 "#.12#.E*" } SETNFMT
書式設定をリスト { } で表現し、SETNFMT コマンドで設定します。
{ } 内の意味は、
「通常時は書式 "#.12#." で表示(12桁の指数なし)」
「数値が 1E-12 よりも小さいときは書式 "#.12#.E*" で表示(12桁の指数あり)」
「数値が 1E12 よりも大きいときは書式 "#.12#.E*" で表示(12桁の指数あり)」
という意味です。
上の書式設定は煩雑ですが、一部だけ設定することもできます。
しかし、設定を色々と変更した後でデフォルト設定に戻すときは上の操作が必要です。
HP 50g(標準ROM) の CHOOSE ボックス |
HP 50g(標準ROM) の場合、CHOOSE ボックスがありました。 Soft Menu だと1項目に5文字しか表示できないので、その制約をある程度解決する手段でした。
しかし、newRPL は CHOOSE ボックスがありません。 そのため、Soft Menu だけで操作しないといけないのですが、項目名が長いときは何を表示しているのか分かり難くなります。
以下の式をプログラムにしたものを使って、HP 50g(標準ROM) と HP 39gs(newRPL) の速度を比較します。
プログラムは以下のものを使います。数式はRPN的に書いています。
角度単位はラジアンです(実行前に要設定)。複素数モードはOFFにします。
«
0 @ Total
0 10000 @ The beginning and the end of X
FOR X
X SIN
X COS
1
+
+
X
*
→NUM
+ @ Add 'X*(SIN(X)+COS(X)+1)' to the total
NEXT
»
測定結果は以下のようになりました。
実行環境 | 処理時間[秒] | 結果 | 備考 |
---|---|---|---|
HP 39gs(newRPL) | 21 | 50004626.1234. | 内部精度12桁 |
HP 39gs(newRPL) | 27 | 50004626.12212445136. | 内部精度32桁(デフォルト) |
HP 50g(標準ROM) | 355 | 50004626.1234 | 内部精度12桁 |
同じ内部精度12桁で比較すると、HP 39gs(newRPL) の方が HP 50g(標準ROM) よりも約17倍高速です。
しかし、思ったほどの差ではありませんでした。
というのも HP 39gs(newRPL) の方が圧倒的に有利なはずだからです。
HP 50g と HP 39gs は、どちらも CPU は同じ Samsung S3C2410A (ARM920Tコア) を搭載しています。
HP 50g(標準ROM) は、最大クロック周波数が75MHzです(HP 39gs(標準ROM) も同様)。
しかし、HP 39gs(newRPL) はオーバークロックによって最大192MHzまで向上しています。
さらに HP 50g (標準 ROM) は、Saturn CPU エミュレーターと RPL インタープリターが足かせになっているので、非常に不利です。
以上のことから何十倍も高速なことを期待していたのですが、そこまでの差はありませんでした。
とは言っても HP 39gs(newRPL) の方が圧倒的に高速なのも事実です。
newRPL Desktop Build 1089 はエミュレーター兼PC接続ソフトです(Windows 専用)。
このソフトウェアによって、USB ケーブルを経由して HP 39gs(newRPL) と PC を接続できるのです。
HP 39gs(newRPL) は、SDカードが使えないので、USB通信が重要になります。
前回 、 HP USB Drivers をインストールしたので、HP 39gs(newRPL) を USB ケーブルで PC に接続しても newRPL Desktop と接続できません。 なぜなら、HP 39gs(newRPL) は PC 接続ソフト Conn3x で識別できる 'HPx9G+ DEVICE' というデバイスになっているからです。 newRPL で識別できる「USB入力デバイス」にしないといけません。
以下のような手順が必要です(Windows 7 の場合)
この時点で Conn3x と HP 39gs(newRPL) は接続できなくなります。
デバイスマネージャーに 'HPx9G+ DEVICE' は表示されなくなり、ヒューマン インターフェース デバイスの中に「USB入力デバイス」が表示されます。これが HP 39gs(newRPL) です。
「USB入力デバイス」が複数表示されているときに HP 39gs(newRPL) を判別する方法は、後述します。
これで HP 39gs(newRPL) とPCの接続ができました。
接続後、newRPL Desktop Build 1089 は、HP 39gs(newRPL) の全データのバックアップとリストアが可能です。
バックアップファイルの拡張子は .nrpb のファイルとして保存されます。 一部のデータだけをバックアップすることは Build 1089 だとできないようです。
接続後、HP 39gs(newRPL) と newRPL Desktop の間でスタックのオブジェクトを送受信できます。
これによってプログラムやデータの転送などを行えます。
PC のクリップボードと newRPL Desktop のスタック間でテキストのやりとりもできます(下画像の Level 1 は、スタックのレベル1のこと)。
スタック上のオブジェクトの送受信方法には、2つの方法があります。
手軽に使える方法ですが、プログラムオブジェクト(« » で囲まれたオブジェクト)の送信に難点があります。
プログラムオブジェクトに対して USBSEND を実行すると、送信側でプログラムを実行してからスタックレベル1を送信するという動きになります。
つまり、プログラムの戻り値だけを送信することになります。
そのため、プログラムオブジェクトの送信を行うために工夫が必要です。
この方法でプログラムオブジェクトを送信するには、Prog>Text>→STRコマンドで文字列化してから送信する必要があります。
もちろん受信側で Prog>Text>STR→ コマンドを実行して、テキストをプログラムオブジェクトに変換する必要があります。
この方法の場合、プログラムオブジェクトをそのまま送信できます(少なくとも Build 1089 では可能)。
HP 39gs(newRPL) と PC接続ソフト Conn3x を接続しないとファームウェアの更新ができません。 そのため、Conn3x と接続できるように設定を戻す必要があります。
これで HP 39gs(newRPL) は、Conn3x と接続できるようになります。
newRPL Build 1089 の機能数は HP 50g(標準ROM) から大幅に少なくなっています。
特に CAS(数式処理システム)がないため、実用性は大きく見劣りします。
その代わり、高速化や内部精度を始めとする電卓の基本的な作りは改良されています。
さらにこのページに書いていない多くの細かい改良があります。
将来のバージョンアップに期待と言ったところでしょうか。 しかし、newRPL の開発元の HPGCC3.org が将来の計画を明らかにしておらず、いつになったら newRPL が完成するのかは不明です。 SOURCEFORGE によると、ソースコードのコミットは2019年3月現在でも行われています。
newRPL の将来に関して心配なことがあります。