塩田紳二のPDAレポート

まだまだ現役、HPの電卓



 '70年代に技術系の仕事をしていたり、理工系の大学生だったのでなければ、Hewlett-Packard(HP)が電卓メーカーとして有名だったということは、知らないのではないかと思う。しかしHPは、'72年に世界最初の携帯型関数電卓「HP35」を発表したメーカーで、一時期、電卓は同社の主要な製品だった。

 HPでは、一連の関数電卓を「カリキュレータ(Calculator)」と呼んでいる。HPが'68年に初めて売り出した卓上型の計算機「HP9100A」は、コンピュータとして作られたのだが、当時のコンピュータのイメージとあまりに違っていたためにカリキュレータと呼ぶようにしたのだとか。HPに2桁の数字が続く型番は、伝統的に携帯型の電卓系列の製品番号になっている(卓上型の場合には9000番台が使われる)。

 HPの電卓は、かつては高級品で、ある種のステータスを持っていた。クリック感のあるキーや独特のRPN方式による計算、プログラミングが可能といった点で、非常に魅力があった。'70年代にこれを触った人の中には、いまだにHPの電卓を使い続けている人もいるぐらいである。

 筆者も'70年代に「HP19C」を購入、一時浮気はしたものの、ここ数年はまたHPの電卓を愛用している。使っているのは「HP48GX」という機種。

 複雑な計算なら、Excelを起動して使うほうがラクだが、原稿の文字数計算ぐらいのちょっとした計算ならば、常にディスプレイの脇に置いてあるHP48GXを使うほうが、Windowsのスタートメニューから電卓を起動するよりも早いのである。

HP19C。'70年代に入手したもの。これが本来のHP電卓のスタイル。なお、この機種は、サーマルプリンタを内蔵しているため、匡体が厚くなっている HP19Cは、高級感のあるキートップが特徴。f(黄色)、g(青)の2段シフトで、gシフトの場合の機能は、キー手前に書かれている。クリック感があり、適度なストロークで押し心地の良さを感じるキー HP28S。この機種までは、国内で購入した(当時はYHP、つまり横河ヒューレットパッカード扱い)。電卓としては珍しい2つ折りタイプ。RPLを装備したため、アルファベットのためのキーが必要になったからである。左側はほとんどがアルファベット用のキー
HP32SII。これは、HP28Sよりも後の機種だが、RPLではなくRPN方式のみの廉価版。コンパクトながらプログラミングも可能。こちらは米国にて入手 HP48GX。Saturnプロセッサを使ったHP製の電卓。RPLを装備し、グラフィック表示などを可能にしたHP48シリーズの最終機

●CESで新機種発表

 日本HPが2002年にHP電卓の取り扱いを中止したので、国内では入手が困難である。2002年に、HPは電卓事業を中止しようとしていたのである。

 しかし、今年1月のInternational CES 2004(CES)では、新製品「HP39G+」が発表された。2003年には「HP49GII」、「HP49G+」も出している。また、22年間も販売され続けてきた金融向けの「HP12c」もバージョンアップした。

 多くの新製品はHP製ではなく、台湾メーカーのOEMになってしまった。HPは、表示用LEDや専用プロセッサなど、多くの部品を内製してまで電卓を作っていたのだが、いまだにHP製といえるのは新製品である「HP12c platinum 」ぐらいである。

 CESでは、展示会場にブースも設けられたが、開催前日に行なわれるDigital Focusというプレス向けイベントにも、HP電卓が出展されていた。筆者が、HPの電卓を使っていることを告げると「日本からRPN-Manが来た」と言われ、説明員がみんな集まってきて「日本じゃRPNの受けはどうなんだ」とか、「関数電卓はいくらぐらいで売っているのか」などと逆に質問される始末だった。

●HP49G+とは

 というわけで筆者も気になって、2月にニューヨークに行ったときに、昨年10月に発売された「HP49G+」を購入してみた。値段は139ドル。カシオやシャープの関数電卓は高いものでも40ドル以下ということを考えると、米国でもかなり高い電卓である。

 HP49G+は、USBインターフェースやSDカードスロットを装備し、131×80ドットのモノクロLCDに、2.5MBのメモリを内蔵している。

