HP 49/50 シリーズ

HP 49/50 シリーズはヒューレット・パッカード社の製造したグラフ電卓である。普及したHP 48 シリーズの後継機種である。

製造期間は1999年〜2015年と長い。

HP 49/50 シリーズには4種類の電卓がある。これらの電卓はALG入力モードとRPN入力モードを持っている。HP 48 シリーズはALG入力モードがなかった。しかし、本シリーズからRPN入力モードがデフォルトではなくなり、ALG入力モードがデフォルトになった。

内蔵の数式処理システムを使って数値と記号の計算を実行できる。そのCASはHP 48 シリーズから継承したALG48とErableを組合せて改良したものである。

RPL を搭載したHP社電卓はこのシリーズが最後となる。

1. HP 49G
---------

1999年8月に販売開始された。HP 49G は本体に伝統的な色を採用しなかった初のHP社の電卓である。メタリックブルーの色調に加えて、キーボードの材質はゴムであった。このゴムキーボードは従来のHP社電卓のキーボードのようなクリック感がない。さらにHP社の電卓の特徴であった大きな[ENTER]キーもなくなった。

HP 49GはHP 48 シリーズで利用できた強力なユーザーインターフェースと数学機能の多くを新しいHP 49G用のファームウェアに組み込んだ。HP 48 シリーズと違って電卓上でSysRPLとSaturnアセンブリ言語を容易にデコンパイルあるいはコンパイルする機能も組込まれた。

HP 49Gはフラッシュメモリを内蔵し、ファームウェアを更新できる最初のHP社の電卓であった。さらにHP 48 シリーズに付属していたソフトポーチの代わりにハードスライディングケースを採用した。

HP 49Gの最終公式ファームウェアは1.18であった。いくつかの非公式なファームウェアがHP 49Gの開発者によって公開され、非公式ファームウェアの最終バージョンは1.19-6であった。

この後、HP 49G上でその後継機種であるhp 49g+とHP 50gのファームウェアをインストールできるようになった。

なぜそのようなことが可能になったかと言えば、ハッカーがhp 49g+とHP 50gのファームウェアを改造して、PCエミュレーターEmu48上で動作できるようにしたからである。Emu48はHP 48 シリーズからHP 49Gまでのハードウェアしか再現していないので、hp 49g+で追加されたSatrun+命令とARM命令を実行できない。そこでハッカーたちはhp 49g+とHP 50gのファームウェアからSaturn+命令とARM命令を削除し、Saturn命令だけに置換えた改造ファームウェアを作成した。前述のようにEmu48はHP 49Gまでのハードウェアを再現しているので、Emu48用の改造ファームウェアを実機のHP 49Gに特殊な方法でインストールできるように修正すれば、実機のHP 49GにHP 49g+とHP 50gの改造ファームウェアをインストールすることができたのである。少なくともファームウェアバージョン2.09までは、実機のHP 49Gにインストールすることができた。

2003年にHP 49GのファームウェアのCASのソースコードがLGPLライセンスの下で公開された。このコードは対話型幾何学プログラムと後継機種hp 49g+と互換性のあるいくつかのコマンドを含んでいる。ライセンス制限のために再コンパイルされたファームウェアは再配布できない。

2. hp 49g+
----------

2003年8月、ヒューレット・パッカード社はhp 49g+ を販売開始した。この電卓はメタリックゴールドに着色され、HP 49Gとの後方互換性があった。HP 49Gで不評だったゴムキーに代わって、プラスチックキーが採用された。HP 49Gのハードスライディングケースは廃止され、かつてのHP電卓と同様のソフトポーチで電卓を保護するようになった。

設計・製造は台湾の Kinpo Electronics で行われた。

この電卓の特徴は全面的に更新されたプロセッサ・アーキテクチャ、USBとIrDA赤外線通信、SDCARDによるメモリ拡張、そして多少大きくなった画面であるが、それ以外の改良もされている。

この電卓のシステムは新しく採用されたARMプロセッサー上で直接実行できない。しかし、今までのHP社電卓で使われてきたSaturnプロセッサーのエミュレーターを搭載しており、その上で実行できる。このことによって、hp 49g+はHP 49G用に書かれたプログラムのほとんどとバイナリレベルの互換性を維持している。それだけでなく、HP 48 シリーズとソースコードレベルの互換性がある。hp 49g+で初搭載されたSaturnプロセッサーエミュレーターはSaturn+という拡張命令も持っている。

このようにARMプロセッサでSaturnをエミュレートするプラットフォームをApple シリーズと称する。

ARMでSaturnをエミュレーションしているにもかかわらず、hp 49g+はあらゆる過去のHP社電卓よりも高速であった。HP 49Gに対する速度向上は処理内容に依存するものの約3～7倍である。ARM用に書いたプログラムを実行することすら可能であり、エミュレーションレイヤーを完全に迂回することもできる。GNU C compiler も利用可能である。

3. hp 48gII
-----------

