7月に注文した HP15C Collector's Edition だが、中国で生産されて船でアジア地区代理店のあるオーストラリアに向っているとのこと。HPブランドの電卓は、チェコのMORAVIA Consultingという会社がHPよりライセンスを受けてHP Calcurator Divisionと名乗って開発しているらしい。
Swiss Microsが出しているDM15Lと比較してみた。
(1)演算性能
hpmuseum.orgというサイトの会議室によると、HP15Cで258.9秒かかるあるプログラムをDM15Lで実行すると 12.6秒でできるという。約20倍速い。ただしこれはDM15Lのクロックを48MHzに設定したときの実行時間で、12MHzにダウンしたときはほぼ4倍の51.7秒かかるそうだ。
HP15C Collector's Editionはオリジナルより百倍速いと宣伝している。同社が2011年に復刻したHP15C Limited Editionでは同じプログラムが2.1秒で実行できたそうなので、Collector's EditionがLimited Editionと同じ性能だとして確かに100倍以上速くなっている。
(2)メモリ容量
オリジナルのHP15C:
オリジナルのHP15Cは全部で67個のレジスタがあり、そのうちR_I, R_0, R_1の三つは演算専用である。R_Iはプログラムカウンタで、(HP15Cはスタックアーキテクチャなので)R_0とR_1がスタックのてっぺんと二番目だろう。一つのレジスタは7バイトである。それに続くR_2からR_65の64個は演算にも使えるしプログラム領域としても使える共通領域である。プログラムを置かずにR_2~R_65をすべて変数として使えば64変数おける。一方命令には1バイト命令と2バイト命令があり、すべて1バイト命令で構成されたプログラムを置けば64x7=448ステップとなる。実際には2バイト命令も混ざるのでこれより少なくなる。R_Iを除く66レジスタでユーザ領域合計462バイトになるが、今日でいえば微々たるメモリ領域である。
R_Iを除いて計算したわけは、R_Iがプログラムカウンタだとすれば7バイト必要ないからだ。HP15Cのプログラムでは、無条件ジャンプGTO命令とサブルーチンコールGSBの飛び先アドレスが3桁の十進数であることからプログラムの命令数は999以下に制限されている。なのでプログラムカウンタは10ビットあれば足りる。
HP15C Collector' Edition:
上のリンクのブローシャには、レジスタ数が99に拡張されていて最大672ステップのプログラムが組めるとなっている。先頭の三つを除くR_2 ~ R_97の96個のレジスタにプログラムが置けるとすれば96x7=672ステップとなり計算が合う。R_Iを除く98レジスタは合計686バイトでありオリジナルの1.5倍に拡張されている。
DM15L:
一方、上のリンクDM15LのブローシャによるとオリジナルのHP15Cは、初期状態においてR_2以降R_19までを変数領域、R_20からR_65までの46個をプログラム領域に割り当てていると説明している。DM15Lのファームウェアは三種類あって、DM15と呼ばれるファームウェアではオリジナルと同じ67レジスタ構成、DM15_M1Bと呼ばれる拡張されたバージョンでは合計232レジスタあってそのうち初期状態のプログラム領域が R_20 ~ R_230の合計211レジスタ構成になると読み取れる。
レジスタ番号は十進数2桁であらわされるので、変数として使えるのはR_0 ~ R_99の百個であり、R_100 ~ R230の131個はプログラム専用となる。なので最大百個の変数を使ったとしても、上限131x7=917ステップまでのプログラムを置くことができる。ユーザ領域はR_0 ~ R_230レジスタの231レジスタで1,617バイトになる。DM15Lはオリジナルの3.5倍、Collector's Edition比でも二倍以上のユーザー領域が使えるわけだ。
三つ目のファームウエアはDM15_M80と呼ばれ、上の二つの中間、すなわちR_129までの131レジスタ構成となる。
なおオリジナルでは、変数が最大64個であるため格納できる行列は8x8までである。拡張版のファームウェアでは9x9行列も格納できるはずだが、実際には上限8x8のまま据え置かれている。
以上、演算速度ではHP15C Collector's Editionの勝ち、メモリ領域ではDM15Lの勝ちとなった。