HP49G+。キーボードは、3段シフトで、本体左側の黄色、緑、赤のシフトキーを使って入力する 本体上部には、USBコネクタとIrDA受発光部がある SDカードスロットは本体下部に装備されている

 USBインターフェースはPCとの接続に使い、PC用ソフトが付属する。以前の機種ではシリアルインターフェースと専用ケーブルが必要だったことに比べると、かなりの進歩である。USBインターフェースを使うことで、HP49G+内部のデータをPC側とやりとりできるほか、スクリーンショットを撮ったり、PC側からHP49G+を制御することなどが可能になっている。

 SDカードは、記憶領域としてプログラムなどを置いたり、メインメモリのバックアップ領域などとして利用できる。

 HP伝統のRPN方式に加え、数式通りの計算方式の2つのモードを持つ。もはや、RPN方式だけでは一般ユーザー向けに販売することは困難なのだろう。米国の高機能電卓市場は、Texas Instruments(TI)が90%程度のシェアを持っており、米国でもRPN方式は少数派なのである。

 電卓としては、いわゆる関数計算に加え数値積分、分数、複素数計算、3次元グラフ描画機能などがある。また、メモリや定数、分数などを計算に使った場合、記号や分数表記のまま計算が進む。たとえば、4という数字とメモリCをかけ算すると「4*C」という結果が得られ、循環小数になるような割り算、例えば1を3で割ると「1/3」という状態のままになる(4÷2などはちゃんと2になる)。最後に「->NUM」キーを押せば実際の数値に変換されるが、その場で数値として計算を進めるように設定することもできる。

 メモリを含む場合、式だけを入れてしまって、後からメモリに値を入れたのちに「->NUM」キーで答えを出すこともできるし、さらに一度答えを出したのちに、計算式を「ANS」キーで再度呼び出すこともできるので、パラメータを変えてのくり返し計算も簡単にできる。

HP49G+の液晶部分。スタックを7段表示できる。上部は、状態表示や時計表示が可能なHeaderと呼ばれる領域になっている HP 48,49 Calculator Connectivity Kit。左側のツリーは、内部メモリのディレクトリ構造を表し、右側の領域にはディレクトリに格納されている変数(オブジェクト)を表示する。接続中は、このソフトからオブジェクトの編集も可能

●HP49G+の中身は?

 気になったので中身を開けてみることにした。


■■ 注意 ■■

  • 分解/改造を行なった場合、メーカーの保証は受けられなくなります。
  • この記事の情報は取材した個体のものであり、すべての製品に共通するものではありません。製品のロットにより、重量等が異なる場合があります。
  • この記事を読んで行なった行為(分解など)によって、生じた損害は筆者、PC Watch編集部、メーカー、購入したショップもその責を負いません。
  • この記事についての個別のご質問・お問い合わせにお答えすることはできません。
(PC Watch編集部)

 CPUには、ARMプロセッサである、SamsungのS3C2410X01(クロック周波数75MHz)が使われている。メモリは、256Kbit×16(512KB)のスタティックメモリ、および、1Mbit×16(2MB)のフラッシュメモリからなる。

 内部的には、PalmあたりのPDAとそんなに変わらない。フラッシュメモリの1.2MBがシステムによって使われており、残り約800KBをユーザーが利用できる。

 なお、この機種に限らず最近のHP電卓は、ケースをはめ込んだのちにピンを潰して固定してあるため、その部分を壊さない限り分解は不可能だ。保証も無くなってしまうので、読者の方は分解はしないほうが無難である。

HP49G+を開けたところ。上が底面側で下が液晶側。基板左側の金属部分がSDカードスロット HP49G+のCPU近辺の拡大写真。左側にあるのが512KBのスタティックRAM(Brilliance Semiconductor Inc. BS616LV4010 Asynchronous Static RAM)、右側がARM CPU(SamsungのS3C2410X01)、下がフラッシュメモリ(SST 39VF160。1M×16bit)である

 これまで、HPの電卓には、Saturnと呼ばれるプロセッサが使われていた。HP電卓には、初期の頃からカスタムのプロセッサが使われていた。'70年代、マイクロプロセッサが「マイコン」と呼ばれていた頃、National Semiconductorが販売していた「MM57109」という数値計算用プロセッサは、HPの電卓用に作ったデバイスを数値演算用プロセッサとして外販したものである。

 Saturnは、メモリを4bit単位でアクセスするNibbleマシンともいうべきプロセッサだが、内部の64bitレジスタを使って64bit演算も行なえる。またAppleやファミコンで使われていたMOS Technologyの「MCS6502」などと同じくBCD演算モードを持つ。プログラムカウンタやメモリポインタは、20bitであり、メモリ空間としては、512KB(1Mnibbles)ある。

 HP49G+のプロセッサはSaturnではないが、ソフトウェアは完全な作り直しではなく、ARM上でSaturnのエミュレータが走っているようである。Saturnのクロックは「HP48G」という機種で4MHz程度。これなら75MHzのARM上でエミュレータを走らせれば、かなり高速な動作が可能になる。実際、クロック差がこれだけありながら、電卓としては数倍程度の速度改善に止まっており、なんらかのエミュレータが入っていることをうかがわせる。

 いずれにせよ、このように汎用のARMプロセッサで安価に製品を作ることができたからこそ、HPはなんとか電卓事業を継続できたのであろう。ちなみに製造しているのは台湾のKINPO Electronicsである。

 ただ、このHP49G+は、かつてHPの電卓が持っていた高級感はまったくない。機能的にはHP電卓だが、中身やフィーリングはまったく違うものなので、キーなどの高級感を期待するとちょっとがっかりする。もっとも、他社の電卓でも事情は同じである。