2003年10月20日に発表されたhp 48gII は名称から想像されるようなHP 48 シリーズの後継機種ではなかった。実際のところはARMプロセッサを搭載したhp 49g+の一種であった。しかし、メモリは削減され、SDメモリカードスロットもなくなり、CPUクロック周波数も低下、画面も小さくなり、ファームウェアも書き換えできなくなった。

名前から判断すると HP 48 シリーズに見えるが、HP 49/50 シリーズなので、ALG入力モードとRPN入力モードを搭載している。

この電卓は計算機能を望んでいるが、多くのプログラムのインストールを望んでいないユーザーを狙ったように見える。hp 49g+の廉価版とも言える。

最初の2003年のバージョンは128KiB RAMを搭載し、単4電池3本で実行できた。

2007年の第2バージョンは4つの単4電池を用い、256KiB RAMを搭載している。USBポートが追加され、改良されたキーボードも特徴である。

4. HP 50g
---------

HP 50g はHP 49/50 シリーズの最後の電卓である。最大の外観の変更は本体の色調である。伝統的なHP社電卓の外観に回帰している。本体全体に黒いプラスチックを使用し、白色、オレンジ色、黄色がシフトキーに使われている。黒い本体の表面は滑りにくくするためにhp 49g+よりもザラザラとしている。色違いの機種として、高いコントラストを強調した青と白の配色のものも存在した。

HP 50gの形状と大きさはhp 49g+と同一である。しかし、hp 49g+は単4電池を3本使うのに対して、HP 50gは4本使用する。hp 49g+の全機能に加えて、HP 50gはHP 48G シリーズに搭載された完全な数式ライブラリも搭載している。それだけでなく、ファームウェア 2.15/2.16において、HP 48SX用の拡張カードで利用できた周期表ライブラリも搭載している。

HP 50gはhp 49g+のIrDAとUSBポートに加えて、3.3V TTLレベルの非同期シリアルポートが追加されている。hp 49g+と同様にIrDAの有効範囲は約10cmである。HP 50gのIrDAはUSBポートと非同期シリアルポートの間にあるが、黒い光沢のあるプラスチックに覆われていて存在が分かり難い。また、非同期シリアルポートは本当のRS-232ポートではない。異なる電圧レベルを使い非標準のコネクタを使うからである。RS-232機器との接続には外部変換アダプターが必要である。

hp 49g+で最も批判された特徴であるキーボードは、以前の問題を解決するために最後のhp 49g+で導入された新設計のものを使っている。

HP 50gの販売開始から1年後の2007年に登場した TI-Nspire / TI-Nspire CAS はHP 50gを性能で圧倒した。販売開始から1年でHP 50gは完全に時代遅れになった。

この電卓の入手性に関する告知は2006年9月にHP社によって行われた。公式な詳細はHP社のウェブページで以前まで参照できた。HP 50gは2015年に製造終了となった。これによって、HP-28Cから始まったRPL搭載のHP社電卓は28年に渡る歴史を終えた。

2013年から発売されているHP Primeはハードウェアアーキテクチャもプログラミング言語も操作性も完全に異なるものであり、HP 50gの後継とは言い難い。

5. 技術仕様
-------

5.1. HP 49G
-----------

販売開始：1999年
製造終了：2003年
最終ファームウェア：正式版:HP49-C 1.18。ベータ版:HP49-B 1.19-6。PCエミュレータ用改造版:HP48-C 2.09
画面サイズ：131×64画素
CPU：Yorke 4 MHz 
RAM：512 KiB
フラッシュメモリ：2 MiB
入出力ポート：RS-232

5.2. hp 49g+
------------

販売開始：2003年
製造終了：？
最終ファームウェア：HP49-C 2.15 
画面サイズ：131×80画素
CPU：Samsung S3C2410X01  75 MHz　※特殊なプログラムで203MHzまでオーバークロック可能
RAM：512 KiB
フラッシュメモリ：2 MiB
外部メモリ：1GBまでのSDCARD 
入出力ポート：USBポート、IrDA

5.3. hp 48gII
-------------

販売開始：2003年
製造終了：？
最終ファームウェア：HP48-C 2.08
画面サイズ：131×64画素
CPU：Samsung S3C2410X01  48 MHz　※特殊なプログラムで203MHzまでオーバークロック可能
RAM：128 KiB 、256 KiB 
フラッシュメモリ：なし
入出力ポート：USBポート、IrDA。第2バージョンは3.3V TTLレベル非同期シリアルポートが追加された。

5.4. HP 50g
-----------

販売開始：2006年
製造終了：2015年
最終ファームウェア：正式版:HP50-C 2.15。HP社公式PCエミュレータ用:HP50-C 2.16
画面サイズ：131×80画素
CPU：Samsung S3C2410A  75 MHz　※特殊なプログラムで203MHzまでオーバークロック可能
RAM：512 KiB
フラッシュメモリ：2 MiB
外部メモリ：1GBまでのSDCARD 
入出力ポート：USBポート、IrDA、3.3V TTLレベル非同期シリアルポート
備考：PCとHP 50gをUSB接続するためのソフトウェアはWindows XPまでしか対応していない。

