HP-42S RPN 関数電卓は、1988年にヒューレット・パッカードによって発売されたプログラミング可能な携帯型RPN関数電卓である。この関数電卓は数学、線形代数、統計学、計算機科学そしてその他のために適切な高度な関数を搭載している。

## 概要

おそらく、HP-42S は老朽化した HP-41 シリーズを置き換えるために発売されたと思われる。HP-42S は HP-41 シリーズのために書かれた全てのプログラムと互換性があるように設計されているからである。HP-42S は HP-41 シリーズの重要な特徴である、拡張性と HP-IL(入出力インターフェース)の双方を失っているので、HP-15C の代替として販売されたという解釈もできる。

しかしながら、HP-42S は HP-41 シリーズよりも小型であり、行列エディター、複素数、方程式ソルバー、ユーザー定義メニュー、そして基礎的なグラフ描画機能(電卓にグラフを描く機能はないが、プログラムでグラフ描画可能)のように HP-41 シリーズよりも多い機能を特徴としている。さらにスタック操作の理解を容易にする2行ドットマトリクスディスプレイを特徴としている。

HP-42S の生産は1995年に終了した。HP電卓のコミュニティにおいて、HP-42S はインターネットオークションで高額で取引されていることで有名である。本来の価格の何倍もの価格になる。そして、末端消費者にとって品薄であり続けてきた。未だにこの電卓は、品質、キーの打鍵感、プログラミングの容易さ、そして技術者のための日常的な利便性という点において今までに作られたものの中で最高だと見なされている。

## 仕様

- シリーズ:パイオニア(Pioneer)
- コード名:ダビンチ(Davinci)
- 発売日:1988年10月31日
- 64 KB ROM
- 8 KB RAM
- 機能数:350以上
- 拡張性:公式にはIR (赤外線) 印刷のみである(非公式だが、32KBメモリ増設とオーバークロックハードウェアハッキングが可能である)
- 周辺機器:HP 82240A  IR(赤外線)プリンター

## 特徴

- 全ての基本的な科学技術関数(双曲線関数を含む)
- 統計(曲線あてはめと予測を含む)
- 確率(階乗、乱数、そしてガンマ関数)
- 方程式ソルバー(根を求めるもの)。方程式のあらゆる変数に対して解くことができる。
- 数値積分。定積分を計算する。
- 行列操作(行列エディター、内積、外積、そして連立線型方程式ソルバー)
- 複素数(極座標系表現を含む)
- ベクトル関数
- 命名された変数、レジスター、そして二値フラグ
- グラフィックディスプレイ。グラフィック表示とコントラスト調整が可能。
- サブメニュー付きメニューとモード設定(プログラムでカスタマイズ可能)。キーボードの最上位列をラベル付けするためにディスプレイの下の行を使用する。
- 音源(圧電素子によるビープ音)
- 基数変換(n進数変換)、整数計算、そして二進法、八進法、十進法、十六進法における数値の論理演算
- カタログ。メモリーに格納された項目を確認したり使ったりするときに使用する。
- プログラミング(分岐命令、ループ、条件判断とフラグを伴ったキーストローク言語によるプログラミング)
- HP-41C シリーズ電卓のために書かれたプログラムを実行する能力

## プログラミング

HP-42S はキーストロークプログラミングが可能である。ユーザーにとって関心のある特定の問題を解くためにキーを押した順番を記憶し、後に実行することができることを意味している。HP-42S は HP-41CX の FOCAL言語 (HP FOCAL) のスーパーセット(上位集合)を使用する。

HP-42S は間接アドレッシングをサポートしており、万能チューリングマシンを実装することが可能である。それゆえに HP-42S のプログラミングモデルはチューリング完全であると考えることができる。

### サンプルプログラム

これは入力された整数の階乗を計算するサンプルプログラムである(電卓に備わった階乗機能をあえて使っていない)。このプログラムは18バイトを消費する。メモリーレジスタは使っていない。

| ステップ | 命令 | コメント |
| --- | --- | --- |
| 01 | `LBL``F``A``C` | プログラム "FAC" の始まり |
| 02 | `1` | 1がXレジスタに入れられる。従って、プログラム実行前にXレジスタに設定された値(階乗の値)はスタックレジスタYへ持ち上げられる(プッシュされる)。 |
| 03 | `LBL``0``0` | ラベル 00 を定義する |
| 04 | `RCL``×``ST``Y` | スタックレジスタYを呼び出し、Xと乗算する。乗算の結果はXレジスタに入る("RCL×"は指定されたレジスタとXレジスタを乗算する命令。"ST Y" はスタックレジスタYを指定している)。 |
| 05 | `DSE``ST``Y` | スタックレジスタYをデクリメントし、それが0でなければ・・・ |
| 06 | `GTO``0``0` | ・・・ラベル 00 へ戻る。 |
| 07 | `⭸ End` or `RTN` | ユーザーあるいはこのプログラム "FAC" を呼んだプログラムへ制御を戻す(結果はXに入っている)。 |

## SwissMicros DM42

2017年5月、SwissMicrosは HP-42S とよく似ている RPN 電卓 DM42 の生産前サンプルを公開した。

最終製品は2017年12月9日にリリースされた。DM42 はオリジナルの HP-42S よりもわずかに小型(144×77×13 mm, 170 g)ではあるが、ソフトメニューのためにキーボードの最上部の列にキーが追加されており、アルファベット文字入力を直接できるキーボードレイアウトになっている。より大きくなった高コントラストのディスプレイ(シャープの低電力半透過型メモリー液晶。解像度は 400×240。ゴリラガラスによって保護されている)は、スタックの4レベル全てを一度に表示できる(設定変更可能)。ユーザーが使用可能な RAM は約 75 KB。ビープ音源あり。HP 82240A / HP 82240B プリンターをサポートするための赤外線ポートはもちろんのこと、呼び出し可能なリアルタイムクロックも搭載している。FAT16フォーマットのUSB大容量ストレージデバイスをエミュレーティングしたUSBインターフェース(USB Micro-B コネクタ)は、ファームウェアの更新のためだけでなくプログラムの転送と電卓の状態のバックアップ/転送を容易にする。

DM42 は黒いつや消しのPVD(物理気相成長)コーティングされたステンレスケースに入っており、キーボードオーバーレイをサポートしている。DM42 はトーマス・オッケン(Thomas Okken)の GPL のライセンスをされた Free42 シミュレーターの改変バージョンを基にしており、より精度を高くする(decimal128)ためのインテルの浮動小数点数数学ライブラリを使っている。このシミュレーターは STM32L476RG プロセッサー(ARM Cortex-M4 コア、128 KB RAM、1 MB 内蔵フラッシュメモリ)上で動作し、そのプロセッサーの外部にQSPIフラッシュ(そのうちの約 6 MB はユーザーが利用可能)を搭載することによって MB 単位のメモリを増設している。DM42 は CR2032 あるいは USB によって電力を供給されており、クロックは 24〜80 MHz の間で動的に変化する。