●RPN方式

 HPの関数電卓は、RPN方式と呼ばれる独自の計算方法を採用している。RPNとは、「逆ポーランド記法(Reverse Polish Notation)」を意味し、演算子を数値の後ろに置く数式の表記方法だ。我々が目にする多くの式は、「1+2」のように演算子を間に置く(これを中置記法ともいう)。

 これに対して逆ポーランド記法では「1 2 +」と表記する。この表記方法は、コンピュータが数式を計算するときの基本的なやり方でもあり、スタックを使って実現できる。一般的な数式通りではないが、長い式なども効率的に計算できる方法である。

 一般的な数式は、演算子間の優先順位(加減算よりも乗除算を優先する)を前提にしており、例えば「1+2×3」という式は、演算子の優先順位から2×3を先に計算することが必要になる。普通の電卓だと、これを「2×3+1」と読み替えて計算するか、括弧キーを使って「1+(2×3)」と計算することになる。

 また、実際の電卓では、最後に「=」キーを押す必要がある。「=」キーが必要になるのは、「2×」までキーを押したところでは、かけ算が実行できず、「3」を押して初めて計算が可能な状態になり、ここで保留していた乗算を実行させるため。

 ところが逆ポーランド記法では「2 3 × 1 +」または「1 2 3 × +」と表記できる。優先順位を判断する必要があるのは同じだが、括弧キーや「=」キーは必要ないため、キーストロークが減るので、電卓では有効な方法だ。「=」キーが不要なのは、掛け算を実行する段階で必要な2つの数値がすでに揃っているからである。

 実はコンピュータ内部でも事情は同じで、機械語で計算を行なうには、数式を処理可能な形に分解せねばならない。通常のプロセッサでは、レジスタに数値をロードしてから、演算命令を実行する必要があるため、形式的には逆ポーランド記法と同じように式を変換して計算を行なうことになる。高級言語でも事情は同じで、中置記法の式をスタックを使って逆ポーランド記法に変換して演算を行なっていく。つまり、コンピュータ内部で使われていた逆ポーランド記法を電卓に応用したのがRPN方式なのである。

 実際のキー操作では、2つの数値を連続してスタックに入れるときにだけ数値を区切るために「Enter」キーを押す必要がある。上の例だと、「2 [Enter] 3 × 1 +」、「1 [Enter] 2 [Enter] 3 × +」となる。このEnterは、実際には、スタックへのプッシュを意味する。

 一度RPN方式に慣れてしまうと、普通の電卓は括弧キーや「=」キーが煩わしく感じてしまう。スタックの動作がきちんと見えているところが便利なところだ。例えば「2÷(3+2)」というような式では、「3 [Enter] 2 + 2 [SWAP] ÷」とできる。“SWAP”は、スタックの一番上と2番目を交換するキー。割り算や引き算のようにパラメータの順番が問題になる計算でも、後からスタックの入れ替えが可能なので、悩むことがない。

 普通の電卓では、括弧が複数になると閉じる位置を間違ったりして不便だ。しかし、RPN方式では、そういう悩みはない。

 一時、日本HP(YHP)も宣伝などで言っていたのだが、RPN方式の並びは、日本語で式を表現する場合とほとんど同じである。たとえば、「1+2*3」だと「[2]と[3]を[掛けた]ものに[1]を[足す]」、「[1]に対して[2]と[3]を[掛けた]ものを[足す]」となる。RPNに慣れるときには、数字と数字の間の「と」が[Enter]に相当すると覚えるとラクである。

 最初は取っつきにくいが、慣れてしまうと手放せなくなる、それゆえ、いまだに熱烈なファンがいるのもHP電卓の特徴である(なんだか親指シフトによく似ている)。もちろん、電卓としてもいろいろと使いやすいところがあるが、こちらは他社の関数電卓と機能的にそう違いはない。あとは、プログラミングの容易さなどだろうか。