6. プログラミング
----------

//RPLについての詳細はRPL を参照のこと。//

HP 49/50 シリーズはRPLと呼ばれる代数的かつスタックベースなプログラミング言語をサポートしている。RPL  は逆ポーランド記法  とLisp言語を組合せた言葉である。しかし、実際の文法はForth言語に近い。

RPLはスタックベースプログラミング言語にリストと関数の概念を追加しており、評価していないコードを引数として関数に渡すことができる。あるいは、関数が終わる時にスタック上に評価していないコードを置いてそのコードを呼び出し元に返すこともできる。

最上位レベル言語のUserRPLは電卓に内蔵の後置記法操作のシーケンスで構成されており、ループや条件分岐も使える。UserRPLの各コマンドはスタックに積まれた引数を確認し、不正な引数であればエラーを返す。

UserRPLの下位レベル言語はSystem RPL  である。System RPLのコマンドのほとんどは引数確認をしない。引数の型は特定の型だけを受け付ける。そのことによって、System RPLはUser RPLよりも格段に高速に動作する。その反面、不正な引数を渡すと電卓をクラッシュさせてしまう。付け加えると、System RPLはUser RPLで使えない多くの拡張コマンドを利用できる。HP 48 シリーズと違って、PCソフトウェアなしでもSystem RPLのプログラムを作成可能である。内蔵コンパイラMASDのおかげである。MASDはSaturnアセンブリ言語とARMv4Tアセンブリ言語を電卓上でコンパイルできる。多くのツールがプログラマーのために存在し、HP 49/50 シリーズを強力なプログラミング環境にしている。

hp 49g+とHP 50gのSaturnアセンブリ言語、ARMアセンブリ言語、そしてC言語はPC上のコンパイラでもコンパイルできる。

HP 49/50 シリーズでPPL言語をプログラミングすることはできない。

7. HPGCC for the 49g+/50g
-------------------------

HPGCCはGNU GPL下で配布されているGCCコンパイラの実装の一つである。HPGCCの主な対象はARMを搭載したhp 49g+/HP 50gである。HPGCCの以前のバージョンは他のARM搭載HP社電卓もサポートしていた。しかし、それを求める人が少ないことや互換性の問題が原因で削除された。正式には、HPGCCはクロスコンパイラである。ARM搭載HP電卓用のコードをコンパイルするが、HPGCCはPC上で動作する。

HPGCCの最新バージョンは初期バージョンから多くの改良がなされている。最も注目するべき点は、コンパイルされたコードはデフォルトでARMのThumb命令になることである。その結果、わずかな性能低下を伴うが、コードサイズは大幅に縮小される。ANSI C言語のほとんどを実装しているだけでなく、デバイス固有のライブラリもあるので、電卓のRPNスタック、メモリ、ピエゾ素子ブザーのようなものを扱うことができる。

GCCコンパイラ自体はフリーソフトウェア財団の資産であり、その財団はGCCを利用したできた成果物に対して特定のライセンス制限を課していないと宣言している。しかしながら、HPGCCに含まれているライブラリは、HPGCCでコンパイルされたプログラムを実際の電卓で実行するために必要なルーチンも含んでいる。HPGCCのライブラリは改変GPLライセンスの下でリリースされている。他の多くのプラットフォームのGCCがライブラリに対してGPLより制限の緩いライセンスを使っているのとは対照的である。

このようにHPGCCのライブラリとリンクした全てのプログラムはGPLでリリースされたとしても配布することだけが可能である。

'//

8. エミュレータ
---------

HP49Gのエミュレータがいくつか存在する。

Emu48はHP 49G用のROM 2.09があれば、hp 49g+とHP 50gのほとんどの機能をエミュレーションできる。しかし、ARMコードは実行できない。HP 49G用のROM 2.09がまだ入手できるのかどうかは不明である。

x49gpというARMベースのエミュレーターがリリースされている。hp 49g+/HP 50gのARMプロセッサーの本当のエミュレーションが可能である。HPGCC2とHPGCC3でコンパイルしたプログラムも実行できる。このエミュレータはソースコードのコンパイルが必要なため導入が難しい上にLinuxとmacOSだけで利用できる。

2012年にヒューレット・パッカード社はWindows向けに公式エミュレータ"HP 50g Virtual Calculator"をリリースした。ファームウェアバージョンは2.16までリリースされた、実機は2.15までだったので、公式エミュレーターのファームウェアの方がバージョン番号が大きい。

スマートフォン用にもHP 49/50 シリーズのエミュレーターが存在する。

m48というスマホアプリはHP 49Gをサポートしている。その後継アプリのm48+はhp 49g+もサポートしている。

HP50gというスマホアプリは名前の通り、HP 50gをエミュレーションしている。

9. 関連項目
-------

HP-28 シリーズ
HP 48 シリーズ
HP 38G
HP 39/40 シリーズ
HP Saturn
HP Prime

10. 出典
------