●HP電卓のプログラミング

 プログラミングは、RPLと呼ばれる言語で行なう。これは、RPNで使うスタックを前提にしたもので、括弧で囲むところがLispのようで、記号が並ぶところがAPL、だけど動作はForthみたいな言語である。RPLは、Reverse Polish Lispの略とも、ROM-Based Procedural Languageの略とも言われている。なお、旧タイプのRPLに対応していないHP電卓をRPN calculatorと呼んで、RPLに対応しているものと区別することがある。

 HP電卓のキー操作は、RPLのコマンドに対応している。まあ、BASICでいうダイレクトモードみたいな感じである。なので、電卓が使えるなら、それにくり返しや条件判断を入れることでプログラミングも簡単に行なえるようになっている。

 プログラムは、「<<」キーを押したあとで、計算通りにキーを押していくだけ。最後に「Enter」キーを押せば、スタックにRPLのプログラム(RPLオブジェクト)が入る。たとえば、現在のスタックにある値を半径として円の面積を求めたいなら、「<< SQ π × >>」というプログラムになる。“SQ”は、スタックの一番上の数値を2乗する命令で、“π”は円周率を表す定数である。

 この並びは、キーを押して計算する手順そのままである。プログラムは、すでにスタック上に必要なパラメータが積まれていると考えて計算通りにキーを入力していくだけでいい。RPLでは、すべてスタックを対象とする計算となるので、他の言語のように引数の定義とか、ローカル変数の定義などは要らないのである。

 単なる計算はもちろん、文字列の表示も可能だし、速度が必要なら低レベルの処理が可能なSystem RPL(RPLシステムは、このSystem RPLで記述されている)やアセンブラの利用も可能だ。電卓ながら、さまざまなプログラミングも可能なのがHP電卓の特徴とも言える。

 通常は、プログラムに名前を付けて保存する。RPLを採用しているHP電卓では、普通の電卓でいうメモリにアルファベットや数字で127文字までの名前をつけて扱う。このメモリには、数値以外にもプログラムなどを格納することが可能になっている。実行は、単にプログラム(メモリ)に付けた名前を入力すればいい。

 このメモリを含む実行環境には、名前を付けて階層構造の中に保存することができる。このようにすることで、作業別にメモリを割り当てた環境をいくつも作ることができる。たとえばメモリcに光速度を割り当てておき、定数のように使うことができる。しかし、cに別の定数を割り当てて使いたいときも出てくるだろう。そういうときには、環境を切り替えればいいのである。

 インターネットでは、多数のHP電卓用のプログラムが公開されており、その中には、ゲームやPIMソフトなどもあれば、低レベルのアセンブラでプログラミングを行なう環境、標準の機能を強化するようなプログラムも提供されている。多くのプログラムや開発環境があるのは、HPが内部情報を積極的に公開したからである。公開されているプログラムを入れることで、HP電卓はちょっとしたPDA並の機能を持つことになる。もっとも、日本語の表示はさすがにできないのだが。

●HP電卓のソフトエミュレータ

 今時1万円以上出して電卓買うなんて、と思っている方には、エミュレータがある。

 HP電卓は、ほとんどが解析され公開されている状態なので、ソフトウェアのエミュレータがいくつもある。もちろん、Windows XPでも動くし、Palm OSやWindows CE用もある。筆者もさすがにPDAの他に電卓を持ち歩くのはどうかと思っているので、Palm OS上で動くHP電卓のエミュレータ「Power48」を使っている。また、Windows XPマシンには「Emu48」と呼ばれるソフトをインストールしてある。Emu48は、Windows CEやMac OSにも移植されている。また、Power48はEmu48をベースに作られた。

 これらのソフトがエミュレータと呼ばれるのは、内部でSaturnプロセッサのエミュレーションを行なっており、HP電卓のROMイメージを使って動作しているからである。つまり、仕様を元に同じようなソフトを作ったのではなく、アセンブラレベルでエミュレーションを行なうソフトなのである。だから、動作はHP電卓そのものであり、計算結果はHP電卓同等の信頼性がある。

 ただし、このためにはHP電卓のROMイメージが必要である。以前は自分が持っているHP電卓からROMイメージを吸い出すしかなかったのだが、HPが2000年にROMイメージを一般公開したため、いまではインターネットでダウンロードが可能である(ただし商業利用は不可、個人利用に限られる)。

Windows上で動作するHP電卓エミュレータ「Emu48」。HP電卓のROMイメージを使って動作するので、動作は本物とまったく同じ

 どのエミュレータも凝っていて、Emu48はウィンドウ内部の表示を「KLM」というスクリプトで記述できるようになっている。これにより、実機とまったく同じイメージの表示などが可能になっている。Power48のほうは、HP48GX、48SX、49Gの3機種をエミュレート可能で、画面表示も切り替わる。特にTungsten T3では、液晶が大きいためにかなり実物に近い表示が可能だ。

 Emu48は、配布ファイルにはROMイメージが含まれていない。こちらは、hpcalc.orgから入手可能だし、後述のPower48 Ver.1.0の配布ファイルに含まれているROMイメージを使うこともできる。

 ROMイメージファイルを入手したら、Emu48付属のConvertプログラムを使って、ROMイメージをEmu48用に変換する(付属のEMU48.TXT参照)。このとき、ドキュメントにある、変換先のファイル名(ROM.48GまたはROM.48S)は、変更しないように注意しよう。Emu48は、特定のファイル名を想定して作られているからである。

 変換したROMイメージファイルは、Emu48.exeと同じフォルダに置いておく。あとは、Emu48を起動するだけである。高解像度のマシンなら、KLM Scriptとして「Jemac's Gx」(HP48GX用)を選ぶといいだろう。最初に使うときには、左下のONキーを押す。押さないと画面に表示が何も出ない。一度ONにしておいて、Emu48を終了させれば、次回からはONのまま起動する。

 Power48 1.4βのほうは、機種によってインストールするモジュールに違いがあるので注意する。Tungsten T3の場合には、「T3_DIA_Compatibility_prcs.zip」の中にある2つのprcファイルもインストールする。またROMイメージは、Palm本体メモリにはインストールできないので、SDメモリーカードやメモリースティックが必要になる。

CLIE PEG-UX50でPower48を動作させたところ。グラフィティ領域を隠すと、HP48GXとほぼ同じイメージを表示させることができる UX50は、横向きにしか液晶を使わないので、グラフティ領域を隠すと電卓が横向きになってしまい、UX50のキーボードが使いにくくなる
Tungsten T3でPower48を実行したところ。本体下部をスライドさせて液晶全体に表示させるとHP48GXとほぼ同じレイアウト表示が可能 同じくTungsten T3で、本体を縮めた場合、このときには、レイアウトが変則的になる 変則的なレイアウトの場合、HP48GXの表示部分を拡大することができる

 Power48を起動して「Dry run mode」と表示されるのは、ROMイメージにアクセスできない場合である。メモリカード内の「/PALM/PROGRMS/Power48」にちゃんとROMイメージが置かれているかどうかを確認しよう。ちなみにROMイメージは、Power48 Ver.1.0の配布ファイルには含まれているが、ハイレゾリューション対応の1.4β版の配布ファイルには含まれていないので注意されたい。

 Power48は、画面の解像度に応じてキー配置などが変化する。数字なとが見にくいときには、HP電卓の表示部分をタップすると画面が拡大表示される。この機能は、Tungsten T3のボイスメモボタン(CLIEの場合はジョグダイヤルのBackボタン)でも動作する。また、CLIEのUX50にも対応しているが、グラフィティエリアを隠すと液晶を横長に使うので横向きの表示になってしまうのが残念なところ。

 さて、駆け足ながら、HP電卓について話をしたが、興味のある方は、“The Museum of HP Calculators”や“hpcalc.org”を覗いてみるといいだろう。もちろん、HPの米国サイトにも現行製品の情報がある。米国なら、ちょっと大きなエレクトロニクス関係のショップやStaplesのようなオフィスサプライ店でHP電卓を扱っている。

□HP Calculatorsのホームページ(英文)
http://www.hp.com/calculators/
□Emu48(英文)
http://etud.epita.fr/~sebc/Emu48/
□Power48(英文)
http://power48.mobilevoodoo.com/
□The Museum of HP Calculators(英文)
http://www.hpmuseum.org/
□hpcalc.org(英文)
http://www.hpcalc.org/
□HP電卓のROMイメージファイル(英文)
http://www.hpcalc.org/hp.php

バックナンバー

(2004年4月5日)

[Text by 塩田紳二]


【PC Watchホームページ】


PC Watch編集部 pc-watch-info@impress.co.jp 個別にご回答することはいたしかねます。

Copyright (c) 2004 Impress Corporation All rights reserved.